metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-04-03 01:06 am

В Советской Белоруссии SQL разжигает айседа

http://theiced.livejournal.com/238346.html
Собственно, про кобол я не знаю, на дельфи пишу уже 15 лет и никак избавится от него не могу (слишком много легаси кода), а вот про SQL я с ним не согласен.
Сам по себе SQL очень хорошо подходит для генерации отчетов. Если отчет сводится к фильтрации-сортировке-группировке множеств - идеально. С рекурсивными CTE - еще и деревья можно обрабатывать, не особо включая мозг. Всунув поверх этого минимальных размеров постобработку на какой-нибудь функциональщине, можно сделать почти любой отчет, пришедший в голову свихнувшимся на Excel выпускникам нархоза, работающим в минстате, минфине и МНС.

Но когда доходит до процедурных расширений, API между СУБД и клиентскими приложениями или каких-нибудь вещей, которые забыли вовремя добавить в стандарт - начинается полная, немыслимая жопа.
Например, проклятая тема - генерация автоинкрементных ключей и возвращение значений автоматически заполненных полей. Кто во что горазд - identity, генераторы, sequence, функции (в каждой СУБД названные по разному), returning, заебы на тему "вызывать в той же транзакции и сессии" и прочая и прочая. Про вариации на тему "вернуть поле, которое заполняется автоматически, но не является ключом/identity" лучше даже не думать.
Неудивительно, что люди при первой же возможности сбегают в ORM (которые являются уже второй производной от всего этого маразма и несут на себе его неизгладимый след).

[identity profile] fraks-nsk.livejournal.com 2013-04-04 04:55 am (UTC)(link)

>> С опенсорсем риски тоже есть, они другие но их не меньше.

>>> Есть, но риска "мы взяли и убили проект и давай до свидания" как-то нет.

Да точно так же есть. Убили проект, самостоятельно вы его развивать не сможете а желающие разбежались. Все, приплыли.
Кстати, тот самый Firebird образовался когда Borland решил убить Interbase. В итоге есть бесплатный опенсорс Firebird и платный закрытый Interbase.

>> Да ладно? Борланд продали не от хорошей жизни.

У Борланда было херово с маркетингом.
Но то что Delphi был куплен другой компанией и продолжает развиваться - о чем-то говорит.

>> Нужна не дрочка, а соответствие реалиям. Использовать Delphi 7 в 2013 год это верх идиотизма.

Начинать длительный проект в 2013 году на Delphi7 - да, идиотизм. Хотя тоже могут быть ньюансы.
А вот переписывать код под каждый выходящий ежегодно Delphi - это что, не идиотизм?


>> А между тем мое приложение спокойно переехало с spring framework 3.0->3.1->3.2 и не кашляет.
>> И да особого времени и сил это не затребовало.

Ну, смена последней циферки может скрывать весьма небольшие изменения.
Моя программа мигрировала с Delphi (просто Delphi) на D2, D5, D7.
Каждая миграция была не просто так а вслед за полезными языковыми конструкиями которых не хватало в предыдущей. D1 вообще был 16-разрядным. Каждый переезд требует обновления всех используемых библиотек а они не все живут так долго. Обжогшись на этом перестал использовать либы без исходников т.к. с ними переход невозможен, приходится искать аналоги и переписывать. Так же стал стараться использовать стороннее по минимуму.

>> Гениально. Давайте подстраивать платформу выполнения под программу.

С вашей точки зрения программиста это выглядит дикостью, а с точки зрения бизнеса - это нормально.
Кроме того аналогичная ситуация вообще в компьютерном мире - вполне исправное и устраивающее железо может не заработать на новой платформе из-за отсутствия драйверов под эту платформу. Соответственно при смене ОС надо поменять еще и железо. Вопрос - нафига тогда менять ОС?

>> Это вы выдумываете. Используется последний зарелизенный Firebird 2.5.1.

>>> Это вот у вас единственный вменяемый компонент и используется у вас только в силу свой как раз таки opensource.

Миграция на новые версии Firebrird обусловлена тем что в нем вносится много полезных и нужных мне вещей.
Опенсорс тут особо не влияет. Он для меня все равно получается как бы платным, я являюсь членом Firebird Foundation и ежегодно плачу туда взносы. Они не велики но это мой вклад в развитие нужного мне продукта.

>> Мягко говоря все образчики кода которые вы показывали ни у кого восторга не вызывает, скорее даже наоборот.

Вызвать восторг - не является моей целью. Код должен быть простым и легко понятным, с привлечением минимимума лишних абстракций.

[identity profile] norguhtar.livejournal.com 2013-04-04 05:47 am (UTC)(link)

Да точно так же есть. Убили проект, самостоятельно вы его развивать не сможете а желающие разбежались. Все, приплыли.

Есть разница. В случае 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 обусловлена тем что в нем вносится много полезных и нужных мне вещей.
Опенсорс тут особо не влияет.

Влияет. Это дает возможность туда добавлять нужные вещи. В том числе и самому при должной квалификации.


Код должен быть простым и легко понятным, с привлечением минимимума лишних абстракций.

Увы сейчас ваш код таким не является. Он как минимум плохо структурирован.

[identity profile] metaclass.livejournal.com 2013-04-04 05:59 am (UTC)(link)
Я использую D7 и смысла переходить на новые версии тоже не вижу :)

[identity profile] norguhtar.livejournal.com 2013-04-04 06:01 am (UTC)(link)
У тебя легаси который ты спишь и видишь как бы убить гг

[identity profile] evil-invader.livejournal.com 2013-04-04 06:41 am (UTC)(link)
Переводил достаточно крупный проект с D7 на уникодную новую делфю. Практически проблем не было.

з.ы. но был дико рад, когда наконец свалил от этого всего в java

[identity profile] metaclass.livejournal.com 2013-04-04 06:46 am (UTC)(link)
Думаю свалить на скалу и забыть :)
Хотелось бы конечно нативного кода, но он идет в нагрузку с С++ :)

[identity profile] evil-invader.livejournal.com 2013-04-04 07:24 am (UTC)(link)
А почему Scala, а не Clojure?

[identity profile] metaclass.livejournal.com 2013-04-04 07:27 am (UTC)(link)
Скорее всего, придется использовать и то, и другое. В некоторых местах позарез нужна нормальная типизация, в некоторых - более важна возможность по быстрому намутить структур данных без типов.

[identity profile] fraks-nsk.livejournal.com 2013-04-04 08:34 am (UTC)(link)
>> А потом дойдя до D7 стало незачем?

Именно так. Все что нужно имеется. Тотальный юникод в строках не нужен. Будет нужен - подумаю над этим вопросом.

>> Влияет. Это дает возможность туда добавлять нужные вещи. В том числе и самому при должной квалификации.

Я не питаю иллюзий по поводу своей квалификации и способности разобраться в объемном и сложном чужом коде. Компиляторы и СУБД намного сложнее чем междумордия для бизнеса. Поэтому мне без разницы опенсорс это или нет - я не собираюсь в одиночку тащить чужие глобальные проекты. Я лучше куплю готовый инструмент и буду им пользоваться.



>> Код должен быть простым и легко понятным, с привлечением минимимума лишних абстракций.

>>> Увы сейчас ваш код таким не является. Он как минимум плохо структурирован.

Мое больное место - сложность в удержании в памяти слоев абстракций и каскадные ссылки и переходы. Соответственно я пишу так что бы этот дефект не сказывался. Пока-что получается. Но по этой причине код с водопадами классов я читать не могу и соответственно не применяю.

[identity profile] berezovsky.livejournal.com 2013-04-04 08:35 am (UTC)(link)
Пиздец, только что увидел, что читается фракс энск, а не франк энск.

[identity profile] fraks-nsk.livejournal.com 2013-04-04 08:42 am (UTC)(link)
И что это меняет?

[identity profile] norguhtar.livejournal.com 2013-04-04 08:42 am (UTC)(link)

Мое больное место - сложность в удержании в памяти слоев абстракций и каскадные ссылки и переходы. Соответственно я пишу так что бы этот дефект не сказывался. Пока-что получается. Но по этой причине код с водопадами классов я читать не могу и соответственно не применяю.

Извините но в таком случае не вам судить что ORM плохо. А то с вашей колокольни много чего плохо будет казаться. К примеру Haskell.

[identity profile] fraks-nsk.livejournal.com 2013-04-04 08:47 am (UTC)(link)
Извините, но то что мне плохо - судить исключительно мне а не вам.

[identity profile] norguhtar.livejournal.com 2013-04-04 08:56 am (UTC)(link)
Извините, но это не я пришел в этот журнал и начал рассказывать что ORM говно. А потом внезапно выясняется что у вас есть проект лохматого года который вы пописываете на сильно мертвой платформе да еще и рассказываете, что так надо писать. В итоге даже iced так понравилось что он целый пост этому посвятил.

[identity profile] fraks-nsk.livejournal.com 2013-04-04 09:03 am (UTC)(link)
Вы гвоорите в стиле айседа, только без матов и агрессии. Это сильно лучше, но в данном случае результат одинаков.

[identity profile] norguhtar.livejournal.com 2013-04-04 09:18 am (UTC)(link)
Как бе просто есть такое выражение каждый сверчок знай свой шесток. Вот в вашем случае лучше сидеть со своим проектом и Delphi дальше. И в дискуссии это плохо без понимания что и как работает лучше не лезть. Особенно с Delphi и своими велосипедами. Разработка с момента Delphi 7 на месте не стояло. Так что или бежите и обучаетесь либо тухнете в своем болоте.