Цели, как всегда, две:
а) заценить
б) высказаться
Итак, это не программа, а статья. Называется "Призрак Крутого Компилятора". Расскажет о проблеме выбора компиляторов (в общем плане).
Начнем?
Призрак Крутого Компилятора,
или происки вездесущего комплекса неполноценности
В магазин, торгующий компакт-дисками, зашел еще один посетитель. С важным видом он подошел к витрине, осмотрел стенды отсутствующим взглядом и, разочарованный, направился к выходу. Явно не желающий терять клиента, продавец поспешно подбежал к нему и сладким голосом спросил: "Что вы ищете? Я могу вам помочь!"
"Мне нужен Самый Крутой Компилятор в мире", - ответил тот. "Но, позвольте, такого компилятора не существует!" - объяснил удивившийся до невозможности продавец. "Что же вы мне посоветуете тогда?" - спросил покупатель. "Ну, я полагаю, для начала этого должно хватить" - сказал довольный продавец. Через 2 минуты господин скрылся за углом, прижимая к груди драгоценный диск "Технологии программирования для чайников".
Введение
К чему это я? Ведь Самого Крутого Компилятора не было и не будет никогда. Все это шутки программистов, не так ли?
Моим ответом будет: и да, и нет.
За многие годы развития компьютерной индустрии были созданы десятки различных языков программирования и сотни компиляторов к ним. Разные языки создавались для разных целей: одни - для тонкого взаимодействия с "железом", другие - для обучения, третьи - для автоматизации работы...
Вечные поиски
Попытки найти самый лучший язык программирования и самый крутой компилятор для этого языка предпринимаются с завидной регулярностью. В программистских интернет-форумах не утихают "религиозные войны" - вместо того, чтобы заниматься полезными делами, многие форумцы до хрипоты спорят, какой же язык лучше: C++ или Object Pascal? А может быть VB.NET или C#? Некоторые даже устраивают своеобразные "крестовые походы" против не симпатичных им языков программирования.
Но, позвольте, ведь язык программирования - это всего лишь протокол, который позволяет вам отдавать команды компьютерной системе и получать от нее отклики. Вот и все! Кому-то нравятся фигурные скобки ({ и }) C, C++, C# или Java. Кто-то обожает строковые операторы Visual Basic 6, а еще кто-то просто балдеет при виде Паскалевских инструкций begin и end!
Проблема выбора
Однако, несмотря на то, что выбор языка программирования во многом - дело вкуса, решающим фактором (особенно при программировании "чистых", не .NET-приложений) очень часто становятся его функциональные возможности. Если вам нужны ассемблерные вставки и работа с указателями, то бессмысленно выбирать VB. Точно так же, никакой программист в здравом уме и доброй памяти не будет писать драйвер для клавиатуры на Java, даже если он ярый поклонник продукции Sun Microsystems.
Зато на Java получаются замечательные интерактивные Интернет-приложения, а Visual Basic идеально подходит для быстрого и легкого создания программ с удобным интерфейсом (RAD, Rapid Application Development).
О компиляторах
Если с выбором языка программирования все более-менее ясно (популярных не так много), то с выбором компилятора возникают определенные трудности. Каждая уважающая себя софтверная и не только фирма выпускает свои компиляторы популярных языков программирования (часто поставляемые вместе с интегрированными средами разработки вроде Visual Studio.)
Безусловным лидером по количеству разных компиляторов является C++ - он представлен такими монстрами, как Borland C++, Microsoft Visual C++, Intel C++ Compiler, GCC, наряду с менее известными компиляторами... Паскаль и Бэйсик в их современном воплощении тоже не обделены по этой части - есть Borland Delphi и Free Pascal, Visual Basic и VB.NET с PowerBASIC'ом и DarkBASIC'ом.
Если бы я ставил своей целью сравнение возможностей компиляторов, я бы поставил какой-нибудь примитивный тест, снабдил бы вас чертовой кучей графиков, диаграмм и прочей дребедени и не отметил бы главного - разные компиляторы делались тоже для разных целей! Одни эффективно оптимизируют циклы и ветвления (условные переходы), другие генерируют компактный код, третьи обладают замечательной переносимостью...
Итак, при выборе компилятора надо прежде всего определиться с тем, что вы хотите получить на выходе. Если вас все-таки гложет любопытство насчет результатов тестов, поищите в Google по фразе "сравнение компиляторов" - узнаете много нового и интересного.
О технологии .NET
Технология .NET - это, без сомнения, интересная штука. Если вы уже программировали на CLS-совместимом языке (VB.NET, C#, C++.NET, JScript, Delphi 8...), то по достоинству оценили всю ее гибкость и мощь. Тем же, кто только хочет освоить ее, посоветую: не бойтесь работать по-другому. Ведь технология .NET радикально меняет всю парадигму Windows-программирования и программирования для Интернета (а с выходом Mono 1.0 и программирования для Linux)!
Одним из самых коренных изменений в .NET является то, что компиляция (в привычном смысле этого слова) откладывается до времени установки или первого выполнения приложения. .NET компиляторы на самом деле компилируют в некий общий для всех промежуточный язык (IL, Intermediate Language), который при запуске преобразуется в машинный код. Именно поэтому не существует принципиальных отличий между .NET-языками, а проблема выбора между ними не стоит так остро. Программисты же, страдавшие комплексом неполноценности (во как!) из-за несколько ограниченных возможностей языка и издевательств со стороны "братьев по разуму", довольно потирают руки: .NET - это идея всеобщего братства
Как говорится, выбирай на вкус!
Вместо заключения
Вот и все. Выбор языка программирования (и компилятора к нему) остается за вами, и пусть это решение будет правильным!
Кстати, знаете ли вы о том, что название знаменитого Linux'овского GCC (GNU C/++ Compiler - бесплатный компилятор Си/Си++) можно расшифровать и как Ghost of a Cool Compiler - призрак крутого компилятора?
ЗЫ. Если вам вдруг понравится, я ее размещу на VBStreets.