Delphi против C # для программирования GUI [закрыто]

20

Я пришел из PHP и Python с небольшим знанием C, я сделал много веб-приложений, сейчас я думаю о Desktop-приложении для платформы Windows.

Один мой друг сказал мне пойти на Delphi, а другие говорят, что C # - лучший, ну, я ищу

  1. Простота
  2. производительность
  3. Хорошая документация по API
  4. скорость
  5. Перетаскивание
  6. Многопоточность и хороший сетевой API

Благодарность

elf1984
источник

Ответы:

20

Delphi, определенно:

  1. Простота - синтаксис Delphi основан на Pascal, который был явно разработан, чтобы его было легко изучить, и он может выполнить это обещание. C # основан на семействе C, которого ... ну ... не было .
  2. Производительность - Delphi является потомком Turbo Pascal, и у него все еще есть самый быстрый из известных человеку компиляторов, который значительно повысит вашу производительность. Кроме того, у него есть отладчик, который Visual Studio хочет, чтобы его отладчик был таким, как когда он вырастет. Особенно в последней версии Delphi, отладка намного проще.
  3. Хорошая документация по API - в наши дни «API» - довольно расплывчатое слово, охватывающее все виды вещей. Я предполагаю, что вы имеете в виду библиотеки, и здесь это своего рода бросок. Как .NET Framework, так и стандартные библиотеки Delphi имеют хорошую онлайн-документацию и посредственную, сложную в использовании автономную документацию. (Это следствие того, что команда Delphi решила использовать ту же ужасную справочную систему, что и Visual Studio, от которой, как мы надеемся, они уйдут в следующей версии.)
  4. Скорость - Delphi легко побеждает. Он компилируется в собственный код (более быстрое выполнение и намного более быстрый запуск, потому что нет фазы JIT), и он не использует управляемые указатели, поэтому доступ к объектам происходит быстрее и менее вреден для кэша.
  5. Drag and Drop - встроенная функция VCL.
  6. Многопоточность - в Delphi есть встроенный класс потоков, но если вы хотите делать сложные вещи с параллелизмом, есть лучшие варианты. Primoz Gabrijelcic, член сообщества Delphi, работает над превосходной библиотекой параллелизма, в которую я помог внести свой вклад. Он обеспечивает поддержку высокого уровня для общих целей потоков, таких как пул задач, параллельные циклы FOR и многоступенчатые конвейерные процессы.
  7. Хороший сетевой API - Delphi поставляется с Indy, зрелой библиотекой с открытым исходным кодом, которая позволяет легко устанавливать и управлять интернет-соединениями. Мы используем его на работе, чтобы обеспечить коммуникационный уровень для ведущего в отрасли приложения, о котором вы, вероятно, никогда не слышали, если не работаете в вещательных СМИ.
  8. Развертывание - это не было в вашем списке, но стоит упомянуть. Есть еще системы, в которых нет предустановленной платформы .NET. По умолчанию Delphi компилирует свою стандартную библиотеку в EXE-файл, а затем использует Smartlinker для удаления частей, которые вы не используете, что приводит к небольшим EXE-файлам, которые не зависят от массивных библиотек времени выполнения, которые весят сотни МБ, которые будут у ваших пользователей. скачать и установить отдельно.
Мейсон Уилер
источник
2
@Elf: Возможно, будет доступно больше рабочих мест на C #, но за них будут бороться и другие люди. Опытные разработчики Delphi без проблем находят работу.
Мейсон Уилер
5
C # основан не только на C ++, но также на Delphi и Java. Я тоже изучил программирование на Паскале, и я очень много вижу в философии C #. Что касается управляемых указателей, вы получаете это задом наперед, нет никаких накладных расходов на доступ к данным через управляемые указатели, и их изменение происходит быстрее, чем в системе, использующей подсчет ссылок.
Guffa
12
Легко выучить синтаксис Delphi - это совершенно субъективное утверждение. Я был взбешен синтаксисом Delphi и по этой причине решил не изучать его.
Тьяарт
8
-1: Этот ответ предвзят, как сумасшедший. Отладчик Visual Studio по крайней мере так же хорош, если не лучше, чем Delphi. Документация на Delphi несущественна по сравнению с MSDN, которая является лучшей из когда-либо созданных.
Марко-Фисет
4
Развертывание - полный провал. Deplhi требует Windows, так что это шаг назад от C #. C # является портативным и мультиплатформенным благодаря Mono. Delphi нет. Вам не нужно покупать Windows для запуска программы, написанной на C #, в которой явно не используются библиотеки Win32. Простота - тоже неудача. Синтаксис C # очень легко читается, очень лаконичен и прост в написании. Delphi нет. Документация по API - черт возьми, нет! Если я напишу «веб-сервис C #», я получу массу соответствующих результатов. Нет таких вещей для Delphi. Скорость, многопоточность, особенно отладчик - тоже ложь.
TheLonelyCoder
15

C #, как правило, будет иметь большую пользовательскую базу, больше разработки в будущем, и инструменты для разработки RAD через Visual Studio невероятны.

  1. Синтаксис будет похож на тот, который вы использовали в PHP и C.
  2. Visual Studio с его инструментами и IntelliSense чрезвычайно продуктивен.
  3. MSDN
  4. Опять же, инструменты VS + Intellisense, но скорость действительно зависит от знания вашего языка и его особенностей.
  5. VS дизайнер для WinForms, WPF.
  6. System.Threading и System.Net

У меня нет большого опыта работы с Delphi, и я просто говорю о своем опыте работы с C # в целом. Там, где я работаю, у меня очень сжатые сроки, предусмотренные непрограммистами, и я могу очень быстро откачивать линейку бизнес-приложений для настольных компьютеров. За последние три недели я прошел путь от спецификации до развертывания в двух LOB-приложениях winforms. Производительность разработки GUI на C # с VS просто сумасшедшая.

bunglestink
источник
4
Спасибо, согласно сообщению на daniweb.com/forums/thread54305.html , интеграция Win32 API и полнота в Delphi превосходят даже C
elf1984
2
вам действительно стоит заглянуть в Delphi, если вы думаете, что C # является идеальной средой разработки для быстрого создания настольных приложений. Лично я ненавижу, когда мне приходится создавать настольные приложения в Visual Studio, но в настоящее время у меня не всегда есть выбор (к сожалению).
Воутер ван Нифтерик
1
Откровенно говоря, инструменты Visual Studio RAD (дизайн форм) отстой.
Уоррен Р
1
@ WarrenP Не могли бы вы уточнить?
Тьяарт
1
Создайте серверное приложение на C # и создайте настольное приложение на Delphi, потому что delphi создает собственный код, который сложнее взломать!
Justyy
14

Оба имеют все 6 очков, которые вы хотите, но я чувствую, что C # имеет преимущество в большинстве, если не во всех.

Чтобы пройти через пункты:

  1. Delphi требует управления памятью, так что вы могли бы утверждать, что одно делает C # проще. В принятом ответе упоминается синтаксис, так что синтаксис C # похож на PHP и Java, поэтому, если вы хотите быстрее начать работу с любым из этих фонов, тогда C # имеет преимущество.
  2. Производительность, я думаю, вы делаете больше быстрее в C #. Библиотека .net дает вам так много, что в старые добрые времена мне приходилось искать сторонние компоненты delphi.
  3. Документация, Delphi всегда была хороша, MSDN лучше, плюс вы найдете большее сообщество для поддержки, см. Мой анализ переполнения стека ниже.
  4. Скорость, Delphi может иметь преимущество в этом, но сборка превосходит все, так что это обычно не является хорошей причиной для выбора языка. Я хотел бы отметить одну вещь: я слышал, что люди ссылаются на то, что C # интерпретируется. Это не так, никогда не было, у него всегда был JIT.
  5. Перетащите, доступны на обоих.
  6. Многопоточность, Delphi хорош, но C # отлично подходит для встроенных конструкций, таких как lock(){}параллельные расширения и новые await.

Дополнительное замечание, название вопроса - это программирование с использованием графического интерфейса, для этого я большой поклонник .nets WPF, единственной вещью, которая была у Delphi, которая была наполовину близка, был Bold , который был умиротворяющим и теперь мертвым.

Размер сообщества, сравнивая количество вопросов по этому вопросу и переполнение стека для тегов Delphi и C #, вы увидите, что размер сообщества C # намного больше.

Переполнение стека:

  • Delphi 17K
  • C # 367K
  • Java 312K
  • с 73K

Я добавил c, чтобы показать, что это не проблема с возрастом языков и Javaпросто для сравнения.

Я не фанат C # или Java, я был большим фанатом Delphi, профессиональным чистым разработчиком Delphi в течение 7 лет, но они действительно облажались с 2005 года, когда их плохо набросился на .net, что испортило стабильность IDE даже для 32-битной компиляции. Delphi 7 был на пике языка, на мой взгляд.

Уэстон
источник
Как насчет ответа с этим downvote?
Уэстон
1
Я не downvoter, но я бы сказал, что вы не отвечаете на вопрос. Вы только что оценили популярность Delphi на stackoverflow. Вы уверены, что сделали точку, но это ИМХО довольно незначительно. Быть единственным, кто использует технологию, не всегда плохо.
Саймон Бергот
@ Симон честно, теперь я ответил на все вопросы и интегрировал анализ количества вопросов в более широкий вопрос о размере сообщества.
Уэстон
Можно утверждать, что язык, который приводит к большему количеству вопросов, более сложен в использовании. ;-) Чем Bold похож на WPF? Я использовал WPF и не видел никаких сходств.
Джим Маккит
@JimMcKeeth И Bold, и WPF предоставляют платформу для привязки данных к элементам управления пользовательского интерфейса, чтобы при изменении данных пользовательский интерфейс обновлялся и наоборот при необходимости.
Уэстон
8

Когда я учился в университете, меня учили программированию в Delphi. Я немного заржавел, но сейчас читаю много кода на Delphi, чтобы перенести его в приложение на C #.

Я очень предпочитаю ОО с функциональными склонностями C # по сравнению с процедурным с ОО Delphi. Вы должны учитывать, как вы предпочитаете кодировать при выборе между ними. Я не думаю, что в этом есть что-то особенное, когда речь идет о простоте - просто то, что вам легче. То же самое касается производительности.

С точки зрения RAD (быстрой разработки приложений) между winforms и дизайном Delphi GUI не так много. Они напоминают мне друг друга.

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

Я не думаю, что есть большая разница между качеством и охватом документации, предоставленной поставщиком для C # или Delphi. Я думаю, что вы найдете больше информации о C #, не относящейся к поставщикам, но это может быть только потому, что я не особо много искал на пути к Delphi.

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

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

В целом я бы пошел с C # /. NET. Это частично из-за WPF, но я также предпочитаю код, который я пишу на C #. Насколько я знаю, у delphi нет ничего похожего на Linq, что я считаю бесценным.

Мэтт Эллен
источник
Спасибо за ваш чудесный ответ. какую книгу ты прочитал как новичок? теперь я буду запускать C # 4 и .NET 4 на VS 2010
elf1984
4
Будьте осторожны, пытаясь портировать приложение Delphi на C #. Каждый раз, когда я слышал о какой-либо компании, пробующей это, они заканчивали проверкой каждого пункта, который Джоэл сделал в «Вещи, которые вы никогда не должны делать, часть 1», и это заканчивалось катастрофой для продукта и компании, которой он принадлежит.
Мейсон Уилер
Извините, я не могу посоветовать вам книгу для начинающих для c # 4. Я не уверен, что у меня был один, когда я начал c # (назад в 1.1 днях. Я уверен, что были некоторые, но я не читал один). Когда я начинал, я думаю, что первой книгой, которую я использовал, была книга «Обучай себя С ++ за 21 день» Джесси Либерти, которую я прочитал до того, как начал работать в универе. Мне понадобились годы, чтобы пройти через это, но я многому научился. Еще одна хорошая книга, которая была у меня, была «Discover Delphi», это была книга для курса. Книга, которую я рекомендую, - «Объектное мышление» Дэвида Уэста, поскольку она действительно заставляет вас задуматься об ООП и ООД, а также об эффективном C # Билла Вагнера ...
Мэтт Эллен,
... Они не новички, но если у вас есть основы, у них есть отличные советы и рекомендации о том, как стать лучшим программистом.
Мэтт Эллен
Кстати, если вы ищете LINQ в Delphi, посмотрите библиотеку DeHL Александру Чобану. Он предоставляет коллекции и операторы в стиле LINQ. Синтаксис LINQ (псевдо-SQL) еще не реализован в Delphi, но, очевидно, команда над ним работает над будущим выпуском.
Мейсон Уилер