Ремесло программиста

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Ремесло программиста » Общие вопросы по языкам программирования » Что мы знаем про Дельфи (Delphi)


Что мы знаем про Дельфи (Delphi)

Сообщений 1 страница 19 из 19

1

1. Форменное начхательство Borland до передачи продукта Embarcadero.
Delphi перестал быть дойной коровой компании (деньги приносит вроде какая-то СУБД) — и его перестали совершенствовать.
Кажется, что между версиями 7 и 2010 — пустота.
Только в 2010 году сделали что-то для поддержки Юникода.
«Амбаркадебра», конечно, работает, да время упущено: x64 появился около 2011, полная поддержка C++11 на всех платформах — не знаю, как в XE10, но в XE8 на x86 только явно устаревший компилятор Borland…

2. Странная ценовая политика Embarcadero. Самодельщик — не их аудитория, они пишут для тех, кто автоматизирует какие-то бизнес-процессы, у них и денежки водятся…

3. Поставили не на тот кроссплатформенный фреймворк — FireMonkey. Этот фреймворк грубо имитирует внешний вид стандартных компонентов Windows, а когда начинаются нюансы — локализация с автоподгонкой, или просто ClearType не нравится — начинается ад. А один из компонентов — TeeChart — ухитряется на FireMonkey попадать точно между пикселями, причём в редакторе это дело обойти можно, а в рабочей проге — нет.

4. потому что дотнет появился прямо в его основной нише - клепание формочек
Появление в этой же нише бесплатного WinForms (да и у языка C# порог входа пониже будет). WPF ещё круче.

lurkmore.to

5. «Тупорылый» оптимизатор — правда, в винде и c наплывом этих ваших пентиумов и кордвадуо кодеры оптимизаторами уже не сильно заморачивались — ибо редкий пользователь заметит разницу реакции программы на клик мышки между 0.1 сек и 0.01 сек, вот честно.

6. Якобы «тупорылый» компоновщик — минимальное оконное приложение, сделанное на основе стандартных компонентов, весило ненормально много для привыкших к минимализму системщиков (около 300 кб). Причина была в том, что Delphi не может исключить из класса часть методов, даже если они нигде не используются, то есть пихает в приложение код класса и всех его предков полностью, а в VCL классы очень тяжелые и с длинной генеалогией. Алсо, вправив Delphi мозги (ну или рисуя окна непосредственно через функции WinAPI), можно заполучить более компактные экзешники. Особенно в этом деле помогает библиотека KOL, с помощью которой можно писать оконные программы весом в несколько десятков килобайт. То есть дело вовсе не в компоновщике, а в библиотеках. Так или иначе — в наше время все это выглядит особенно ржачно, когда внезапно замечаешь, что системный mspaint.exe (наследник pbrush.exe) в Windows 7 весит уже порядка 6376960 байт, а системная библиотека .NET (или Java), будучи скомпилированной и сжатой — весит не менее 20 мегабайт.

7. Настоящий фейл был связан с написанием софтинок с кнопочками. Дело в том, что аж до 2008 года (когда вышла Delphi 2009) родная библиотека VCL весьма хреново поддерживала Юникод, что делало локализацию приложений под все возможные языки (в смысле чтоб одновременно все сразу в одной запущенной программе) несколько затруднительной (хотя если язык в момент времени предполагался только один, который системный, то было глубоко пофиг, ибо даже китайский там весьма и весьма неплохо работал). В принципе, еще в 2001-м в эта проблема решалась чуть более, чем полностью сторонними наборами стандартных компонент с поддержкой Юникода, а начиная с версии Delphi 2009 — решена раз и навсегда сама по себе, «из коробки», но многие кодеры и тогда, и даже сейчас — смутно это знают и понимают.

8. Kylix был неплохим начинанием, однако выпилен [по слухам] в угоду микрософту в обмен на .NET-ништяки. Но не смотря на это, скомпилированные в Kylix 3 (или CrossKylix) бинарники вполне неиллюзорно могут работать под CentOS 5.5, OpenSuSE 11 и даже Ubuntu 10.04 LTS — просто редкий школьник способен обнаружить данный факт.

9. После релиза Delphi XE в 2011 году, по официальным заявлениям Embarcadero на одной из конференций, снова добавится поддержка Linux и прочие плюшки на зло этим вашим VS. Однако пока это лишь обещания, да будет превентивно записано в фэйлы.

https://habrahabr.ru/post/111554/

вольный краткий пересказ того, как же это все произошло.

- Delphi становился все популярнее, внедряется поддержка новых СУБД
- количество проектов реализованных с помощью Delphi становится все больше
- количество Delphi-программистов увеличивается
- начинается глобальный (не только в СССР-России, но и в США) кризис обучения технических кадров
- требования к информационным системам усложняются в соответствии с развитием технологии
- разработчики Delphi ошибаются в направлении развитии технологии (dotnet был еще не актуален)
- заказчики не могут отличить хорошего Delphi-программиста от плохого — отсутствуют центры сертификации
- количество проектов, написанных недопрограммистами увеличивается
- увеличивается число проектов, требующих поддержку (изменения в коде/логике)
- заказчики все чаще и чаще слышат, что «проще переписать, чем исправить/доделать»
- причем это говорят как плохие программисты, не разобравшиеся в коде
- так хорошие, у которых волосы шевелятся от увиденного быдлокода
- разработчики Delphi не успевают за новыми технологиями, хотя это не критично, но...
- все больше и больше народу/заказчиков/руководителей начинают думать что «Delphi — это плохо»
- конкуренты Delphi не спят, а выкатывают все больше и больше «вкусных» тортов технологии
- хорошему программисту без разницы на чем писать, они «уходят» на другой язык, хороших Delphi-программистов становится все меньше и меньше
- Delphi застывает в развитии, приносит убытки, хозяева меняются один за другим
- появляются слухи о кончине закрытии разработки языка
- заказчики для новых проектов стараются выбрать другой язык, ибо надоело переписывать с нуля одно и тоже, без надежды что это все будет работать в будущем, и что у кода проекта будет поддержка
- ВУЗы прогибаются под рынок, Delphi начинают исключать из программ обучения студентов
- Delphi все реже упоминается в технических кругах, многие считают обзывают его «умершим»

Таким образом, основные причины временного заката Delphi:
- низкий порог вхождения
- отсутствие сертификационных центров
- ошибки менеджмента
- отсутствие «рекламы» в СМИ, вернее присутствие антирекламы
- отсутствие поддержки крупных вендоров, в отличии от конкурентов

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

2

Недостатки Дельфи, исходя из моего контекста и по степени убывания фатальности
- лицензия. Дельфи платен, да ещё и платформозависим. Windows, по большому счёту, непригоден ни для бизнеса, ни для военных применений. Для бизнеса непригоден из-за лицензионной политики (грубый развод пользователей на покупку новых ОС и железа, которые обычно теряют какие-то важные возможности прошлых версий, а значит, расходы бизнеса увеличиваются и риски тоже), для военных применений - из-за закрытости (никто не знает, что туда заложили, и узнать в принципе невозможно). Есть аналог (Lazarus) под GPL, тоже не идеал - нельзя продать никому. Например, нужен мне язык расширений для моего коммерческого приложения, чтобы пользователь мог писать быстрые "скрипты" - ни один вариант не подходит. Я не смогу продать ему своё приложение, включив в него Delphi или Lazarus.
- отсутствие горячей замены кода. С пакетами можно пытаться что-то накостылять, но по сравнению с Лиспом всё это смех один.
- ручное управление памятью. В широком классе задач проигрывает конкуренцию сборке мусора из-за низкой надёжности. Не во всех задачах, но в широком классе. В идеале должно быть сочетание обоих подходов, но если надо выбирать "то или то", я выберу сборку мусора, а особые случаи буду особо рассматривать. У ручного управления памятью есть  "размещение ресурсов на стеке", хорошо сделанное в С++, где можно на стеке разместить объект, к-рый автоматически удалится при выходе из функции. В Дельфи можно имитировать интерфейсами, но это - костыль и вроде бы дорого стоит с т.з. производительности. Или везде писать try..finally, но это загромождает код и даёт высокий риск ошибиться и забыть, или написать не то в finally, т.е. по сути не решает проблему надёжности.
- слабый препроцессор, даже по сравнению с Си. С лиспом лучше даже не начинать сравнивать. Слабость препроцессора имеет и плюсы, выкрутиться тоже можно, но это всё же препятствие для решения очень многих задач.
- по состоянию на 2007 (последняя версия, с которой я работал) - несовершенная объектная система, например, нет такой полезной вещи, как примеси. Во время создания VCL не было и интерфейсов, отсюда кривоватая архитектура VCL. А кому будет нужен "просто Паскаль" без рисования GUI? Вряд ли кому-то будет нужен. В принципе меня это не сильно напрягает - я вообще могу обойтись без объектов спокойно, но всё же это некий недостаток.
- синтаксис. Да, begin .. end я считаю неудачным решением, и не только я (смотрим долю языков, которые унаследовали это решение от Паскаля и видим, что даже Оберон отложился). Хотя это не столь важно. Плохие строковые литералы (нет многострочных). Нет параметров-ключей (можно имитировать, но это опять костыль).

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

Отредактировано budden (2017-04-22 23:47:35)

3

Я решил повременить с ответом. Пусть отпишется кто-нибудь еще.

4

- по состоянию на 2007 (последняя версия, с которой я работал) -

С тех времён у них очень много всего добавилось. Но пока это похоже на скоро построенный дом. 

budden написал(а):

- лицензия. Дельфи платен, да ещё и платформозависим.

Уже как год раздают бесплатные версии всем желающим. Говорят в последнем Линукс до делали. А андроид и IOS там уже давно.

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

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

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

Ну прероцессинг это зло. Но вот альтернатива там тоже неразвита.

Отредактировано Павиа (2017-04-23 21:50:13)

5

Павиа написал(а):

пока это похоже на скоро построенный дом

я не согласен со словом "пока". Последний раз я пользовался Borland C++ Builder в 1999-м году (примерно, точно год не помню). Ну тогда он был тоже как "наскоро построенный". Это у него перманентное состояние.

6

Лис написал(а):

Последний раз я пользовался Borland C++ Builder в 1999-м году

C++ Билдер всегда сильно отставал по качеству от поддержки собственно языка Делфи.
Однако, классикой считается:

Delphi 7, выпущенная в августе 2002 года, стала стандартом для многих разработчиков Delphi.

Которая давно устарела, но была довольно стабильной.

7

Павиа написал(а):

Уже как год раздают бесплатные версии всем желающим

Если есть в природе Delphi с полностью открытыми исходниками компилятора и среды под лицензиями MIT/BSD или подобной, работающая под Windows/Linux, то бросьте, пожалуйста, ссылку. Я нашёл разные безплатные продукты Борланда, но ни один из них не выглядит подходящим под эти требования.

8

я вот это обсуждение нашёл. http://www.cyberforum.ru/delphi/thread1798191.html

9

если честно, я не очень понимаю, зачем нам дельфи. Почему, например, не начать обсуждать gnome-builder, который прямо сейчас пилят на C.
Такая же иностранная технология, такие же компоненты (лайёты/layouts), зато опенсорсная, кроссплатформенная и биндинги под все языки есть.

Отредактировано Лис (2017-04-23 23:34:27)

10

Подумал я над обсуждением и понял, что сказать особо нечего. Не понимаю его так же, как перестал понимать тему о Яре.

С неразвитостью модели ООП и кривостью VCL полностью согласен, а всё остальное мне кажется вкусовщиной или необоснованными претензиями. Если нужен встраиваемый скриптовый язык, причем тут Delphi? На прошлой работе для встраиваемых скриптов у нас с успехом использовался Питон, а еще есть Lua, Pawn, Squirrel, языки WSH, PascalScript какой-нибудь, наконец. Что подразумевается под горячей заменой кода? Перечисленные языки разве не покрывают эту возможность? Для прикладных программ всё в конечном счете упирается в развитость библиотек и приспособленность их к реальным задачам, у Delphi это худо-бедно получается.

С точки зрения реализации важны технологии и умение разработчика ими пользоваться. Скажем, в PSPad реализована объектная модель для скриптов WSH. Всё работает, люди пользуются, свои скрипты пишут. Когда автору PSPad потребовалось перенести реализацию на современную версию Delphi, у него всё получилось. Ждем теперь 64 бита. Если реализация качественная, она поддерживается и масштабируется, от языка это несильно зависит.

Вобщем, даже в сравнении с Delphi причина разработки Яра мне мне по-прежнему непонятна, из приведенных аргументов она рационально не выводится. Способы решения перечисленных недостатков также не указаны. В моих глазах это выглядит как попытка замаскировать желание разрабатывать язык потому что хочется. Делать что-то свое -- здорово, но без большого анализа можно рассчитывать или на что-то узкое/прикладное, или на самобытность, и то, если с самовыражением не перегибать. Разумных же границ я пока не вижу. Возможно, разработка находится на слишком ранней стадии, и границы еще не проведены. А как тогда писать код? Код же пишется какой-то? Не понимаю.

budden написал(а):

Да, begin .. end я считаю неудачным решением

Можно было процитировать только это, и больше ничего не писать. Как и в случае с "хрупкостью" Питона, данный аргумент я считаю ничтожным и сливающим дискуссию. Честно говоря, я ожидал уровень повыше. Хотя, если тема начинается с цитаты Лурка, чуда уже не ждешь.

На самом деле в Delphi есть достаточно деталей, к которым можно придраться, но лучше делать это не в теме про лицензии, а теперь еще и про Gnome. Тут какие-то мелочи уже не выглядят заслуживающими внимания. Мне казалось, что разработчик языка должен критиковать язык за какие-то языковые решения, а не за лицензию. Разве нет?

11

Freeman написал(а):

разработчик языка должен критиковать язык за какие-то языковые решения, а не за лицензию. Разве нет?

Разработчик не языка, а русской технологии. А для технологии все вопросы важны, включая маркетинговые и лицензионные. Технология либо в целом будет глобально конкурентоспособна, либо нет. Дельфи - нет, несмотря на множество доступных компонентов для неё. А Раст - да. Разница в репутации. Можно ветку осбуждения отдельную сделать - как правильно формировать репутацию у технологии разработки. Сначала выбрать цели, потом распиарить как именно эти цели несравнимо лучше достигаются, чем в остальных технологиях. Ну и цели надо высокоимпактные выбирать, востребованные в смысле. От синтаксиса нужна экономичность при основных операциях (набор исходников, понимание кода, изучение концепций языка). Begin/End - неэкономично в наборе. Форматирование отступами как в Питоне - неэкономично в плане понимания и переучивания со стиля С. Но не синтаксисом единым жива технология. Технология должна быть хороша и по другим направлениям (доступности для использования, например). budden как раз на доступность и сетует - надо заморачиваться с лицензиями. Так что критика технологии разработки "в экосистеме Дельфи" имеет право включать в себя все аспекты использования технологии И отказываться от дельфи по любой из этих причин - вполне нормально.

12

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

Если говорить про нормальную критику, то нужно приводить числа,расчёты - одним словом математику! А какая у нас матиматика?  Алгоритмы с их  O(n*log(n)). Так алгоритм не зависит от языка. Остаётся только:
1) Цена разработки.
2) Качество.
3) Время, скорость разработки.

Цена от языка никак независит.  Опытный программист за 2 неделе сменит язык. С учётом цикла ведения проекта в 3 месяца. А целого проекта в несколько лет. То это минимальные затраты.  Вот если учить программиста с нуля, то его знакомят со всеми практиками и правилами. Но не концентрируясь на одном языке. Поэтому не важно 5 правил или 150. Хотя хочется побольше.
Время разработки определяют фреймворки и готовые компоненты. И наличие доккументации.

Собственно тут кто первым встал того и тапки. Кто успел расскрутиться у того больше соратников. Там и больше готового кода, готовых примеров готовых фреймворков. Как вы понимаете конкурировать тут не получиться. Только паразитировать. У Delphi это всё есть.

А теперь собственно по существу. Качество. Что определяет качество какие метрики? Одна из них это длина кода. Но её нельзя переносить с языка на язык. Поэтому сравнить не выйдет.
Какие ещё есть варианты?  Можно мравнивать по каличеству закрытых багов в неделю. Но тут многое зависит от зрелости программы. От тестировщика и его опыта. Так что тоже сравнить не выйдет.
Вот и выходит, как в сауспарке. Вместо головы качество определяет безголовое тело:
http://cs5.pikabu.ru/images/big_size_comm/2015-11_1/1446734776132973556.jpg

13

Павиа написал(а):

многое определяет мода

Можно ли модой управлять? Уверен, что можно. У них много учебных курсов по этому поводу.
Masters in Fashion Management degree
Masters in Fashion Management degrees can be offered as Master of Arts (MA), Master of Science (MSc) or Masters of Business Administration (MBA) qualifications.
"Becoming a leader in this fast evolving trade requires individuals to possess an extensive array of managerial skills, a high degree of strategic planning capabilities, interpersonal communications abilities and a creative approach to problem solving."

https://ru.coursera.org/learn/mafash
a general introduction to fashion and luxury concepts: what they imply, how they are perceived, how they differ, and what other basic ideas in this industry are.

https://www.google.ru/search?q=Fashion+management

Fashion Marketing. theory principles, & practice | Marianne C. Bickle

14

budden написал(а):

Если есть в природе Delphi с полностью открытыми исходниками компилятора и среды под лицензиями MIT/BSD или подобной

Собственно исходники ранних версий были открыты, но Делфи всегда была проприетарна, а Lazarus - [L]GPL.

Freeman написал(а):

Если нужен встраиваемый скриптовый язык, причем тут Delphi?

В Lazarus'e/Typhon же есть несколько штук, другое дело, пробовал ли кто-то их вообще и как они работают :rolleyes:

budden написал(а):

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

У Юрия Копнина именно встраиваемый скриптовый язык и именно под Lazarus (перешёл с Делфи).
Правда, поддерживает он продукты на нём, а не продаёт сам язык, что, как заметили в соседней теме, логично.
Так что тут скорее вопрос желания и умения. Опять же грамотность работы с [L]GPL правами.

budden написал(а):

У ручного управления памятью есть  "размещение ресурсов на стеке", хорошо сделанное в С++, где можно на стеке разместить объект, к-рый автоматически удалится при выходе из функции.

Это уже незнание языка. Всё там нормально с размещением в стеке, для этого надо знать особенности структур и объектов,
ну или при особом задротстве - работу с указателями по старинке как в С++, которую там никто не отменял.

budden написал(а):

Плохие строковые литералы (нет многострочных).

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

Лис написал(а):

пилят на C

Может не понравится слишком низкоуровневый язык.

Лис написал(а):

не языка, а русской технологии<...>неэкономично в плане понимания и переучивания со стиля С

С каких пор оно стало русской технологией?

Лис написал(а):

надо заморачиваться с лицензиями.

От этого вообще никуда не деться, "своё" всё равно придётся как-то защищать.

Павиа написал(а):

А какая у нас матиматика?

Последний раз читал о кривом рехешировании.

Павиа написал(а):

многое определяет мода.

Скорее квалификация. Очевидно, что написать графический компонент в Делфи намного сложнее, чем настрочить обычный класс в С++ или Java.
Это работа дизайнера-верстальщика-программиста, на выходе подпрограмма в более широком смысле - по сути как полноценное приложение, которое можно комбинировать с другими.

Freeman написал(а):

в Delphi есть достаточно деталей, к которым можно придраться

Бессмысленно, для этого нужны люди, хорошо разбирающиеся в вопросе. А то получается как беседа о Прологе на Вашей лекции=)
Я в целом мало слежу начиная с XE, лазарус привлекательнее, многие на него перешли, кому был нужен язык, хотя ждать чего-то от open source - как с моря погоды.

Лис написал(а):

- ВУЗы прогибаются под рынок, Delphi начинают исключать из программ обучения студентов

Там часто Lazarus или PascalABC.

P.S.: если смотреть и на язык и на среду - качество Java в целом существенно выше, больше сред, библиотек, надёжности и т.д.
В плане настольного офисного функционала - до MS очень далеко.
В плане БД - очень далеко до кучи граф. сред в элементарной работе.

Лис написал(а):

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

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

15

budden написал(а):

Опять 25! Давайте вы сначала попробуете понять, что я написал, а уже потом будете вешать ярлыки? Я имел в виду частный случай RAII, а именно, привязку ресурсов к автоматической переменной объектного типа с захватом ресурса в конструкторе и освобождением в деструкторе. В Дельфи такой элегантной записи нет (по состоянию на 2007 год). Есть ещё такая аббревиатура RAII. К вашему сведению, почти вся моя карьера была построена на Дельфи - с 1995 года по 2015, вот моё резюме. Если вы приведёте пример, который покажет RAII в Дельфи, такое же, как

Код:
{
ifstream my_file;
/* делай что угодно - при выходе из функции файл закроется (кроме особых случаев 
типа вложенных исключений в деструкторе, когда он всё равно закроется 
вместе со всей программой */
}

Когда покажете мне это в Дельфи 7 - я признаю, что я не всё знаю в Дельфи. В противном случае жду ваших извинений.

Мне казалось, что разработчик языка должен критиковать язык за какие-то языковые решения, а не за лицензию.

Слушайте, я вам ничего не должен. Вы спросили, что мне не нравится в Дельфи. Я потратил своё время и ответил. Вместо "спасибо" вы пишете про какой-то уровень. Найдите тогда кого-нибудь более достойного вашего уровня - у него и спрашивайте.

Я лично ответил ровно на то, что было написано, а то что это, вдруг, означало для Вас определённый частный случай, уж извините, не соответствует моим телепатическим способностям. Далее, уж извините, но я не стану тратить своё время и другим не советую.
Оставшаяся часть сообщения перенесена в скрытый административный раздел.

16

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

17

В Делфи в строках есть умные указатели. А это вариация на тему RAII.

Собственно исходники ранних версий были открыты, но Делфи всегда была проприетарна, а Lazarus - [L]GPL.

Лазарус уже не моден. Сейчас рульный CodeTyphoon :). Меньше возни в нем.

Отредактировано utkin (2017-05-11 20:46:02)

18

utkin написал(а):

CodeTyphoon . Меньше возни в нем.

Возни меньше, да. А лицензия та же?

19

На сайте производителя (PilotLogic) сказано так:

CodeTyphon has Typhon V-IDE (Visual Integrated Development Environment)+
FreePascal compiler+Tools+Free Components packages+Free Libraries+
tons of samples and all these are Free and Open-Source.

И так:

CodeTyphon is licensed as: Freeware.

Отредактировано utkin (2017-05-12 07:21:31)


Вы здесь » Ремесло программиста » Общие вопросы по языкам программирования » Что мы знаем про Дельфи (Delphi)