Delphi против C ++ Builder - что лучше выбрать для Java-программиста, работающего с Win32

StackOverflow https://stackoverflow.com/questions/180358

Вопрос

Я довольно опытный 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 exes и библиотек DLL, и почему?В чем вы видите плюсы и минусы каждого из них?

Это было полезно?

Решение

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

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

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

Дельфы:

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

Конструктор C++

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

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

Другие советы

Используйте Delphi, и вы можете использовать API Boehm 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 ++ с его объектами на основе стека и кучи означает, что у вас есть немного больше для изучения и больше возможностей для решения проблем.

После работы с компиляторами 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, встроенное программирование в реальном времени), но в неопытных руках он может вас укусить.

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

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

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

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

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

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

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

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

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

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

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

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

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

На самом деле редактор графического интерфейса C ++ Builder - это точно такой же редактор, и он работает точно так же. Это фантастика.

.Net имеет огромное количество классов, очень похожих на Java. C # имеет синтаксис схожий с Java и из-за огромной библиотеки классов работает довольно схожим образом. И это совершенно адекватная среда для программирования. Но, честно говоря, Delphi - гораздо более приятный язык, IDE и общая среда для работы. C # был разработан тем же человеком, который разработал Delphi и "чувствует" во многих отношениях очень похожи, поэтому не думайте, что, поскольку Delphi компилируется в нативный код (хотя вы также можете использовать Delphi .Net), использовать его принципиально сложнее. Это совсем не так.

Моя личная рекомендация была бы для Delphi, потому что это крутой язык. Однако, если вы заинтересованы в изучении C ++, C ++ Builder, возможно, является наилучшим способом сделать это.

Я профессионально программирую на Delphi в течение последних 10 лет и хорошо знаю C ++. Я бы пошел по пути Дельфи. Синтаксис намного проще и управление памятью тоже. Этот GC для нативного Delphi я еще не слышал ... Хотя мне не очень понравились ловушки в коде Delphi.Net, представленные из-за .NET gc, я не очень люблю gcs; -)

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top