Долгое время я был исключительно Windows-программистом, программировал на Delphi. В этом нет ничего удивительного для тех, кто знает этот язык, и кого давно уже не трогают священные войны: Delphi для своего времени (да наверное и до сих пор) был удивительно мощным объектным языком с широко развитой стандартной библиотекой, удобнейшими средствами разработки GUI и огромным сообществом программистов. Единственное, что Delphi гнетет - это навеянный ореол непрофессиональности, игрушечности. Правда, люди, придерживающимся таких взглядов, про Delphi обычно знают мало, и достаточно рассказать про что-нибудь вроде автоматического делегирования реализации интерфейса агрегированному объекту или про нативные строки с copy-on-write семантикой, и тогда они понимают, что просто слегка "не в теме" :-)
Все это в свое время поставило для меня Delphi в качестве безоговорочного выбора в инструментах для работы.
Но какое-то время назад я вдруг осознал, что ситуация стала меняться. Виндовые программисты стали массово перекидываться на C# и всем вокруг рассказывать, какой это замечательный язык (пусть даже многие из них и до сих пор не в курсе, что C# и .Net - это разные вещи). Через некоторое время я узнал, откуда растут ноги: C# разрабатывает тот же самый Андерс Хайльсберг, который придумал и Delphi. Только теперь, видимо из-за того, что язык начинается с буквы "C" и разрабатывается в Microsoft, никто не говорит, что это игрушка, а напротив, считается, что это какая-то инновация :-).
А сегодня я, опять-таки, открыл для себя, что и Чак Яздзевски, который делал Delphi'йский GUI-дизайнер - самый удобный и продуктивный дизайнер из всех, что я видел - тоже работает в Microsoft над тем же самым: GUI-дизайнером для .Net.
Что это значит? Это значит, что если эти люди работают в Microsoft, значит они не работают в Borland. И как-то сразу становится понятно, почему начиная с 6-й версии развитие Delphi больше напоминает результаты работы отдела продаж, а не отдела проектирования.
Из всего этого следует, что если программист не хочет отставать от прогресса, ему надо браться за C# с .Net'ом. Но вот тут я понимаю, что эта дорога - не для меня. По той, как ни странно, причине, что развитием этих технологий занимается Microsoft.
Нет, я их не ненавижу :-). Я руководствуюсь здравым смыслом. Microsoft - коммерческая компания, основной целью которой, как она показывала на протяжении всей своей истории, является зарабатывание денег для себя и своих сотрудников, а совсем не альтруистическая забота о технологическом развитии отрасли. Кроме того, Microsoft - это закрытая компания, в том смысле, что я, как программист, не могу ни влиять на ее решения, ни взять код, скажем, .Net'а и отпочковать свой проект, если меня никто не слушает.
Вот эти два фактора - эгоцентризм и закрытость - приводят к тому, что если разработчик выбирает себе Microsoft'овский продукт в качестве платформы, то он фактически выбирает единственный одобренный сверху путь профессионального существования. Он фактически лишает себя возможности сделать что-то выдающееся, выходящее за рамки этой платформы. Потому что большую часть своего времени он будет тратить на освоение все новых и новых почти одинаковых версий каких-нибудь ODBC-DAO-ADO-ADO.NET-что-то-там-еще... (вот, Джоэл Спольски тоже так думает)
Мне это - как ножом по сердцу. Да, пусть я смогу таким образом обеспечить себя гарантированным источником дохода. Да, возможно в каждый момент времени я буду пользоваться, пожалуй, одними из самых технически совершенных средств. Но невозможность сделать разницу в мире, в жизни людей, перечеркивает все достоинства.
Итак, это большое отступление было сумбурной попыткой объяснить, почему я не хочу учить C#. Я знаю, что не очень вышло, потому как половина четвертого утра, и голова слегка гудит... Но не важно. Если это вдруг кому-то станет интересно, и захочется это обсудить, я дам себе труд выразиться обстоятельней :-).
В действительности я веду разговор к другому. Вся эта петрушка привела меня некоторое время назад к тому, что надо искать себе другую платформу. И из их множества как-то незаметно наиболее интересным для меня стал веб. Хотя, надо сказать, веб-программирование, равно как и Delphi в свое время, сейчас страдает от того же самого ореола несерьезности. И понятно, откуда ему взяться. Полно людей, называющих себя веб-программистами, которые на самом деле выучили PHP по какой-нибудь одной базовой книжке, но ни сном ни духом не представляют, как, например, к ним в язык попадает строчка запроса из браузера, что там делает веб-сервер, как с этим связан environment операционки, почему CGI медленней, чем висящий в памяти модуль Апача, чем Unicode отличается от UTF-8 и т.д.
Но наличие таких людей ни в коем случае не отменяет обалденного интереса веб-технологий! То, что начиналось, как мелкие полезные админские скрипты на Perl, переростает в беспрецедентную интегрированную среду, завязанную на HTTP, XML-RPC, Javascript, новые динамические языки вроде Python'а и множество других стремительно развивающихся технологий. Раньше считалось, что никто не понимает в интеграции лучше Microsoft, но сейчас такие сервисы как Google, Technorati, Bloglines, Ping-o-Matic показывают, что такое интеграция в глобальном масштабе, и что для нее совсем не обязательно иметь десятки мегабайт кода OLE2, а достаточно просто уметь парсить XML-файл, полученный простым GET-запросом. Посмотрите, например, на скрипт для Firefox'а Book Burro - когда человек заходит на Amazon за книжкой, Book Burro автоматически подтягивает табличку с ценами этой же книги в других магазинах.
Пожалуй веб сейчас - наиболее бурно развивающаяся область программирования. Мы потихоньку становимся свидетелями того, как веб-страницы превращаются в веб-приложения, и как эти веб-приложения стандартизуются и перерождаются в гораздо более мощную вещь, чем есть сейчас, способную со временем легко конкурировать с традиционными настольными программами. Для примера посмотрите на GMail (у кого есть) или Google Maps.
Причем, все это происходит открыто и управляемо: достаточно подключиться к рассылке или оформить баг, и вы можете реально повлиять на то, как будет работать следующая версия браузера, или как что будут делать стандартные элементы форм в HTML5.
По-моему, это просто фантастика :-). И вот эту платформу я себе выбираю.
Комментарии: 25
Спасибо за статью. Было интересно, с учетом того, что у меня сейчас практически такая же ситуация с выбором платформы. Но менее резкая и менее важная.
Т.е. я просто когда-то занимался Delphi Но я думаю это было через чур
любительски в сравнении с вашем опытом. Я тогда ещё в школе учился и
писал всякие нужные в быту утилитки.
Перехода в общем-то никого и не было. Просто устроился на работу,
пришлось работать с веб-технологиями. Но по поводу Гугля хорошо
замечено. В контексте вышесказанного вспоминаются слова (где-то
вычитал) о правомерности использования Мелкософтными фразы "Инновация, когда есть такая компания как Гугл." =) Сам я уде как год-второй являюсь рьяным патриотом Гугла, и внимательно слижу за всеми внедрениями и решениями оного и до сих пор не разу не разочаровался!!! Были мысли купить акции этой компании (если посмотреть на рост их цен - это очень оптимистическое решение) ну или по крайней мере купить трусы с их логотипом и надписью - Мне повезёт! =)))
Не знаю как для многих но для меня Гугл и ФайрФокс уже давно стали лидерами в ИТ технологиях, пусть морально и душевно. Я думаю подобная тенденция будет продолжаться, и вскоре нас ждёт прогрессивное и процветающее будущее.
Спасибо за статью, было интересно.
Да уж, переходить на какие-то чисто Майкрософтовские языки удовольствие сомнительное. А то будет как с программистами на Visual Basic. После долгих лет работы: "Всем спасибо, все свободны."
Google Maps... Google Earth, говорят, еще круче. Жаль, с диалапа не посмотришь.
Не ту статью даёшь Джоелла - надо давать http://russian.joelonsoftware.com/Articles/HowMicrosoftLosttheWaronA.html
(Как микрософт проиграла битву за API) - вот в ней жёско продемонстрировано, почему веб программирование круто, и чем это плохо для майкрософт.
Но вот с чем я не согласен, так это с тем что C# плохая среда для программиста. Основной минус - часоте обновление версий, присутствует, и да, доставляет неудобства, но всё равно сейчас дотнет самая удобная платформа для распредёлённого программирования.
Напомню, просто моё мнение
BTW, .net как VM не так уж и плох, и не зациклен на c#. Есть например http://www.ironpython.com, если питон тебе так пришелся по душе.
Интересный пост, только не уловил связь между невозможностью сделать разницу в мире и технологической платформой. :)
этот меморандум можно считать заявлением: "словогрыз обновляться больше не будет"? :)
Будет, будет :-). Есть три проекта в Delphi, которые я таки хочу точно не бросать: Sylore, Gallo и Словогрыз. Но никаких сроков не обещаю :-)
не понятно только чем "коммерческая компания" Microsoft отличается от такой же на мой взгляд коммерческой Borland? (ну оборотом разве что)
PS. в опере 7.54 поле ввода для имени налазит наполовину на текст "добавить коментарий"
PPS. не могу на блоге найти ссылку на рсс, а судя по некоторым коментам он вроде есть...
Например тем, что Борланд не пытается загнать всех под одну платформу, которую контролирует. Может быть, они бы тоже себя так вели, если бы была возможность, но мы этого не знаем.
Ссылка на общий фид есть на главной сранице (справа внизу, называется "Atom feed") и на страницах категорий (там же). Моя вина. Сначала ссылки вообще не было, потому что новые браузеры узнают о наличии фида из заголовков, а эту придела в попыхах. Надо бы какую-нибудь более узнаваемую кнопку придумать.
точно %-)
обычно на блогах кнопка рсс там же где и категории...
спасибо за наводку.
В ближайшие годы всем станет ясно, что Гугл идет по стопам MS. В середине 80-х тоже было много восторгов, как MS расправились с мэйнфреймами (хотя IBM этого и не хотел, заводя дружбу с MS). Сейчас также все дружно любят Гугл, потом также будут дружно призывать новую революцию против монополии Гугла. История повторяется :) На новой платформе - новый лидер, так и должно быть.
Кстати, у MS больше opensource-проектов, чем у Гугла, так что Гугл вцелом "закрытее", чем MS :)
А FireFox... Ну, выпустит MS IE7 с tab'ами, и народу снова станет по барабану, какой браузер использовать. IE по крайней мере всегда был быстрее, чем FF.
Любой выбор - личное дело каждого. Я вот начинал работать еще с Turbo Pascal 5.5 под DOS и занимался чепухой вроде самопальных электронных таблиц. Но всегда считал разработки Borland лучшими и соответственно пользовался ими. Но эра дос'ов кончилась. И тогда я нашел себе другое ит-применение. Когда началась эра web - лично меня это вдохновило. О том что C# разработан автором Delphi узнал уже после того, как прочитал книжку по шарпу. Часто обсуждается, но так или иначе - любому языку - свое время и место. Любой язык программирования (вернее прога написанная на нем), в конечном итоге опирается на системные библиотеки, которые предоставлены ОС. И что там предоставлено .NET или MFC - это не принципиально. Это всегда нужно изучать. Поэтому для ПРИКЛАДНОГО программиста разницы большой нет, поскольку если раньше было что то типа "Выдели_память(Любой адрес)", то теперь стало "Выдели_память_безопасно(Допустимый адрес)". В чем цель этих изменений с точки зрения прикладного программирования (не системного)? Многие найдут, что это так удобнее, безопаснее, переносимее т.д. Лично у меня чувство, что меня водят за нос. Но... мир меняется ... А "большая" компания всегда опирается на уже сделанный выбор большинства, продвигая свои продукты под лозунгом - Смотрите что мы придумали! Пусть кто-нибудь объяснит ЛИЧНО СЕБЕ концептуальную (подчеркиваю) разницу между .NET Framework и виртуальной машиной Ява. Я думаю что вопрос, на чем программировать в свете самой статьи можно поставить так - Если ты прикладной программист - обязательно изучай и РАЗВИВАЙ веб технологии, если склоняешься к системному - как и 10 и 20 лет назад - выбирай и изучай платформу. По большому счету смешать эти два направления не получиться.
Я правильно понял, что Delphi 5 отличается от Delphi 4 куда больше, чем Delphi 6 и Delphi 7 от того же Delphi 5 ?
Прохожу сейчас аналогичный путь развития, только выбор веб для меня связан, скорее, с более очевидной (и серьезной, видиомо) денежной отдачей в перспктиве. Против дотнета ничего не имею - не среда, а сказка!
А я, все-таки, останусь с Delphi, хотя и стараюсь быть в курсе новых веяний. Немного побаловался в C#, php и т.д. и понял: если умеешь программировать в одной среде, в другой проблем не возникнет.
From Delphi to Web? No! To Web with Delphi!!!
Создаем в Delphi приложение, кидаем на форму HTTPClient = вся мощь "стандартного" windows-ого интерфейса (включая опыт создания на его основе более "продвинутого" средствами Delphi) и все остальные плюсы Web (соответственно, за исключением отсутствия "нормального" юзабилити, которое и компенсируются Delphi).
HTTPClient в обработчиках событий шлет нужные данные на сервер и получает ответ. А приложение отображает эти данные как душе своей угодно. Причем не надо ничего "парсить" (хотя кому как угодно). Нужен список для ListBoxa? Посылаем нужный запрос. Web-сервер выдает именно: строка1 #13 строка2 #13. Трафик минимальный = Задержки минимальные (грубо конечно все, смотря что делать). Запихиваем полученные строки в ListBox. Все. Пользователь счастлив!
Это по круче будет, чем Ajax раз в 1000 (хотя суть та таже, но интерфейс и простота его создания)! Усилия на создание различаются в разы. Пользователь просто работает на вид с GUI приложением, которое по сути Web.
Забыл еще :). Файлы передавать можно пачками, а не по одному, как в браузере. Т.е. выделяем в ListView 10 файлов и копируем на сервер нажатием на кнопку, или 100 файлов. Кому как угодно :) Нет вообще никаких ограничений, только Ваша фантазия.
Я сторонник C++Builder, и мне очень близки Ваши рассуждения на эту тему.
А Веб действительно затягивает, только очень сложно (во всяком случае мне!) решить с какой идеей, в какую сторону, с какой концепцией и, как бы, потенциальной направленностью создавать что-то своё в этом чудесном месиве.
Так хочется применить накопленные знания эффективно, использовать самые интересные, удобные и перспективные (по личному мнению) технологии... и непонятно в какой именно форме? Клоны достали. Стартап уже не стартап, если это второй или третий старт на новой языке для нового региона... )
Изобретение велосипеда люблю, но, подумав, поставил мю-вордпресс и вот уже полгода лениво устраняю ошибки перевода, сижу и думаю - "В какую сторону разрабатывать?"...
Мой путь чем-то похож на ваш. Из Delphi ушел в головой в Web. Пока сижу на PHP, недавно узнал про Zend Framework (MVC), но мой друг познакомил меня с Python, Django, Turbogears. Буду изучать. В процессе изучения попал на ваш сайт (хотя и раньше видел его по некоторым другим поводам).
Оффтопик: поздравляю с Яндексом. Я пока выбираю между Django и TurboGears для одного своего проекта, и может быть, ваш блог поможет определиться с выбором быстрее.
[quote="maxs"]Это по круче будет, чем Ajax раз в 1000 (хотя суть та таже, но интерфейс и простота его создания)! Усилия на создание различаются в разы. Пользователь просто работает на вид с GUI приложением, которое по сути Web.[/quote]
удаленную работу клиента с сервером можно встретить и в дельфях и в питоне (tinyERP) и думаю в java, а какой формат использовать - html, xml или json, - это выбор прораммиста
Да не надейтесь на то, что что- то изменится от того что вы сейчас бросите Делфи и возьметесь зя php или поменяете php на python или ruby. От этого ничего не изменится. В том то все и дело.
Знаете, по прошествии 2,5 лет с написания этой статьи, я могу уже по факту сказать, что изменилось все так, как мне и хотелось :-)
Иван, а можно подробнее о сегодняшней ситуации?
И ещё хочется узнать Ваше мнение о разработках послекризисного ПО.
Я не понял вопроса, честно. Что такое "послекризисное ПО"?
Большое спасибо за статью: приятно прочитать мысли коллеги-единомышленника, который тоже "руководствуется здравым смыслом", да ещё приятно излагает их хорошим литературным языком!
Никогда серьёзно не писал на продуктах Borland, но всегда восхищался ими, поскольку мои знакомые, друзья и брат много писали на Delphi. Вероятно, его недооценивают потому, что он больше распространён в Европе и России, чем в США.
Для себя я тоже выбрал Web-программирование на основе REST, из инструментов - Ruby On Rails.