Delphi - 25 лет

Надо же, уже 25 лет прошло с тех пор, как появился Delphi.

Уже никто и не помнит, что тогда ни одна СУБД не содержала толкового языка программирования. И еще не существовало средств быстрой разработки пользовательского интерфейса. Т.е. те окошки, которые сейчас программист может нарисовать за 5 минут, требовали нескольких часов (а то и дней) программирования.

А еще - все ждали появления толкового средства разработки для Windows.

И вот - появился Delphi. Для Windows. C обновленным Паскалем. C фантастическими на тот момент возможностями по разработке интерфейса. С фантастически удобной средой.

И с возможностью работать с базами данных. Практически любыми! Что тогда тоже было почти фантастикой.

Само название - Delphi - намекало на то, что даже для самой мощной на тот момент СУБД - Oracle - это средство позволит построить всю нужную инфраструктуру. Как Дельфы вокруг Дельфийского оракула.

И сколько программистов перешло тогда с С и С++ на Delphi, вы бы видели!

Хочется сказать за это спасибо Филиппу Кану, основавшему Borland и выпустившему этот продукт.

Delphi - 25 лет Программирование, Delphi, Net
Вы смотрите срез комментариев. Показать все
30
Автор поста оценил этот комментарий

Низкий входной уровень Дельфей породил крайне предвзятое отношение из-за кучи кривых поделок.


Ну и тяжеленные на то время либы не добавляли радости.

раскрыть ветку (54)
12
Автор поста оценил этот комментарий

И теперь пишущих на Delphi по привычке продолжают считать школьниками, не воспринимают на форумах их вопросы серьёзно, и всячески ржут...

раскрыть ветку (9)
5
Автор поста оценил этот комментарий
Ну не знаю, значит не на те форумы заходите. Я сам в технаре Делфи изучал, потом пробовал перейти на С++ и понял что Делфи мне все же ближе и приятнее. Правда щас больше на сисадмина перешел и программирование забросил. Но все же нет нет, а запущу компилятор, вспомнить так сказать. Так что имхо Делфи крут.
ещё комментарии
13
Автор поста оценил этот комментарий

"Теперь" пишущих на Дельфи считают динозаврами - при виде такого можно поперхнуться смузи и упасть с гироскутера.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Я в универе начинал с трубы (Turbo Pascal), потом перешел на Delphi. В 2008-ом, после армии, еще успел поработать Delphi-программистом, но фирма уже переписывала свой код на .NET.

29
DELETED
Автор поста оценил этот комментарий

Низкий входной порог и стал его проклятием. Каждый школотрон, накидавший контролы на формочку и по даблклику прописавший обработчики, теперь мнил себя программистом. А вот классы, многопоточность ("а, что? визуальные компоненты не поддерживают многопоточность? Еще критсекции, ивенты и семафоры нужны? А шо это? Нахер, все будем делать в одном потоке, и хрен с ним, со фризами") уже выше их понимания. А так, при грамотном, вдумчивом кодинге результат будет как минимум не хуже, чем на вашем хваленом С/С++, но таки быстрее.

раскрыть ветку (35)
18
Автор поста оценил этот комментарий
Чет от твоих слов фронтэндом и JS повеяло.
раскрыть ветку (21)
6
Автор поста оценил этот комментарий

Преемственность школотронов имеет место быть)

7
DELETED
Автор поста оценил этот комментарий

1С же. Вот прелестный подход от погромиста 1С:

- А шоб всякие бяки не лезли, обернем код в try-except (попытка-исключение)!

- Так ты же не обрабатываешь иксепшн, а тупо гасишь? И проверочки надо сделать перед вызовом?

- Да похер %)

раскрыть ветку (16)
10
Автор поста оценил этот комментарий

try

...

except

ShowMessage( 'бля, хуйня какая-то, не фартануло, не свезло' );

end;

раскрыть ветку (11)
Автор поста оценил этот комментарий

Сейчас иногда так делаем. Чтоб увидеть, где возникла ошибка и какая. Когда нет возможности запустить под отладчиком.

Например, мой плагин работает у заказчика в Москве, а я в другом конце нашей необъятной...

раскрыть ветку (10)
DELETED
Автор поста оценил этот комментарий

А логирование для лохов?

раскрыть ветку (9)
Автор поста оценил этот комментарий

+ письмо можно себе отправлять сразу-же

Автор поста оценил этот комментарий

В некоторых случаях удобно именно выдать MessageBox.

раскрыть ветку (7)
DELETED
Автор поста оценил этот комментарий

Например? Может и я тогда начну

раскрыть ветку (6)
1
DELETED
Автор поста оценил этот комментарий
Чтобы клиент увидел, что не просто так над ним ржем и заставляем программу запускать, а действительно что-то ломается и мы даже ищем где
Автор поста оценил этот комментарий

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

Я ему обернул вызовы циклом с try/catch с выдачей MessageBox с кнопками Retry/Cancel, чтоб он мог либо повторить попытку и продолжить работу, либо завершить.

Когда найдем причину сбоя в веб-службе - вернем все обратно.

раскрыть ветку (4)
1
DELETED
Автор поста оценил этот комментарий

Я может мало с десктопом работал, в веб проще стак трейсы в логах чекнуть и понять, где упала ошибка. От заказчика нужно только воспроизвести баг/фичу.

раскрыть ветку (2)
Автор поста оценил этот комментарий

Так есть же MadExcept. Очень удобно гейзенбаги ловить.

1
Автор поста оценил этот комментарий

Тут вопрос, понимает ли человек, что он делает.

В некоторых случаях возникшее исключение не мешает дальнейшему выполнению функции.

Например

установить размеры окна в дефолтные значения;

try

   {считать размеры окна из настроек;}

catch (Exception e)

   {}

показать окно;

раскрыть ветку (2)
DELETED
Автор поста оценил этот комментарий

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

Автор поста оценил этот комментарий

По исключению надо как минимум написать в логи сам факт его возникновения и стектрейс. Иначе потом так и будешь выяснять, почему у тебя в конфиг файле размеры окна прописаны AxB, а по факту они CxD, вместо того, чтобы в логе увидеть, что прав на чтение файла у пользователя, из-под которого запущена программа, нет.

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

Автор поста оценил этот комментарий

Ну да, 1С тем и хороша, что позволяет решить задачу, даже не зная программирования.

Хотя... Встречал я пару лет назад программиста на C++, не умевшего грамотно пользоваться исключениями...

Кстати, исключения - может быть темой для отдельного поста.

ещё комментарии
4
Автор поста оценил этот комментарий
Фризы... Помню там была канистра "antifreeze" что-ли. Её бросал на форму и форма не ждала поток, который сама и запускала. Некий кастыль от разработчика.

А вообще штука классная. Написал смс отправлялку. Потом Билан Казахстана капчу сделали, и её прикрутил. А потом и вовсе запретили отправлять с сайта.
Но главное, что работало и трафика по минимуму и быстро написал программку.
раскрыть ветку (1)
4
DELETED
Автор поста оценил этот комментарий

Еще густо заполняли "долгий" код строчкой Application.ProcessMessages, что приводило к чудесатым результатам

Автор поста оценил этот комментарий

Ну блин многопоточность для vcl лечится synchronize'ом

раскрыть ветку (2)
1
DELETED
Автор поста оценил этот комментарий

Имеется ввиду, что компоненты VCL могут нормально работать только в главном потоке, и это не лечится synchronize, и не надо это лечить. Форма отдельно, потоки отдельно, обмен данными threadsafe-ный

раскрыть ветку (1)
Автор поста оценил этот комментарий
Ладно. Костылится синхронайзом.
Автор поста оценил этот комментарий

о, я себя узнал

Автор поста оценил этот комментарий

??? ты адекватен? Задачу нужно решать быстро и дешево. В реальности много поточность идёт после работающего прототипа. А заказчику обычно хватает криво медленно работающего прототипа(альфа версии) за 100$ и за неделю, а не вылизанной проги за 1000$ и через месяцы.

раскрыть ветку (2)
DELETED
Автор поста оценил этот комментарий

Я бы не связывался с погромистами "за 100 баксов и за неделю" :))

раскрыть ветку (1)
Автор поста оценил этот комментарий

ээээ 100 баксов за 40 часов якобы работы которой и 10 часов может быть за понтовые задачи...может в Москвабаде или городе миллионике просто зажрались. Не контора может и $1000 влепить за задачу, а программист 10 получит в час макс...

Но вопрос не сколько платят, а что считают выполненным заданием. Альфа версию что как-то работает или сайт программы с 10 часов материалов в виде видео и поддержкой пары десятков ОС.

1
Автор поста оценил этот комментарий

Не понимаю как можно на серьезных щах писать такую хуйню. Низкий входной порог стал проклятием!

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

ЯП может погубить только рынок и сами разработчики

Автор поста оценил этот комментарий

Это не меняет того, что BCL был крайне глючный.

Автор поста оценил этот комментарий

А, ну и само собой частые "Internal Compiler Error". Блин, как весело было пытаться переставлять местами куски рабочего кода, чтобы компилятор всё-таки его скомпилировал.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Это чаще всего лечилось перезапуском среды.

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

Но, должен сказать, от ошибок Delphi у меня проблем возникало на порядок меньше, чем от ошибок 1С.

4
Автор поста оценил этот комментарий

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

Может, потому, что учились по хелпу или по упрощенным книжкам.


Библиотеки - не скажу, чтоб они были такими уж тяжеленными. Просто на машину надо было ставить больше памяти. Но на 8МБ RAM Delphi уже работали - хотя и не быстро. На 16 - все летало.

раскрыть ветку (5)
1
Автор поста оценил этот комментарий

моё самое любимое - использовать SysUtils (сразу +300кб к размеру exe) ради одной ф-ии IntToStr, которая всего-лишь обёртка от стандартных процедур val/str

раскрыть ветку (4)
Автор поста оценил этот комментарий

Дельфи не умеет в статическую линковку?

раскрыть ветку (3)
Автор поста оценил этот комментарий

в SysUtils в секции implementation просто стояло куча всякого мусора, который выполнялся в итоговом файлике (точно не помню уже что оно там вызывало).


* потом придумали лёгкую версию её: https://github.com/synopse/LVCL/blob/master/SysUtils.pas

Автор поста оценил этот комментарий

Delphi прилинковывает целый модуль. Даже если там используется одна функция.

Хотя, вот сейчас подумал,  может, зависит от режима компиляции - может, с оптимизацией он лишнее выкидывает - а я просто уже и не помню...

раскрыть ветку (1)
Автор поста оценил этот комментарий

я вместо SysUtils обычно просто копипастил нужную ф-ию или описание типа/константы без добавления самого модуля.

т.к. там в основном шло дублирование каких-то типов с windows.pas или types.pas

1
Автор поста оценил этот комментарий
Одна из них - HiAsm
1
Автор поста оценил этот комментарий
Ты на js поглади и на мамкиных веб-программистов
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку