@sergeyiljin

Стоит ли мне учить delphi после C# ради смены работы?

Сейчас занимаюсь тем, что пишу кроссплатформенный back - end для web приложений на .NET Core. Недавно предложили работу в очень крупной компании, но только с изучением Delphi и Oracle для разработки настольных программ и использования внутри компании. По з/п и стабильности выиграю. Стоит ли мне это делать и насколько сложно и перспективно учить Delphi после C#?
  • Вопрос задан
  • 4029 просмотров
Пригласить эксперта
Ответы на вопрос 15
@Alex_Builder
Не бойтесь Дельфей. Например, меня большой опыт как на С++/C# так и на Дельфях.
Современные Дельфи по сути мало чем отличаются от C#. У них даже похожие названия многих библиотечных классов и похожие названия методов в class helper-ах. Дженерики тоже очень похожи.
Есть и атрибуты как в C#, а так же добавили похожий RTTI и рефлексию.
Даже такой класс как TStringBuilder есть, хотя на Дельфях он практически и не нужен, поскольку Дельфи позволяют прямое и очень быстрое манипулирование символами строки или частями строки как и C++.
В последней версии Дельфей даже появилась возможность объявления переменных по месту с самовыведением типа (аналог auto на C++ или var на C#)

Плюсы Дельфей в сравнении с C#:
- Найтив для любой поддерживаемой платформы (при использовании библиотеки FMX) с отсутствием подтормаживания на JIT компиляцию. При компоновке по умолчанию вы получаете готовый к запуску исполняемый фаил (exe-шник в случае Win), который не нуждается в установке каких-либо дополнительных фреймворков или runtime-библиотек.
- Для 64-х битных приложений конечный код в большинстве случаев работает чуть быстрее чем аналогичный на С# (хотя это уже и не существенно). Но при этом в нагруженном приложении отсутствуют какие либо даже минимальные задержки на сборку мусора, что может быть, например, более предпочтительно для индустриального сектора.
- В разы меньшее потребление памяти на аналогичных задачах.
- Возможность прямого доступа к памяти. Возможность работы с указателями на любые структуры в любой момент. Не нужно заморачиваться с unsafe блоками на C# для повышения быстродействия, которые все равно имеют ограничения.
- Более гибкая работа с конструкторами, деструкторами и свойствами классов.
- Наличие некоторых удобных языковых чисто паскалевских или object-паскалевских конструкций как то, например, возможность более удобного присвоения result в функциях наравне c exit(...) (аналог return в C#);
конструкции"set of" или "class of", прямых аналогов которых нет в C#. Например, "class of" решает половину вопросов рефлексии без собственно применения медленного механизма рефлексии.
- Возможность процедурного программирования. Не нужно городить статические классы только ради пары-тройки методов. А так же вложенные процедуры/функции.
- Прямой доступ к родному API без особых заморочек (хоть для Win, хоть для POSIX) и почти бесшовная работа с COM и ActiveX.
- Гораздо более легкий доступ к исходному коду стандартной библиотеки и более простой способ пройтись по ней в момент отладки.
- Возможность писать куски кода прямо на ассемблере в 32х или 64х битном коде (если очень надо, конечно).
- Очень хорошие компоненты доступа к большому числу баз данных прямо из коробки (FireDAC).
- Паскалевская структура unit-ов c раздельным объявлением и реализацией (что ближе к разделению на заголовочные и имплементационные части C++), а так же необходимость объявления сверху вниз все же способствует более строгому и грамотному подходу к архитектуре в большом проекте, хотя и безусловно требует больше писанины и планирования (как отчасти и на C++).

Минусы Дельфей по сравнению с C#:
- необходимость ручной очистки памяти за исключением строк/записей/и интерфейсов (что, наверное, по началу самое страшное для программистов с менеджет сред). Почти везде необходим try-finally, ну и компоненты типа madExcept тут в помощь. Зато нет порой трудноуловимых утечек, например, из-за ссылок на статические классы как в C#;
- Как следствие Дельфи требуют более хорошего понимания принципов работы с памятью, а так же хорошего понимания работы ARC механизма для строк и особенно для интерфейсов, где этот механизм можно явно перекрывать. И особенно в свете наличия таких новых атрибутов для ARC механизма как [Weak] и [Unsafe].
- более многословный и архаичный синтаксис begin...end вместо {...} / := вместо = / необходимость отделения объявления от имплементации и т.п.; оператор case of ( аналог switch в C#) не допускает выбор по строчному значению / оператор for позволят только прямой или обратный проход по счетчику или по экземплярам коллекции (аналог foreach); нет префиксно-постфикстных инкрементов/декрементов типа ++/-- (хотя есть операторы Inc/Dec, которые напрямую транслируются в соответствующие быстрые ассемблерные команды)
- Много исключений и выкрутасов для обратной совместимости (хотя далеко и не так много как на C++). Например, классически строки индексируются с 1 для совместимости с древними короткими AnsiString,
но при этом новые компиляторы для мобилок индексируют их с 0. Поэтому, либо нужно писать разный код для десктопа и мобилок, применяя блоки {$IFDEF ... } в коде, либо пользоваться новыми helper-ами для строк.
- Из-за необходимости классического объявления сверху-вниз и отделения объявления от имплементации существует проблема т.н. circular reference которая требует более продуманного чем для C# дизайна классов или объединения их в одном юните
- нет развитых Лямда-выражений (есть только анонимные функции)
- нет удобного LINQ (особенно недостает LINQ for Object)
- Стандартная библиотека менее всеобъемлющая чем на С#.
- Нет такого навороченного dataset-а на стороне клиента как на C# (хотя, от его использования многие через некоторое время и так отказываются в пользу самописных или сторонних т.н. объектов бизнес-логики)
- Более сложный подход к просмотру содержимого объекта в момент отладки. В VS это удобнее и информативнее, а на Дельфи очень часто приходится приводить к нужному классу ручками.

Дельфи сейчас менее востребованы чем C#. Поскольку во внутри-корпоративном и бизнес-секторе в основном их вытеснил C#.
Но на десктопе полно еще проектов и на Дельфях. Например утилиты Auslogics или серьезный пакет Altum Designer и т.п. Много осталось проектов как раз в индустриальном секторе, отчасти потому, что на Дельфях очень просто в рамках приложения спуститься на более низкий уровень доступа к памяти и кода вплоть до чистого ассемблера как и на C++, но при этом одновременно проще писать и прикладное ПО (без необходимости постоянной прямой работы с указателями).
Ответ написан
samodum
@samodum
Учить Delphi имеет смысл, если это останется твоим единственным и последним местом работы.
Поменять место потом будет гораздо сложно.
C# намного лучше в плане перспектив
Ответ написан
HemulGM
@HemulGM
Delphi Developer
Delphi стоит изучать. На нем можно очень много вещей сделать. Лично я делал: срм, игры, видеоконтроль приложение на php backend, веб приложения и мобильные приложения на Android. Delphi похоронили те, кто им никогда не занимался. Но скорость разработки десктопных приложение на нем всегда выше, чем на любом другом языке
Ответ написан
@dmfun
На Delphi вакансий меньше, сам язык простой, думаю легко выучить, если есть база( ООП, GUI - компоненты,SQL, везде одно и тоже почти)
Если перспектива проработать в компании долго высока, то почему бы и нет. Если меньше года, то имеющийся опыт никуда не денется, думаю. Но после 5 лет в другое место устроится будет сложнее.
Везде есть риски. Ну и не все до конца жизни работают программерами. Все зависит от компании (её стабильность, перспективы карьерные) и Ваших дальнейших целей. Нужно еще посмотреть откуда из этой компании на работу берут. Везде есть ротация кадров.
Ответ написан
Zoominger
@Zoominger Куратор тега Карьера
Сись админ
Delphi давно умер, видимо, вам придётся дорабатывать и сопровождать жуткое легаси, потому и выигрыш по зарплате. Я б не пошёл.
Ответ написан
@Chuka-Kaka
Ни в коем случае не делайте этого. Это будет начало короткого пути к полной вашей деградации как специалиста.
Ответ написан
@AlexanderMi
Расширения для браузеров, прикладное ПО
А по-моему мнение людей, которые никак неодупляют, что Delphi очень давно и прочно сидит в корпоративном сегменте, позволяет действительно "наформошлепить" то что на C# неделю писать придется на крестах и того дольше, обладает кросс-платформенным аналогом и огромным сообществом со всех сторон, с кросс-сборкой под другие платформы и даже в другие языки - это как бы говорит о том что сабж не мертв, а очень даже жив, и такие мнения надо ставить под огромные сомнения, потому как у них из контр-аргументации только "фууу... ты формошлепишь" и "delphi мертв".
Просто разрабы (которые delphi), ни разу не ставили себе целью делать что-то бесплатным, только в 19-м году (спустя почти 20 лет разработки самого delphi) выпустили таки бесплатную редакцию.

У них вполне себе была попытка и .NET загрести под свою RAD... но что-то пошло не так и этого не случилось, по крайней мере т.н. 8-я версия была первой и последней средой для .NET.

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

Можете на почту чиркануть (в профиле), я вам накидаю инфы и мб помогу чем с начинанием, а вы мне все тоже самое только шарпу))

Ну про путь в один конец тоже правда, к хорошему очень быстро привыкаешь. То что я там за 5 минут накидаю, на шарпе придется накидать, описать, сконфигурировать, раздуплить и может быть оно такие запустится.
Стеба ради, вот это написано на Delphi: prime.fmsoft.net/demo/desktop/mdemo65.dll
Ответ написан
@atol
Сказать что Delphi только для формошлепства это все равно что сказать что php для заполнения формы фидбэка:).да delphi одно время сдавал позиции но сейчас это так , это кроссплатформенный инструмент просто эффективные менеджеры ИТ ехСССР как всегда отстают от майнстрима погуглите idera, Embarcadero Delphi Rio10.3.2 а затравку видео про ХЕ7https://youtu.be/tjp-joRc2y0 а после был ХЕ8 ХЕ10 Веrlin Tokio Rio
Ответ написан
@krka92
Смотря что подразумевается под работой с Delphi. Если "формошлепство" - тогда это невыгодный размен. Если иначе, то почему бы и нет. Опять же смотря какое количество легаси в этой фирме имеется.
Delphi язык легкий для изучения. Все что можно сделать на C# можно сделать и на delphi.
Я не агитирую, выбирать все равно Вам)
Ответ написан
@zedxxx
Если речь о современном Delphi, то да, стоит. Но вот если вас зовут на поддержку легаси конца 90-х годов, с какой-нибудь Delphi 2, то наверное не стоит. И дело тут даже не в языке как таковом, а в легаси - с ним лучше не связываться ни на каком языке.
Ответ написан
@duke_alba
Лучше уж тогда выучить Cobol. С ним Вы найдёте работу в любой европейской стране. Но станете вымирающим видом.
Ответ написан
MRoose
@MRoose
Застал эпоху исчезновения 3.5 мм mini-jack
Все зависит от того, как видишь свои будущие 10 лет.

Если умственные способности позволяют изучить язык и не потерять уже имеющиеся знания - иди.

Хочешь быть на волне - изучай актуальные ЯП, за которые хорошо платят
Ответ написан
@XEN4ik
Это очень спорно. Я раньше разрабатывал на vcl на ++ а мой коллега писал интегрируемое со мной По на delphi и мы оба перешли на C# и не он не я не хотим возвращаться назад. В C# есть простота и лаконечность помоему. Delphi достаточно сильный язык, но по мне лучше переходить тогда на стек c++ vcl или там firemanky уже. От этого больше профита и api для этих фреймворков одинаковое. Но я бы на delphi не пошёл.
Ответ написан
@PEMOK
Что там изучать, если владете C# проблем нет. Pl/sql тотже синтаксис
Ответ написан
Nashev
@Nashev
Как и в любой области, где количество специалистов падает, их зарплата растёт. Но постепенно сокращается и количество вакансий.

И да, на нынешнем этапе для Дельфистов больше предлагают поддерживать или портировать всяческое легаси. Шансы начать писать что-то новое в связи с развитием Дельфи начинают расти, но пока они в зачаточном состоянии... И не факт, что вырастут.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы