Delphi против C ++ Builder - что лучше для программиста на Java, работающего с Win32 - PullRequest
15 голосов
/ 08 октября 2008

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

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

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

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

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

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

Ответы [ 12 ]

22 голосов
/ 11 октября 2008

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

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

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

Delphi:

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

C ++ Builder

  • FOR: C ++ Builder 2009, вероятно, лучшая версия за всю историю
  • FOR: идиома RAII значительно упрощает управление памятью
  • FOR: шаблоны невероятно полезны и мощны, даже если в реализации C ++ Builder есть некоторые ошибки.
  • FOR: поддержка BOOST и других современных библиотек на основе шаблонов (хотя поддержка Boost не на 100%)
  • FOR: отличное взаимодействие с Delphi означает, что большинство компонентов Delphi можно легко использовать.
  • FOR: Легко использовать с библиотеками / библиотеками третьих сторон с заголовками C / C ++.
  • ЗА: 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 голосов
/ 08 октября 2008

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

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

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

7 голосов
/ 08 октября 2008

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

MyObj = TMyObj.Create;

try
  MyObj.DoSomething;
finally
  MyObj.Free;
end

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

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

6 голосов
/ 14 октября 2008

После работы с компиляторами 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 и сторонними компонентами. Никакой шумихи, только факты.

5 голосов
/ 08 октября 2008

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

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

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

2 голосов
/ 20 декабря 2008

В C ++ VCL я не смог ничего сделать, чего бы я не смог сделать с Delphi VCL, и почти все компоненты Delphi работают нормально в C ++ Builder. Поскольку я программирую как для Windows, так и для UNIX, C ++ более переносим.

Если вы используете C ++ STL или другую хорошо спроектированную библиотеку для своих контейнеров, сбор мусора становится спорным пунктом, а в остальном ручной сборщик мусора не представляет трудностей (быстро выучите хорошие привычки - которые вы должны практиковать в любом случае независимо от ГХ). Пока вы используете RAII там, где это возможно, сохраняйте управление памятью в контейнерах, не забывайте о владении объектами и используйте указатели только в качестве нулевых ссылок (все это вы должны делать независимо от языка), GC действительно не должен быть выпуск.

2 голосов
/ 09 октября 2008

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

также читал этот блог из бывшей Java, а теперь - парень, который руководил большей частью работы с базами данных и датаснапом в Delphi. Стив Шонесси, о своем опыте программирования Delphi после 10 лет Java :-) http://blogs.codegear.com/steveshaughnessy/2006/12/03/30193

2 голосов
/ 08 октября 2008

Конечно, синтаксис java больше похож на c ++, чем на delphi, но я думаю, что объектная модель больше похожа на delphi:

  • одиночное наследование. Интерфейсы существуют, но больше похожи на COM, чем на Java-интерфейсы.
  • объекты размещаются в куче и доступны по ссылке

вы можете найти статью, сравнивающую три языка здесь

1 голос
/ 13 января 2009

Если вы собираетесь много заниматься программированием на Windows, изучите C ++. Будете ли вы изучать немецкий язык при подготовке к поездке во Францию? C / C ++ является родным языком Windows API. Работа с структурами данных WinAPI и вызовами в C / C ++ намного проще. Что касается RAD, я использую MSVC около 13 лет, и я могу собрать приложение с графическим интерфейсом так же быстро, как и любой другой, используя графический редактор Visual Studio.

1 голос
/ 13 октября 2008

Одна вещь, которую я забыл упомянуть раньше:

С точки зрения затрат, вам не нужно выбирать. Купите пакет RAD Studio , и за небольшую дополнительную плату за один отдельный язык вы получите и Delphi , и C ++ Builder в одной IDE.

И стоит отметить, что пакет C ++ Builder включает в себя компилятор Delphi, и вы можете писать / добавлять файлы .pas Delphi и включать их в свои проекты C ++.

...