В магазин, торгующий компакт-дисками, зашел еще один посетитель. С важным видом он подошел к витрине, осмотрел стенды отсутствующим взглядом и, разочарованный, направился к выходу. Явно не желающий терять клиента, продавец поспешно подбежал к нему и сладким голосом спросил: "Что вы ищете? Я могу вам помочь!" "Мне нужен Самый Крутой Компилятор в мире", - ответил тот. "Но, позвольте, такого компилятора не существует!" - объяснил удивившийся до невозможности продавец. "Что же вы мне посоветуете тогда?" - спросил покупатель. "Ну, я полагаю, для начала этого должно хватить" - сказал довольный продавец. Через 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 - это, без сомнения, интересная штука. Если
вы уже программировали на 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 - призрак крутого
компилятора?