Monday, October 23, 2006

Поколения программистов

Программисты традиционно считаются неглупым народом. Я бы сказал, некой элитой - далеко не каждый вид деятельности требует одновременного удержания в кратковременной памяти стольких объектов да еще и оперирования ими на нескольких уровнях (сам код, обработка ошибок, паттерны организации кода, интерфейс пользователя, бизнес-цели конкретного этапа кодирования).
Т.е. по идее разработчики ПО должны быть если не семи, то хотя бы пяти-шести пядей во лбу как минимум, и быть благодатной средой для всего нового и не опробованного. Кому то со стороны может показаться, что так оно и есть, что программистам только дай новую игрушку поиграться.
На деле это совсем не так, и если новая технология или продукт отличаются от накатанного опыта то фиг их заставишь начать думать с другой точки зрения. Особенно если программист уже чуть в возрасте, скажем.

Взять хотя бы тот же Дельфи. В свое время он произвел революцию в построении бизнес-приложений разбиением доступа на data-aware компоненты, datasets и datasource. Метай себе компоненты, соединяй в три клика, пиши SQL запросы - красота.
Я хорошо помню зубров FoxPro и Clipper, которые возмущались непонятными датасетами и предрекали скорую кончину этим новомодным штучкам.
Кончина настигла другие продукты, а идея компоновать бизнес-приложения из датасетов была признана всеми производителями девелоперского софта.
Однако прошло 10 лет и датасеты всем приелись. Маркетологи требовали чего нибудь нового - "Пользователям нужно давать новое!"... Да, наверное так и исчезли 140-вые мерседесы :(.
И вот в Delphi появилась технология ECO. Собственно, это реализация Persistent Layer плюс среда для разработки приложений. На самом деле, это просто мечта программиста-лентяя - она сама синхронизирует поля данных, сама связывается с источниками данных, генерит весь код по обмену и синхронизации data компонентов (т.е. в классическом датасетном подходе, если у Вас документ лежал в master-detail-subdetail и трех гридах/каскадах компонентов, то в OnCommit, OnChange и т.д. иногда создавались просто удивительные конструкции по синхронизации коммитов-откатов, а ECO все это делается автоматом).
Т.е. кидай бизнес-классы, морщи лоб и все работает. Никаких тебе глюков из-за того что забыл имя столбца вставить, да и в чужом коде разобраться на порядок проще – графика все же, а не код.
Но задуманная как замена датасетам, ЕСО не пошла. И не пошла по простой причине - там применяется пара новых концепций вроде Persistent Layer - и датсетникам уже влом это изучать, им и на датасетах хорошо. Ведь нужно обязательно почитать доку и пример чтобы что-то сделать на ECO, а кто ж читает хелпы? Только студенты, да и то когда их туда ткнешь.
И фиолетово, на ECO можно слабать приложение гораздо быстрее и при этом не парясь по поводу всяких мелких отравляющих жизнь деталей.

С одной стороны, если приложение написано и работает, то и трогать нечего. С другой стороны, цикл бизнес-приложения это 5-8 лет, и начинать переписывать или разрабатывать приложения на старой технологии.... Это то же самое, что на Fox Pro 2.0 начать писать приложение в 2000 году.

Похоже, опять будет смена поколения программистов, и старые «датасетники» уступят место «есошникам», как когда то фокспровцы сдались им самим.
Если вспомнить Поппера, то в науке революции происходят когда старое поколение спроваживают на пенсию :) Идем к тому же? Неужели за свою жизнь программист сможет освоить лишь несколько новых идей, а потом становится консерватором на всю оставшуюся жизнь?

PS Кто не Дельфист, можете помотать головой, выпить рюмку водки и идти спать - все это фигня по сравнению с мировой революцией :)

14 comments:

Anonymous said...

Конечно инерционность всегда присутствует, но в корпорациях (а в данном случае речь идет в основном о корпоративном рынке как основном потребителе продуктов с БД) она сильнее выражена т.к. решения на чем и как писать принимают не программисты, а менеджеры. Поэтому обычно отдается предпочтение более привычным и обкатанным решениям.
Плюс Delphi перестает быть основной средой разработки клиент-серверных и многоуровневых приложений – происходит массовый переход на дот нет и яву, которые стали стандартом де факто уже не только в штатах, но и у нас. Borland слишком долго разочаровывал разработчиков сырыми продуктами по безумным ценам. Сейчас аудитория Delphi в основном это:
1. Корпоративные разработчики, занимающиеся поддержкой уже работающих систем.
2. Разработка продуктов компиленных в нэйтивный код. В основном это небольшие компании, занимающиеся разработкой продуктов для конечных пользователей, когда нужна серьезная защита от взлома. В этой категории базы вообще практически не применяются.
Т.ч ECO приживется только если Borland сможет изменить ситуацию и вернуть себе аудиторию.

Alexey Kovyazin said...

Хм, ECO работает именно под .NET :)

Что касается разочарований - это точно, было дело. Впрочем, не только Борланд преживал подобные периоды.

Но я-то писал о другом - что никто и не попробовал даже! И что нужно свежее поколение программистов для нового витка...

Anonymous said...

А что толку что под .NET работает?
Проблема в том что пробовать некому.
Все компании, в которых мне пришлось поработать в качестве разработчика на Delphi, перешли или в процессе перехода на java или MS Studio. И процесс этот начался активно как раз года 3 назад, когда ECO и появился. Т.е. на Delphi сейчас уже не пишут, соответственно что там Borland выпустил для улучшения жизни БД разработчика никому практически не интересно.
На текущий момент интересует поддержка Висты в Турбе. А ее нет и неизвестно когда будет…
А массовый переход на майкросовтовский C# ( причем не молодых программистов, а народа уже далеко за 30) говорит о том что технологии применять очень даже готовы. Только если они вовремя и к делу. Да и COM в свое время тоже очень радостно использовать стали.
В общем Борланду надо себе популярность вернуть, тогда будет кому его нововведения пробовать, а пока аудитории нет ничего новое не пойдет какое бы хорошее оно не было.

Anonymous said...

К сожалению человек устроен так, что все приобретённые знания, преобразуются в некую схему, если можно так выразиться, каркас или граф. Каждое ребро - это некая идея или связь между вершинами-объектами. На начальном этапе развития мы имеем чистый лист, рисуем на нём вершины - ставим точки, потом поступают идеи и мы эти точки соединяем линиями. И вот настаёт время, когда для того что бы поставить новую точку, приходится разрывать и перестраивать старые связи. Не каждый способен на такое, поэтому люди, будь-то программисты или нет - после определённого возраста/состояния - сопротивляются новым знаниям. (А если представить что такой многомерный граф создан нейронами внутри нашего мозга?)
Плюс ко всем внутренним усилиям для перестройки структуры можно добавить отсутствие времени - и вот получаем человека консерватиста. Ну и конечно особенности IT специалистов, выраженная фразой из анекдота: "Солнышко встаёт? Каждое утро встаёт? Ты точно знаешь? Тогда ради бога - НИЧЕГО НЕ ТРОГАЙ!"

Anonymous said...

А помоему все значительно проще. У того, кто занимается программированием есть постоянная потребность изучать что-то новое. Вопрос только - что. Если выбрать неправильный курс, то можно вместо шага вперед шагнуть на два шага назад. Т.е. кроме изучения никому не нужного инструмента (языка, библиотеки и т.д.), ты еще выпадешь из общей струи, т.е. отстанешь от своих собратьев на 1-2-3 года. Я с удовольствием начну изучать что-то новое, но тяжело стоя перед камнем "Направо подешь - коня потеряешь. Налево пойдешь - деньги найдешь..." сделать выбор, совсем не просто.

Dmitry Kuzmenko said...

"Т.е. на Delphi сейчас уже не пишут, соответственно что там Borland выпустил для улучшения жизни БД разработчика никому практически не интересно."
да прям, "не пишут". пишут, и еще как. Бум Java уже спал, а на .Net перебираются очень медленно. Если какие-то разработчики и скачут впереди паровоза, то это не значит, что абсолютно все. Время разработки проекта, а соответственно переход на новые среды разработки примерно 2-3 года.

Elena Makurochkina said...

Да, миграция на новые продукты происходит медленно, но происходит. И идет в направлении .NET/Java. Особенно для БД направления. Проекты, начатые на Delphi год назад и ранее, конечно, свою жизнь так и продолжают на Delphi. Но новых клиент-серверных и многоуровневых проектов на Delphi все меньше и меньше. И люди, принимающие решение в пользу Delphi сейчас, в основном, являются наименее подверженными к изменениям - теми, кому проще и удобнее писать в знакомой среде и использовать привычную архитектуру и методологию. И они не будут использовать новый продукт от Борланда именно потому, что он новый.
Все это относится только к БД. Т.к., собственно, разговор идет о ECO, и почему его не используют.
В области приложений для конечных пользователей для Delphi конкурентов практически нет, т.к. нужен нэйтивный код. И здесь миграции не наблюдается. Очень хочется чтобы Борланд наконец то понял где его аудитория и сосредоточился именно на этом направлении. На носу релиз Висты, а поддержки Висты нет. Не известно когда будет 64 битный компилятор. И ситуация эта меня абсолютно не радует.

Anonymous said...

Что значит нет поддержки Vista ? Неужели не будет возможности запуска «старых» Win32 приложений? Опять же, даже если и будет в каком Delphi 2007-2008 поддержка всяческих «новомодных» Indigo и прочих WinFX, и что с того? Кому они, собственно говоря, нужны? Основная масса пользователей успешно применяет Win2K и WinXP, и, кстати, массово исходить на Vista вовсе не собирается (собственно говоря - зачем, и ради чего?)

И вопрос о 64-х битах на десктопе (т.к., собственно говоря, Delphi - это как раз лучшая RAD-среда именно десктопных приложений) - еще тот вопрос, в плане - целевой аудитории. Вы много знаете пользователей и задач, которым действительно нужны 64-битные приложения в обозримой среднесрочной перспективе?

-

А полуистеричные лозунги о необходимости тотального перехода (исхода) с Delphi на .NET/Java - это даже не смешно. Меньше читайте желтую прессу.

В конце концов - это просто глупо - менять отработанную среду, методологию, коллектив и пр. на собственно говоря что, и с какой целью? Опять же, рынок труда (СНГ) - вовсе не подтверждает резкое сокращение спроса на Delphi разработчиков именно в пользу .Net.

Потому как ничего значимого революционно нового .NET не привнес (с 2001-года, кстати) ни в область GUI-строения, ни в область middleware-строения (собственно говоря, и преимущества его - весьма и весьма спорны по эффективности в сравнении с Delphi и J2EE соответственно). А массовый исход - в лучшем случае - суть просто напрасная трата времени и сил лишь для получения... эдакого психологического эффекта (иллюзии) уверенности в завтрашнем дне.

Опять же, показательные примеры исхода отдельных компаний (кстати, «анонимные») - это просто чушь. Даже на практике - это просто невозможно, потому как состоявшаяся фирма-разработчик имеет именно состоявшиеся, и в массе внедренные решения, которые нужно еще и развивать и сопровождать, а открывать новое, параллельное направление на принципиально чуждой технологической среде, в принципе не совместимое по всем позициям с существующими решениями.... набирать еще один штат, или выводить из налаженного процесса существующий коллектив, массово бросая его на переучивание... Да ни одному руководителю проекта или владельцу компании даже в страшном сне такая мысль не покажется разумной, хоть какими ресурсами он бы не обладал.

----

А в тему ECO... пробовали, смотрели, ну и что с того? ECO - это такой же выстрел мимо, как и IntraWeb и иже вместе с ними. Delphi актуальна только как эффективное RAD средство разработки конечных GUI приложений. Все остальное в ней в реализации значительно хуже, и самое главное - настолько немейнстримовое, чтобы быть реально применимым на практике. Да и сама идея - сервер приложений на неуправляемом нативном коде - это тупик (вспоминая притчу о залетевшем дятле, разрушившем цивилизацию).


А утверждение о несостоятельности модели дейтасетов в сравнении с «ECO графическими модельками» для разработки классической двузвенки, приводя «показательный» пример сравнения модели Clipper-а и Delphi в свое время, а уж тем более, о якобы в разы большей производительности ECO/Bold и пр. при разработке - это еще тот вопрос.

При должных навыках - разницы как раз и нет, если даже - не наоборот. Опять же, массовой поддержки компонентами третьих сторон - как не было, так и не будет (догадайтесь - почему ?).

И с совсем уже другой стороны - вопрос организации промежуточного слоя - это еще тот, очень даже спорный вопрос (в котором суть вовсе не в поколениях и тенденциях того, что кто-то должен уйти, а кто-то обязательно должен прийти).

Anonymous said...

А почему собственно ECO - это следующее поколение? На мой взгляд будующее за ORM подходами аналогичными Рельсам/Hibernate/EJB3. Правда, ничего близкого по удобству в классических Delphi/C++ нет. Но это уже совсем другая тема...
А вообще - печально смотреть на то, во что превращается Delphi. Ниша BDS - это client/server с rich-native-client. Был передовой RAD с великолепной VCL и громадным сообществом. А сейчас - бесплатный Eclipse превосходит BDS на порядки (как IDE и платформа), адекватной поддержки MS .NET инициатив нет (хотя при этом из всех сред Borland выжили только .NET-решения), сообщество по дороге растеряли, ну и багов в IDE целое стадо наплодили.
Как результат - х.з. на чём rich-client для небольших приложений (для больших Eclipse есть) писать...

Elena Makurochkina said...

To Anonymous, at October 29, 2006 12:20 PM:

Win 32 приложения, скомпиленные в Delphi, на Висте пускаются, но вы видели сколько при этом в них глюков? Одно пропадание задизабленных контролов при нажатии ALT чего стоит.

64 битный компилятор нужен, конечно, не всем, но для приложений содержащих вычислительные задачи он может быть критечен.

По поводу перехода на .NET/Java в клиент-сервере статистики у меня нет. Я сужу по окружающим - за последние пару лет ни одного нового проекта на Delphi.

Anonymous said...

MDA - технологии как будущее - может быть.
Именно ECO как технология будущего - ни в коем случае.

1. Из Bold в ECO перенесены ВСЕ болезни реализации.
(Этого, по-моему, достаточно.)

2. До Болда ЭКО еще развиваться и развиваться. С учетом п.1 ЭКО даже не интересен.
...
Может кто-нибудь привести список проектов, созданных с использованием технологии ECO? Ну-ну...

Anonymous said...

У нас собираются ставить прогу для автоматизации на Delphi... хочу убить разработчиков об стену... очень хочу.

Anonymous said...

Не надо про отсутствие новых проектов. Как раз создаются. Я работаю в крупном холдинге Екатеринбурга и мы автоматизируем самый доходный бизнес-процесс с помощью армов на Д.
.НЕТ не конкурент Д в класическом клиент-сервере, а другого мне и не надо.

Anonymous said...

1С:Предприятие рулит ;-)
Ну и скрипты js/php помогают.

Остальное - от лукавого! :-)))