Чем отличаются C++ Builder, Delphi i MS VC++?
Начнём с так назыщаемых "пакетов быстрой разработки программных приложений". Если присмотрется поближе, Borland C++ Builder и Delphi - собственно один и тот же продукт, только названия у них разные. Хотел было написать что отличаются языком программирощания, но даже сдесь Borland не отличился. Если кто сравнивал код асемблера, генерируемый Builderем и Delphi, наверняка заметил что между их компилерами никакой разницы нет. Единственное что изменили программисты Borlandа создавая Builder - так называемый lexycal analyzer, т.е. алгоримы анализа самого текста программы. Ограниченный внутренней архитектурой до границ Паскаля, Builder трудно назвать полноценным компилером C++. Эти ограничения особенно заметны со стороны поддержки макр, вставок в асемблере и разного рода inline кода, отчасти потому что программистам Imprise было лень, отчасти потому что в Паскале никаких макр не существует вообще. В любом случае, код генерируемый компилером а'ля Borland/Iprise содержит кучу ненужного мусора и выполняется медленно (в документации по Delphi вполне открыто рекомендуют ни при каких условиях не отключать оптимализацию), a так называемый Pentium Instruction Scheduling отсутствует напрочь. Было время когда я болел Borlandом и следил за "развитием" их компилера. Программеры Borlanda на компилер по всей видимости положили, следить было незачем, и я быстро выздоровел.
Конечно, а как же иначе. Библиотека VCL. Надеюсь ни для кого не секрет что C++ Builder и Delphi юзают одни и те же компоненты VCL, написанные на Паскале. Используя VCL быстро и без особых усилий можно "написать" даже относительно широкие проекты. К сожалению на этом удобство VCL заканчивается, а начинаются глюки. То что простейшая прога весит мегабайты и работает медленно - пол беды. Гораздо хуже, что работает она не всегда. Проблема не в том что программеры Borlanda не умеют, только Win32 SDK и MSDN не отличаются особым "пустословием". Тем от команды Microsoft гораздо проще. Есть проблема - стучись в соседнюю дверь, а там всё расскажут и покажут. Хотя, надо сказать, что в последних версиях VCL как будто бы все критические ошибки уже устранены и можно юзать со спокойной душой. Моя душа к спокойным не относится. Помнится как в Delphi 4 наткнулся на ошибку GDI зашитую в VCL, которая выступала не сразу а примерно через час активной работы с графическими файлами, и то, как неприятно писать прогу обходными путями. VCL скрывает перед программистом все вызовы API. Выражаясь иначе, начинаюший (горе) программер понятия не имеет "как оно всё такое пашет внатуре". А такие знания - только капля в море. Без них о работе программером в нормальной фирме можно даже не мечтать. Вот вам в двух словах весь C++ Builder и зачем туды его в качель.
Те, кто изучал библиотеку MFC и сравнивал её с VCL наверняка заметили, что некоторые коментарии из MFC слово в слово скопированы в Паскалевские VCL. Borland продвинул гору работы, переписывая MFC на Паскаль (ведь что то продавать надо). Конечно, при этом капитально перетрясли внутреннюю архитектуру классов переделывая её на Паскелевский лад, но иерархию, не считая некоторых изменений, оставили практически нетронутой. Держа под рукой MSDN выучить MFC так же просто как VCL, но толку от него, по моему, немного больше (за пример можно взять тот же Codejock Software для MFC:
Ссылка скрыта от гостей
.
Builderом трудно собирать большие проекты. Компиляция уже 20-ти средней длинны унитов длится века, а IDE, отслеживая возможные изменения, начинает заметно подвисать. Для сравнения, соборка проекта, состоящего из 274 фалов под MS VC++ 6.0, проходит без каких либо звисов.
Так постепенно переходим к продуктам от Microsoft. Сегодня найти что либо ниже Visual Studio .NET будет, наверное, сложно (Visual Studio 6.0 было выпущено в 6 лет назад). В новом Visual Studio появилась новая фича: .NET. Тем кто не в танке, обясняю: программы, написанные в C#, компилируются не на код ассемблера в опкодах процессора, только на внутрренний формат команд дла последуюшего выполнения на виртуальной машине .NET Framework (собственно интерпреторе макрокоманд как у Java JRE). К слову, лично я от чисто нетовских приложений не ташусь, да и C# толком опробовать времени не было. "Не нравиатся мне они", потому что для того чтобы реверснуть такое приложение большого ума не надо, а мало кто из нас в сегодняшние времена святым духом питается. Вообще то, ставить VC++ с одной стрроны а C++ Builder и Delphi с другой, примерно как сравнивать сами знаете что с пальцем. Достаточно посмотреть на скорость работы первой под руку попавшейся Delphi и Visual Studio .NET. Есть разница? 8..10 раз? Может быстрее? А ведь в Visual Studio примочек гораздо больше, да и покрасивее они. О компилере VC можно говорить долго и упрно. Вот только зачем. Даже "самый продвинутый" линуховатый компилер Cygnus GCC уступает VC по качеству выходного кода. Снова, дла тех кто в танке и на досуге диассемблировал ядро Windowsа XP, наверняка заметил что код внутри некоторых DLL-ек и SYS-ек выгладит как будто бы был написан в MASM. А вот и нифига. Просто Microsoft использовал свой новый компилер, в которым анализирует и оптимализирует прогу именно линкер (в VS .NET такого ещё нет
. По словам самого Microsoft, операция позволяет ускорить выполнение кода на 30..50% (что близко к реальности). Насколько мне известно, аналогов такого анализатора для процессоров 80x86 больше никто не написал. Вот такие пироги с котятами.
Borlandом совершенно не скомпилиш виртуальный драйвер, а даже простая графика, если не асемблирована, выполняется очень медленно. Например, кто бы пользовался такой программой, как eMule, будь она написана на Делфях? Тяжёлый случай.
Хотя, как говорится, каждому своё, может я в корне не прав. Выбор языка программирования и IDE в большой степени зависит от вида деятельности и качества реализуемого проекта. В любом случае, удачи вам, чтобы вы не делали
PS: К сожалению, не успел поглядеть на C++ BuilderX, если кому не трудно, опишите хотябы в двух словах, чо то за рыба и с чем её едят. Стоит ставить или пускай лежит?