Delphi против C ++ Builder - лучший выбор для Java-программиста Doing Win32

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

Я провел месяц или около того, играя с Delphi 2009. Мне нравится материал VCL GUI, Delphi кажется более подходящим для вызовов Windows API, чем VB6, мне очень нравится, что он намного лучше в OO, чем VB6, и мне нравится блок -testing, которая поставляется с IDE.

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

Я могу обрабатывать Delphi, но мне интересно, может ли C ++ Builder 2009 быть лучшим выбором для меня. Я очень мало знаю о C ++ Builder и C ++, но потом я тоже очень мало знаю о Delphi. Я знаю, что есть много языка C ++, но я подозреваю, что нужно только знать его подмножество, чтобы сделать что-то полезное ... Я слышал, что C ++ сегодня намного эффективнее программировать, чем C ++ 10 лет назад.

Я буду заниматься новой разработкой, поэтому мне не нужно будет осваивать все аспекты языка C ++ - если я смогу найти эквивалент для каждой из языковых функций Java, я буду достаточно доволен, и по мере того, как я продвигаюсь, я мог бы начать искать на более продвинутых материалах немного больше. (Извините, если это звучит мучительно наивно - если так, пожалуйста, задайте мне прямо!)

Итак, для программиста Java, нового для Delphi и C ++ Builder, который вы считаете лучшим выбором для продуктивной разработки Win32 exes и dll и почему? Что вы видите в плюсах и минусах каждого?

java,c++,delphi,winapi,c++builder,

15

Ответов: 12


22 ование принято

Delphi или C ++ Builder - это сложный выбор!

Как вы знаете, они в основном очень похожи, с точки зрения IDE и RAD.

Все плюсы и минусы каждого - независимо от фона - немного похожи на это. Оба имеют большой 2-сторонний RAD-конструктор форм и фреймворк (VCL), которые идеально подходят для разработки на родной Windows.

Delphi:

  • FOR: большое, активное, восторженное сообщество
  • FOR: Delphi 2009 - лучшая версия на протяжении многих лет
  • FOR: Delphi "units" делает пары исходных / заголовочных файлов C кажущимися архаичными
  • ПРОТИВ: Нет автоматического уничтожения, поскольку объекты оставляют область видимости, поэтому много «наконец-то в вашем коде
  • ПРОТИВ: язык может быть «многословным», что является вопросом вкуса
  • ПРОТИВ: Использование сторонних библиотек DLL или библиотек на других языках (например, C) требует, чтобы файлы заголовков Delphi записывались

C ++ Builder

  • FOR: C ++ Builder 2009, вероятно, является лучшей версией когда-либо
  • FOR: Идиома RAII упрощает управление памятью
  • FOR: Шаблоны невероятно полезны и мощны, даже если реализация C ++ Builder содержит некоторые ошибки.
  • FOR: поддержка BOOST и других современных основанных на шаблонах библиотек (хотя поддержка Boost не на 100%)
  • FOR: Великолепное взаимодействие с Delphi означает, что большинство компонентов Delphi можно легко использовать.
  • FOR: Прост в использовании с DLL-библиотеками третьих сторон / библиотеками с заголовками C / C ++.
  • FOR: C ++ может выглядеть лучше на CV, чем Delphi.
  • ПРОТИВ: CB2009 «только для юникода» - последствия этого для переносимости кода различны и менее продуманны, чем для Delphi
  • ПРОТИВ: пользовательская база C ++ Builder намного меньше, чем Delphi. Может быть, 20% или меньше.
  • ПРОТИВ: Borland / Inprise чуть не убили BCB несколько лет назад, и он был воскрешен только после крупных усилий со стороны сообщества. (Тем не менее, приверженность Codegear / Embarcadero действительно впечатляет)
  • ПРОТИВ: C ++ Builder не является вершиной кучи внутри Codegear.
  • ПРОТИВ: сторонние поставщики компонентов не всегда понимают / поддерживают C ++ Builder

Вот и все. Чтобы заявить о своей позиции, я счастливый пользователь BCB2007 / 2009 (с BCB5), и я также редко использую Delphi. Несколько лет назад я рассматривал переход с C ++ на Delphi, но отсутствие идиомы RAII было единственной вещью, с которой мне трудно было с ней договориться.


9

Пойдите с Delphi, и вы можете использовать API-интерфейс Boomm Garbage Collector, написанный Барри Келли, чтобы вы могли собрать мусор в Delphi. Барри написал это, прежде чем он отправился работать на CodeGear в качестве архитектора компилятора. У этого есть проблемы с действительно большими приложениями, и, скорее всего, он не будет работать с 64-битным Delphi. Он говорит об этом довольно немного в этом интервью подкаста .

Даже если вы не используете этот менеджер сбора мусора, я бы по-прежнему рекомендовал Delphi над C ++. Единственное преимущество, которое C ++ дает вам для общего развития, - это фигурный синтаксис привязки. Если вы не против синтаксиса Delphi, то для большинства вещей вы найдете это лучше. Предоставленный C ++ Builder имеет весь Delphi VCL и RTL, поэтому это не так плохо, как Visual C ++, но я все же думаю, что Delphi будет лучшим выбором.

Для надстроек Excel (как вы упомянули в своем комментарии) я бы порекомендовал Delphi над C ++ builder, потому что он имеет лучшую поддержку COM (что, я считаю, вам нужно для надстроек Excel).


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

MyObj = TMyObj.Create;

try
  MyObj.DoSomething;
finally
  MyObj.Free;
end

В Delphi все ваши объекты выделены в куче, поэтому правило очень просто, если вы создадите его, вы освободите его.

C ++ с его стеком и основанной на куче objs означает, что у вас есть немного больше возможностей для изучения и больше возможностей для попадания в неприятности.


6

После работы с компиляторами Borland C и C ++ с BCC 4.1 / DOS и Delphi с 3.0 по 2007 год я могу сказать вам честно, что вы находитесь в отличном приключении в любом случае. Переход с C / C ++ на Borland Builder и RAD IDE - это существенный сдвиг парадигмы (и кривая обучения) от Microsoft VC ++, C ++ и .NET (использовали VC из первой версии MS-DOS - бежевые три кольцевые мини-вставки).

Выбор между C ++ и Delphi - это тот, который я предлагаю вам сделать после того, как ваши ноги станут влажными в нескольких проектах с небольшим или средним размером на обоих языках. Я начал программист на C и примерно через пять лет переключился на Delphi (V3.0), когда VCL просто сделал программирование Windows намного проще и продуктивнее.

Будьте осторожны, Delphi - соблазнительный язык для программистов, поступающих с других языков, таких как COBOL, FORTRAN, VisualBasic, потому что его синтаксические и кодовые правила применяют некую дисциплину, которая не дает проблемы. Сложность и сырая металлическая мощь C делают его отличным языком системного программирования (драйверы устройств, код O / S, встроенное программирование в реальном времени), но в неопытных руках он может вас укусить.

Borland C ++ Builder (Delphi VCL, добавленный к компилятору C ++) отнимает много острых краев C ++ и является моим вторым любимым языком. Поскольку Borland добавила поддержку .NET для обоих языков, есть сильный аргумент в использовании Builder вместо VC ++ для программирования на базе MS. Хотя C # имеет большое количество «дружелюбия», встроенного по сравнению с C ++, если я его нажал, я все равно буду придерживаться Delphi или Builder, если бы я только начинал.

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


Лично я считаю, что помимо различий между языками существуют другие важные соображения. Например, Delphi IDE полностью поражает воображение для создания GUI в стиле WYSIWYG. Я не использовал C ++ Builder IDE, но я был бы очень удивлен, если у него есть GUI-конструктор, который так же хорош, как Delphi.

Хотя внешне синтаксис C ++ больше похож на синтаксис Java, объектная модель Delphi на самом деле ближе к силе Java. Хотя указатели существуют в Delphi, на практике ссылки на объекты (например, на Java) используются в 99% случаев. Даже в современном C ++ я не думаю, что можно избежать указателей. Не то, чтобы что-то не так с указателями, но на практике ....

В личном плане я в основном являюсь Java-парнем, но два года работал с Delphi и возвращался к нему в одно мгновение. Напротив, у меня есть только очень ограниченный опыт работы с C ++ и вы предпочитаете чистить туалеты, чем возвращаться на этот язык :)

Java, C ++, Delphi, WinAPI, C ++ Builder,
Похожие вопросы