http://theiced.livejournal.com/238346.html
Собственно, про кобол я не знаю, на дельфи пишу уже 15 лет и никак избавится от него не могу (слишком много легаси кода), а вот про SQL я с ним не согласен.
Сам по себе SQL очень хорошо подходит для генерации отчетов. Если отчет сводится к фильтрации-сортировке-группировке множеств - идеально. С рекурсивными CTE - еще и деревья можно обрабатывать, не особо включая мозг. Всунув поверх этого минимальных размеров постобработку на какой-нибудь функциональщине, можно сделать почти любой отчет, пришедший в голову свихнувшимся на Excel выпускникам нархоза, работающим в минстате, минфине и МНС.
Но когда доходит до процедурных расширений, API между СУБД и клиентскими приложениями или каких-нибудь вещей, которые забыли вовремя добавить в стандарт - начинается полная, немыслимая жопа.
Например, проклятая тема - генерация автоинкрементных ключей и возвращение значений автоматически заполненных полей. Кто во что горазд - identity, генераторы, sequence, функции (в каждой СУБД названные по разному), returning, заебы на тему "вызывать в той же транзакции и сессии" и прочая и прочая. Про вариации на тему "вернуть поле, которое заполняется автоматически, но не является ключом/identity" лучше даже не думать.
Неудивительно, что люди при первой же возможности сбегают в ORM (которые являются уже второй производной от всего этого маразма и несут на себе его неизгладимый след).
Собственно, про кобол я не знаю, на дельфи пишу уже 15 лет и никак избавится от него не могу (слишком много легаси кода), а вот про SQL я с ним не согласен.
Сам по себе SQL очень хорошо подходит для генерации отчетов. Если отчет сводится к фильтрации-сортировке-группировке множеств - идеально. С рекурсивными CTE - еще и деревья можно обрабатывать, не особо включая мозг. Всунув поверх этого минимальных размеров постобработку на какой-нибудь функциональщине, можно сделать почти любой отчет, пришедший в голову свихнувшимся на Excel выпускникам нархоза, работающим в минстате, минфине и МНС.
Но когда доходит до процедурных расширений, API между СУБД и клиентскими приложениями или каких-нибудь вещей, которые забыли вовремя добавить в стандарт - начинается полная, немыслимая жопа.
Например, проклятая тема - генерация автоинкрементных ключей и возвращение значений автоматически заполненных полей. Кто во что горазд - identity, генераторы, sequence, функции (в каждой СУБД названные по разному), returning, заебы на тему "вызывать в той же транзакции и сессии" и прочая и прочая. Про вариации на тему "вернуть поле, которое заполняется автоматически, но не является ключом/identity" лучше даже не думать.
Неудивительно, что люди при первой же возможности сбегают в ORM (которые являются уже второй производной от всего этого маразма и несут на себе его неизгладимый след).
no subject
Date: 2013-04-04 05:47 am (UTC)Да точно так же есть. Убили проект, самостоятельно вы его развивать не сможете а желающие разбежались. Все, приплыли.
Есть разница. В случае opensource вы имеете исходные коды и можете заниматься поддержкой сами. В случае закрытого продукта можете только рвать волосы на себе. Особенно весело если данные там лежат в своем закрытом формате.
Кстати, тот самый Firebird образовался когда Borland решил убить Interbase. В итоге есть бесплатный опенсорс Firebird и платный закрытый Interbase.
Как раз яркий пример почему использование не opensource плохо.
У Борланда было херово с маркетингом.
Но то что Delphi был куплен другой компанией и продолжает развиваться - о чем-то говорит.
Увы ни о чем это не говорит. Новых приложений на этой штуке я не видел ни одного. А вот на Qt видел.
Начинать длительный проект в 2013 году на Delphi7 - да, идиотизм. Хотя тоже могут быть ньюансы.
А вот переписывать код под каждый выходящий ежегодно Delphi - это что, не идиотизм?
Не переписывать, а портировать. И портировать надо если хочется чтобы программа не закончила свой жизненный цикл. На портирование с версии на версию как правило затрачивается меньше усилий. Но если этого не делать, а спохватится в 2013 году, то уже проще написать с нуля.
Ну, смена последней циферки может скрывать весьма небольшие изменения.
На момент старта разработки слава богу 2.5 уже можно было не использовать. Но и при его использовании я бы спокойно переехал на тройку.
Моя программа мигрировала с Delphi (просто Delphi) на D2, D5, D7.
Там какие-то значительные изменения были только с D2 на D5.
Каждая миграция была не просто так а вслед за полезными языковыми конструкиями которых не хватало в предыдущей. D1 вообще был 16-разрядным. Каждый переезд требует обновления всех используемых библиотек а они не все живут так долго. Обжогшись на этом перестал использовать либы без исходников т.к. с ними переход невозможен, приходится искать аналоги и переписывать. Так же стал стараться использовать стороннее по минимуму.
А потом дойдя до D7 стало незачем? Ну а библиотеки опять же яркий пример почему не стоит использовать закрытые решения. И да в Delphi с открытыми библиотеками и их качеством весьма грустная история. Это кстати еще одна из причин почему мы выкосили свое старое приложение на Delphi.
С вашей точки зрения программиста это выглядит дикостью, а с точки зрения бизнеса - это нормально.
С точки зрения бизнеса это тоже дикость. Так-как в один прекрасный момент все сложнее становится купить необходимую платформу. Это тоже самое что продолжать упорно использовать автомобиль прослуживший 10 лет, потому что у нас в кузов наш старый кран помещается.
Кроме того аналогичная ситуация вообще в компьютерном мире - вполне исправное и устраивающее железо может не заработать на новой платформе из-за отсутствия драйверов под эту платформу. Соответственно при смене ОС надо поменять еще и железо. Вопрос - нафига тогда менять ОС?
Компьютеры имеют такую особенность выходить из строя. И да сейчас уже все меньше компьютеров позволяет запускать Windows XP без бубна. А скоро этого сделать будет вообще нельзя.
Миграция на новые версии Firebrird обусловлена тем что в нем вносится много полезных и нужных мне вещей.
Опенсорс тут особо не влияет.
Влияет. Это дает возможность туда добавлять нужные вещи. В том числе и самому при должной квалификации.
Код должен быть простым и легко понятным, с привлечением минимимума лишних абстракций.
Увы сейчас ваш код таким не является. Он как минимум плохо структурирован.
no subject
Date: 2013-04-04 05:59 am (UTC)no subject
Date: 2013-04-04 06:01 am (UTC)no subject
Date: 2013-04-04 06:41 am (UTC)з.ы. но был дико рад, когда наконец свалил от этого всего в java
no subject
Date: 2013-04-04 06:46 am (UTC)Хотелось бы конечно нативного кода, но он идет в нагрузку с С++ :)
no subject
Date: 2013-04-04 07:24 am (UTC)no subject
Date: 2013-04-04 07:27 am (UTC)no subject
Date: 2013-04-04 08:34 am (UTC)Именно так. Все что нужно имеется. Тотальный юникод в строках не нужен. Будет нужен - подумаю над этим вопросом.
>> Влияет. Это дает возможность туда добавлять нужные вещи. В том числе и самому при должной квалификации.
Я не питаю иллюзий по поводу своей квалификации и способности разобраться в объемном и сложном чужом коде. Компиляторы и СУБД намного сложнее чем междумордия для бизнеса. Поэтому мне без разницы опенсорс это или нет - я не собираюсь в одиночку тащить чужие глобальные проекты. Я лучше куплю готовый инструмент и буду им пользоваться.
>> Код должен быть простым и легко понятным, с привлечением минимимума лишних абстракций.
>>> Увы сейчас ваш код таким не является. Он как минимум плохо структурирован.
Мое больное место - сложность в удержании в памяти слоев абстракций и каскадные ссылки и переходы. Соответственно я пишу так что бы этот дефект не сказывался. Пока-что получается. Но по этой причине код с водопадами классов я читать не могу и соответственно не применяю.
no subject
Date: 2013-04-04 08:35 am (UTC)no subject
Date: 2013-04-04 08:42 am (UTC)no subject
Date: 2013-04-04 08:42 am (UTC)Мое больное место - сложность в удержании в памяти слоев абстракций и каскадные ссылки и переходы. Соответственно я пишу так что бы этот дефект не сказывался. Пока-что получается. Но по этой причине код с водопадами классов я читать не могу и соответственно не применяю.
Извините но в таком случае не вам судить что ORM плохо. А то с вашей колокольни много чего плохо будет казаться. К примеру Haskell.
no subject
Date: 2013-04-04 08:47 am (UTC)no subject
Date: 2013-04-04 08:56 am (UTC)no subject
Date: 2013-04-04 09:03 am (UTC)no subject
Date: 2013-04-04 09:18 am (UTC)