четверг, 21 апреля 2011 г.

Бесплатные компиляторы C++ и интегрированные среды разработки (IDE).

     Не секрет, что весь мир программного обеспечения, условно, можно разделить на 2 категории: платное ПО и бесплатное ПО. Кто-то является сторонником бесплатного, кто-то имеет деньги на платное, а кто-то крутиться как может и пользуется всякими крэками и генераторами ключей. По своей природе я человек законопослушный, поэтому и выбор мой останавливается на бесплатном софте (будь то проприетарное ПО или с открытым исходным кодом). Не стало это правило исключением и при выборе компилятора C/C++, а так же среды разработки. Что мною было обнаружено в просторах Интернета и с чем пришлось столкнуться я решил отобразить в этом очерке. Конечно профессионального разработчика я ничем не удивлю, но новичкам, возможно, смогу дать пару интересных ссылок :-). Итак ...

Бесплатные компиляторы C/C++

GCC
http://gcc.gnu.org/
     В мире Linux вы практически не встретите человека, который не знает что такое GCC. Расшифровывается сея аббревиатура как GNU Compiler Collection - набор компиляторов проекта GNU (фонд разработки СПО - свободного программного обеспечения). Да, да, именно набор, поскольку поддерживает несколько языков программирования (Ada, C, C++, Fortran, Java, Objective-C, Objective-C++, Go), хотя изначально это был исключительно компилятор языка C. Сейчас GCC, де-факто, стал штатным компилятором большинства операционных систем семейства Linux, но это не означает, что его применение ограничивается только этой ОС. Существуют версии GCC портированные и на иные операционные системы, например, проект MinGW - GCC под ОС семейства Windows. Использование этого компилятора удобно в случае, если планируется создавать кросс-платформенное приложение, либо использовать в своей программе библиотеки созданные в рамках сообщества разработчиков свободного программного обеспечения. Более подробно с историей развития, а так же плюсами и минусами GCC можно ознакомиться на русской странице WiKi. Ну и, конечно же, скачать данный компилятор, собранный для различных платформ (бинарные пакеты), можно со страницы загрузки GCC.

Microsoft Visual C++ Toolkit 2003
     Есть у Microsoft не только Windows, но и оптимизирующий компилятор бесплатный :-) Хотя он уже и достаточно "старый" (как видно из названия - 2003 год), но применение находит у достаточного большинства программистов. В то далекое время компания MS позволила себе раздавать лишь консольный вариант компилятора, в противовес текущей ситуации, когда можно пользоваться хоть и урезаной в функционале, но все же IDE - Microsoft Visual Studio Express. И если Студию вы всегда можете скачать с сайта компании, то вот Visual C++ Toolkit 2003 вы там не найдете - лишь на просторах интернета (например, ТУТ ;-)). Посмотрим, что входит в состав пакета от 2003 года: это C/C++ компилятор и линкер (такой же, кстати, как был в Visual Studio 2003 Professional), библиотека стандартных шаблонов (STL) и .NET runtime - "джедайский" набор программиста под Windows :-).

Borland C++ Compiler 5.5
http://edn.embarcadero.com/article/20633
     Ещё один "ветеран", способный одним названием внушить страх студенту-первокурснику ;-). В "лихие 90-е", не особо привру если скажу, что компания Borland занимала лидирующее положение в создании средств разработки. В то время если и подразумевалась IDE, либо компилятор под ОС Windows, то ими чаще являлись продукты компании Borland. Позже, конечно, пальма первенства была утеряна и взошли новые "звезды" на небосводе разработчиков, но теплая память о фирме подарившей миру одну из качественных реализаций компилятора C++ еще долго будет греть сердца :-) (только не надо развивать очередного холи-вара ;-)). Сейчас развитием линейки средств разработки занимается уже другая организация - Embarcadero Technologies, почитать о которой вы всегда можете на странице WiKi. Новые версии C++Builder они конечно же вам не дадут - только если за деньги :-), а вот последнюю версию компилятора, когда он еще принадлежал Borland, подарят безвозмездно - для этого нужно пройти по адресу: http://forms.embarcadero.com/forms/BCC32CompilerDownload где, заполнив анкету и указав реальный адрес e-mail, вы получите письмо с ссылкой для скачивания, либо, если у вас чертовски нет времени ;-), вы можете скачать его сразу ТУТ. В комплекте вы получите: сам компилятор, линкер, компилятор ресурсов, C++ Win32 препроцессор, утилиту для создания lib файлов из dll и другие "вкусности" для плодотворной работы на поприще создания программ под ОС семейства Win32.

Open Watcom
http://www.openwatcom.org/
     Как гласит всё знающая Википедия: "Open Watcom — проект сообщества открытого кода по поддержке и развитию многоплатформных компиляторов Watcom C, C++ и Fortran и сопутствующих программ." На этом бы можно было и остановиться в описании, но ради экономии вашего времени стоит сразу отметить, что хоть этот компилятор и генерирует компактный и быстрый код, но на текущий момент он не поддерживает полностью стандарт C++, поэтому выбирая его для своей работы не удивляйтесь если вдруг чей-то код не станет у вас собираться ;-). В отличии от всех представленных в данном обзоре компиляторов, Open Watcom заметно отличается наличием простого графического редактора, графического дебагера, редактора ресурсов и других утилит, по сути позволяя скачать пакет и тут же приступить к творчеству :-).

Digital Mars C++ Compiler
http://www.digitalmars.com/
     Компилятор разрабатываемый одноименной компанией Digital Mars, известной своей разработкой нового языка программирования "D" (по замыслу автора, очевидно, должно было символизировать следующий шаг в развитии языков C/C++). Нашему вниманию на сайте разработчика предлагается либо купить полный набор программного обеспечения для написания программ на C/C++, который, помимо самого компилятора, содержит и графическую среду разработки совместно с дебагером, справку, различные библиотеки и т.д.; либо скачать совершенно бесплатно консольную версию компилятора - чем, собственно, он и заслужил наше внимание :-). Но особо не спешите радоваться создатели кросс-платформенных приложений - данный компилятор работает только в ОС Windows :-).

     Это далеко не полный перечень известных компилятор для языков C/C++. Intel® C++ Compiler (для некоммерческого использования), AMD x86 Open64 Compiler Suite, Clang, Djgpp ... список еще можно продолжить дюжиной примеров, но суть останется одной - при выборе компилятора необходимо всесторонне подойти к анализу возможностей и условий применения, которые накладывает использование того или иного продукта - дабы в процессе разработки не попасть в щекотливую ситуацию :-).

Бесплатные интегрированные среды разработки (IDE)

Dev-C++
http://www.bloodshed.net/devcpp.html
Поддерживаемая система: Windows 95/98/NT/2000/XP
Поддерживаемые компиляторы: семейства GNU GCC (MinGW, Cygwin)

     Если вы уже искали или только ищите бесплатную IDE под ОС семейства Windows для C++ то, я уверен на 100 %, хоть раз да услышали (услышите) про Dev-C++. Это весьма функциональная и компактная среда разработки может стать хорошим подспорьем как начинающему программисту, так и профессионалу. К сожалению, Dev-C++ уже давно не поддерживается - остановив свое развитие на версии 5 beta, а версия под Linux и того в стадии alpha - при этом, что бы получить ее необходимо приобрести CD версию ПО от Bloodshed (стоимостью от $28 до $49 в зависимости от уровня разработчика). Но не стоит из-за этого сразу сбрасывать эту IDE со счетов ;-), а стоит обратиться к wxDev-C++ - развитию проекта Dev-C++ (который, помимо всей функциональности Dev-C++, содержит и дизайнер форм для кросс-платформенной библиотеки wxWidgets).
     Итак, что мы получаем решив использовать Dev-C++:
   - поддержка компилятора GCC
   - интегрированная отладка (используется GDB)
   - менеджер проекта
   - настраиваемый редактор кода с подсветкой синтаксиса
   - просмотрщик классов
   - автозавершение кода
   - список функций
   - поддержка профилей
   - быстрое создание Windows-приложений, консольных программ, статичных библиотек и DLL (шаблоны)
   - поддержка шаблонов, позволяющих создавать свои собственные типы проектов
   - создание makefile'а
   - редактирование и компиляция файлов ресурсов
   - менеджер инструментов
   - поддержка печати
   - средства поиска/замены (забавно было бы их не обнаружить :-))
   - поддержка CVS
     Ну что вы уже загорелись желанием заполучить эту "лапочку"? ;-) Тогда смело качайте Dev-C++ либо wxDev-C++!

MinGW Developer Studio
http://koti.mbnet.fi/vaultec/mingwstudio.php 
Поддерживаемая система: Windows 95/98/NT/2000/XP/Vista/7
Поддерживаемые компиляторы: MinGW

     Еще один "старичок" :-) в полку IDE. Как видно из названия, работает с портированой версией GCC - MinGW, хотя в большинстве обзоров данную среду характеризуют как кросс-платформенную (к слову, на сайте текущей поддержки MinGW Developer Studio я так и не нашел ссылку на скачивание дистрибутива для ОС отличной от Windows). Честно скажу - сам не скачивал и не использовал в своей работе эту IDE, но группу пользователей она явно имеет :-). Если вы программировали на языке C++ в MS Visual Studio 6.0, то эта среда вам явно придется по душе, ибо автор MinGW Developer Studio при разработке интерфейса постарался повторить эту IDE от Microsoft. Существенным минусом является лишь то, что с 2005 года проект не разрабатывается, а с 2008 года даже перестал работать официальный сайт. Но мир не без добрых людей и, если вы все же заинтересованы в использовании MinGW Developer Studio, вы всегда можете скачать актуализированную версию с сайта VaulTec. Ничего нового, по сравнению с финальной официальной версией, конечно, там нет - гарантируется лишь работа с одной из последних версий MinGW.
     Исходя из доступной информации, рассматриваемая среда разработки обладает следующими "плюшками":
   - интерфейс, поддерживающий работу с несколькими документами
   - подсветка синтаксиса
   - управление проектом (надо думать "менеджер проекта" :-)) с настройками для debug и release сборок
   - сворачивание кода
   - интегрированая помощь
   - поддержка отладки
   - и еще много других ;-) о которых авторы постеснялись рассказать

Code::Blocks
http://www.codeblocks.org/
Поддерживаемая система: Linux/Mac OS X/Windows
Поддерживаемые компиляторы: GCC(MinGW)/Digital Mars C/C++/Microsoft Visual C++ 6/Microsoft Visual C++ Toolkit 2003/Microsoft Visual C++ 2005/2008/Borland C++ 5.5/Watcom/Intel C++ compiler

     Первая действительно кросс-платформенная среда разработки в этом обзоре. Хотя проект и достаточно молодой, но это не помешало стать ему популярным среди программистов, особенно разрабатывающих приложения одновременно для нескольких операционных систем. Создатели Code::Blocks пошли по пути открытой архитектуры, тем самым предоставив возможность сторонним разработчиками расширять возможности среды за счет собственных плагинов (на момент написания обзора таких насчитывалось более двух десятков). Об одном плагине стоит сказать отдельно - wxSmith, по сути являющимся wxWidgets RAD инструментом, позволяющим проектировать оконные формы и прочие визуальные объекты используя библиотеку wxWidgets (библиотека wxWidgets устанавливается отдельно). Многим, я думаю, придется по душе и наличие большого числа шаблонов создаваемого проекта - начиная от статичной библиотеки и заканчивая такими проектами как Qt4 и Ogre. Конечно, "матерые" программеры все это и сами могут написать, что не скажешь о новичках, только-только вставших на зыбкий путь программирования :-), для которых это будет хорошим подспорьем в начинаниях. Как гласит народная мудрость - "лучше один раз пощупать, чем сто раз услышать" ;-), поэтому, тем кто заинтересовался Code::Blocks милости просим на страницу загрузки, а тем, кто еще сомневается, еще пару положительных моментов (помимо уже указанных):
   - подсветка кода (ну куда уж без нее :-))
   - сворачивание кода C++ и XML
   - автозавершение кода
   - просмотрщик классов
   - быстрая система сборки (не требуются make-файлы)
   - поддержка параллельных сборок (удобно для многоядерных процессоров)
   - импорт проектов MS VC
   - импорт проектов Dev-C++
  - поддержка дебагеров GNU GDB и MS CDB (правда реализована пока не вся функциональность MS CDB)
   - и др.

Eclipse C/C++ Development Tools
http://www.eclipse.org/cdt/
Поддерживаемая система: AIX/FreeBSD/HP-UX/Linux/Mac OS X/OpenSolaris/Solaris/QNX/Windows
Поддерживаемые компиляторы: преимущественно основанные на GNU GCC

     Одна из известнейших сред разработки, "краеугольный камень" которой заложила IBM. По сути, Eclipse C/C++ Development Tools (CDT), является плагином одной большой интегрированной среды разработки модульных кроссплатформенных приложений и имя ей - Eclipse. Т.о. Eclipse включает в себя набор плагинов позволяющих создавать приложения на Java, C/C++, PHP и др. Разработкой всей этой махины руководит Eclipse Foundation, бегло ознакомиться с которой вы можете, например, на сайте Википедии. Громкие имена компаний, стоящие за разработкой и развитием платформы Eclipse, позволяют с уверенностью говорить о функциональности и стабильности этой среды. Так CDT имеет в своем арсенале все то, что должна иметь современная IDE для C/C++:
   - подсветка синтаксиса
   - автозавершение кода
   - сворачивание кода
   - ссылочная навигация по коду (гипертекстовые ссылки)
   - рефакторинг кода
   - создание и управление проектами для различных инструментальных средств
   - стандартная make сборка
   - визуальные средтва отладки
   - и многие другие
     Добавьте к этому различные плагины расширяющие функциональность Eclipse C/C++ Development Tools и вы получите практически идеальную среду разработки :-). Почему практически идеальную? А потому, что разработана она на Java и, соответственно, требует установленную в системе виртуальную машину Java версии не ниже 1.5. Именно это, зачастую, становится решающим фактором для некоторых разработчиков, поскольку при слабой аппаратной части значительно увеличивает время как компиляции разрабатываемого приложения, так и реагирования самой среды на действия пользователя. Закачать же CDT вы всегда можете со страницы загрузки Eclipse.

NetBeans IDE
http://www.netbeans.org/
Поддерживаемая система: FreeBSD/Linux/Mac OS X/OpenSolaris/Solaris/Windows
Поддерживаемые компиляторы: GNU GCC

     Как и рассмотренная уже Eclipse C/C++ Development Tools, среда разработки NetBeans написана на языке Java (соответственно так же требует установленной виртуальной машины Java). В общем приближении эти среды даже можно назвать похожими :-). В NetBeans так же реализована модель компонент (плагинов) позволяющих расширять базовый функционал как новыми возможностями, так и поддержкой новых языков программирования - Java, Ruby, C/C++, Groovy, PHP. Естественно, данная среда изначально ориентирована на разработку Java-приложений, но, тем не менее, можно скачать и отдельную сборку IDE поддерживающей написание приложений только на языке C/C++. Конечно же в NetBeans вы найдете все те возможности и инструменты, что доступны и в Eclipse C/C++ Development Tools поэтому выделять что-то отдельное нет смысла :-). Зачастую, сравнивая эти 2 IDE, основная масса разговоров сводится к теме какая из них быстрее работает, а не к обсуждению возможностей. Так что, если вы заинтересованны в среде разработки подобного типа, можете смело качать обе и тестировать какая вам придется более по душе :-).

Microsoft Visual Studio Express
http://www.microsoft.com/express/
Поддерживаемая система: Windows XP SP3/Vista/Server 2003/Server 2008/7
Поддерживаемые компиляторы: MS Visual C++ 2008/2010

     Интенсивное развитие бесплатных средств разработки, особенно продуктов за которыми стоят такие титаны ИТ бизнеса как IBM, Oracle, Intel, AMD, очевидно вынудило пересмотреть политику Microsoft на свои продукты для разработчиков ПО. Так с 2005 года каждый желающий может скачать с сайта компании бесплатную версию популярной IDE - Visual Studio Express. Эта редакция Visual Studio представляет собой набор урезанных средств разработки для языков Visual Basic, C#, интересный нам C++ и Visual Web Developer Express и позиционируется Microsoft как IDE начального уровня для лиц не занимающихся профессионально программированием (учащихся, студентов, любителей etc.). Не переживайте - графический интерфейс и возможность создать оконные приложения вам дадут, а вот пользоваться наработками компании в области оптимизации и рефакторинга кода - практически нет. Так же вы не получите и, так всеми любимой в Visual Studio, возможности быстро устанавливать подключения к удаленным базам данных в дизайнере данных, как не получите и поддержки плагинов и компиляцию 64-битных приложений. Но это все не повод отказываться от Visual Studio Express, напротив тем, кто желает научиться программировать в среде Windows и для среды Windows, это будет полезная стартовая площадка, а подключив и MSDN - прекрасным справочным пособием по языку и API Windows.

Qt Creator
http://qt.nokia.com/products/developer-tools/
Поддерживаемая система: Linux/Mac OS X/Windows
Поддерживаемые компиляторы: GNU GCC

     Последняя IDE в этом обзоре, но далеко не последняя в функциональных возможностях. В отличии от всех уже рассмотренных сред разработки, Qt Creator изначально разрабатывался и развивается как IDE для фреймворка Qt. Конечно, никто не отрицает возможности написания на нем стандартного консольного приложения, но согласитесь качать ради этого ~ 46 мб (а в установленном виде порядка 100 Мб) - не выглядит весьма рациональным решением ;-). Поэтому сам так делаю, и всем рекомендую - рассматривать Qt Creator исключительно как среду разработки для кроссплатформенного фреймворка Qt. В этом отношении вы высоко оцените интеграцию IDE с дизайнером форм (Qt Designer) и справочной системой (Qt Assistant). Для начинающих осваивать Qt (и для ленивых мэтров :-)) разработчик, на сайте продукта, предлагает сразу скачать Qt SDK - набор всех необходимх программ для разработки приложений использующих Qt - библиотеку Qt, Qt Creator, компилятор MinGW (для Windows пользователей). Исходя из целевой направленности Qt Creator, можно выделить следующие его особенности:
   - интеграция дизайнера форм Qt и справочной системы Qt
   - расширяемость (посредством плагинов)
   - поддержка дебагеров GDB (графический фронтенд) и CDB
   - подсветка кода с поддержкой нескольких языков и разметок
     И много других, напрямую не зависимые от Qt Creator'а, а реализуемые посредством Qt, например, возможность создавать приложения для мобильных телефонов под управлением операционной системы Symbian и Maemo.

     На этой радостной, надеюсь, ноте я хотел бы закончить свой обзор :-). Чем пользоваться в своей работе каждый волен выбирать сам, либо ему диктуют корпоративные правила. Хочется верить, что кому-то этот очерк позволит так же определиться в своем выборе ;-). Для меня, лично, это стала связка Code::Blocks + MinGW и, конечно же, Qt SDK. 

12 комментариев:

  1. Годный обзор. Пришел по поиску "бесплатные компиляторы С".
    Пишу на PLSQL, но нужен именно С. Маленькая задача. Думаю watcom подойдет. Я про него слышал еще в эпоху борланда.

    ОтветитьУдалить
    Ответы
    1. Спасибо за отзыв :)
      Если Вас интересует C++, то, возможно, будет интересно ознакомиться и с материалами другого блога, где я стараюсь уделять внимание исключительно данному языку программирования :)

      Удалить
  2. Спасибо от "начинающего" программировать с использованием бесплатных сред разработки программиста:)

    ОтветитьУдалить
  3. Хороший обзор.

    ОтветитьУдалить
  4. отличный профессиональный обзор. пошел выбирать между сетевыми бобами и эклипсом.

    ОтветитьУдалить
  5. "бесплатное ПО"
    - наверное более правильным все же будет свободное.

    ОтветитьУдалить
    Ответы
    1. Боретесь за чистоту профессионального языка? :))) Похвально. Однако, не все затронутое здесь ПО является "свободным", но полностью бесплатно ;) Для СПО ключевым моментом является предоставление пользователю исходных кодов такого ПО .... Вам MS выдало исходники своего компилятора? ;))

      Удалить
    2. какое из ПО на ваш взгляд больше подходит для обучения?
      причём начиная с "Hello world"
      т.е. по сути вопрос где интерфейс максимально понятен
      не требует доводок или иных танцев с бубном.
      как часто случается у свободного ПО
      а в случаи MS там ещё есть СИ или всё будет уже настроено на новые веяния)

      Удалить
    3. Доброго времени суток!

      Для начального изучения под MS Windows, я бы остановил свой выбор на MS VS Express. На лицо удобство установки в "один клик" и интеграция с MSDN, что является хорошим подспорьем для изучения.

      Либо Qt Creator + MinGW. Здесь придется чуть влезть в настройки, но лично мне симпатизирует лаконичный интерфейс без кучи кнопок :))).

      В целом же... я бы рекомендовал изначально для себя определить в какой именно среде будет проходить уже "профессиональная разработка" (хотя бы ориентировочно) и стараться работать именно в ней ... попутно овладевая нюансами разработки именно в такой IDE :)).

      Удалить
  6. какой компилятор и/или среду можно использовать для разработки комерческого ПО, без необходимости открывать исходный код программы и ненарушая лицензий?

    ОтветитьУдалить