Интегрированные среды разработки
О.И.Цилюрик
Настоящая статья является дополнением к книге «Инструменты Linux для Windows-программистов». Все примеры к тексту вы можете скачать в виде общего архива.
Интегрированные средства (среды) разработки (IDE) не являются критически необходимым компонентом программной разработки. В традициях UNIX вполне достаточным для ведения программной разработки считается использование текстового редактора, обладающего дополнительными развитыми свойствами, такими как цветовая разметка текста, функции контекстного поиска и замены. Удовлетворяющих таким требованиям редакторов в Linux великое множество, начиная с традиционных vim и Emacs , и до простого редактирования в mc по F4. Опыт использования показывает, что этих средств вполне достаточно вплоть до средних размеров проектов.
Но использование IDE часто позволяет более производительно вести отработку программного кода, оперативнее выполнять в связке цикл: редактирование кода — сборка проекта — отладка. Значительно возрастает роль IDE в разработке GUI приложений, потому как большинство IDE предполагают в своём составе визуальные построители графических экранов.
Под Linux доступно весьма много разных IDE, различной степени интегрированности. Их уже настолько много, что становится бессмысленным описывать все, или значительную их часть в деталях: использование тех или иных IDE становится, в значительной мере, вопросом субъективных предпочтений и привычек. Можно перечислить только несколько из 1 , числа наиболее широко используемых IDE (и показан их внешний вид, чтобы их «различать в лицо»):
- Kdevelop ( http://kdevelop.org/ ) — среда разработки проекта KDE, активно развивается с 1998 г. Kdevelop помимо проектов на языке C, позволяет вести проекты практически на всех используемых в Linux языках: C++, Perl, Python, PHP, Java, Fuby, Ada, Bash, Pascal, Fortran. Эта среда позволяет интегрировать (технология KParts) различные текстовые редакторы, но основным редактором является Kate.
Kdevelop плотно интегрирован с Linux (в отличие от большинства других IDE он не является много-платформенным). Среда умеет генерировать начальные скелеты приложений. Отличительной особенностью Kdevelop (большим плюсом в некоторых случаях) является то, что среди таких шаблонов есть и проект модуля ядра (драйвера) Linux:
Шаблоны проектов Kdevelop (архив Kdevelop.tgz) достаточно громоздкие. Но это свойственно всем IDE. Вот как выглядит простейший проект, построенный для Cmake , после очистки от построенных исполнимых файлов:
- Eclipse IDE (Eclipse Integrated Development Environment, http://www.eclipse.org/ ) — одна из наиболее известных на сегодня сред, активно развивается с 2000г., сначала как проприетарный проект IBM, который затем был превращён в открытый проект. Отличительной особенностью является возможность динамических расширений (которые может подготовить и рядовой пользователь), за счёт этого наработаны плагины для поддержки десятков языков программирования, среди которых: Java, C/C++, PHP, Python и многих других, число которых постоянно прирастает из-за лёгкости работы с плагинами.
Эта среда разработки представлена практически для всех операционных систем, за счёт того, что сама она полностью выполнена на Java. Но Eclipse IDE является мульти-платформенной средой не только в смысле множества операционных систем, где она может выполняться, но и множества аппаратных платформ, отличных от x86, для которых может вестись кросс-разработка: ARM, MIPS, PPS . и даже микроконтроллеры, например, AVR. Помимо средств разработки, в Eclipse IDE включаются в виде плагинов программные эмуляторы других аппаратных платформ (например, Android ARM) для целей отладки. На основе Eclipse IDE сторонними разработчиками создано много других IDE, специализированных под конкретные применения, и это создаёт сложности в выборе конкретной модификации IDE.
Eclipse IDE представлен в репозитариях практически любого дистрибутива Linux, откуда может быть установлен. Но проект развивается очень динамично, поэтому, возможно, есть смысл устанавливать наиболее свежую реализацию с сайта проекта.
На рисунке показан возможный вид в Eclipse IDE минимального проекта, отрабатываемого под архитектуру ARM7:
factorial: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped
- Oracle Solaris Studio ( http://www.oracle.com/technetwork/server-storage/solarisstudio/overview/index.html — бывший проект Sun Solaris Studio), один из старейших проектов, изначально ориентирован на операционную систему Solaris, но там же есть альтернативная реализация для Linux. Компилятор в составе Solaris Studio ( сс ) обладает особыми оптимизирующими свойствами и нередко генерирует более эффективный и быстродействующий код, чем gcc . Но среда может быть настроена и на использование компилятора gcc . Ориентирован на языки программирования: C, C++ и Fortran, с дополнительными плагинами от сторонних производителей (устанавливаются непосредственно из Solaris Studio): Java, PHP, Python, Ruby, Ada (но это может потребовать дополнительной установки Oracle JDK).
Solaris Studio основан на NetBeans IDE, выполнен на Java (как и большинство средств OS Solaris). Имеет очень богатые настройки (архив SolarisStudio.tgz ), в том числе и в части используемых компиляторов:
Solaris Studio не представлен в репозитариях дистрибутивов Linux, и должен устанавливаться из инсталляционных файлов с сайта Oracle (указан выше). Установка бинарная .
IntelliJ IDEA ( http://www.jetbrains.com/idea/ ), проект, активно развиваемый с 2000 г., ориентированный на язык Java, но имеющий развитые инструменты разработки и отладки под Android (имеет эффективный эмулятор Android, основанный на виртуальной машине QEMU). Развиваются две реализации IDE: свободная (общедоступная) и профессиональная (проприетарная).
Вот как выглядит в IntelliJ IDEA проект для Android (архив IDEA.tgz ) и эмулятор Android в котором это приложение отлаживается:
При запуске IDEA из терминала вы можете увидеть предупреждение:
OpenJDK Runtime Environment (IcedTea6 1.8.3) (fedora-43.1.8.3.fc12-i386)
OpenJDK Server VM (build 14.0-b16, mixed mode)
WARNING: You are launching IDE using OpenJDK Java runtime
NOTE: If you have both Sun JDK and OpenJDK installed
please validate either IDEA_JDK or JDK_HOME environment variable points to valid Sun JDK installation
- Но это предупреждение, в равной мере, относится ко всем IDE, реализованным на Java (а все наиболее развитые IDE реализованы именно на Java: Eclipse IDE, Solaris Studio, . ) — все они предпочитают (работают эффективнее) использование оригинального Sun JDK , а не OpenJDK. Sun JDK можно свободно загрузить с сайта Oracle и установить в своей системе (пожалуй, это следует сделать, если вы планируете активно использовать IDE построенные на Java).
- Code::Blocks IDE ( http://www.codeblocks.org/ ) — свободная много-платформенная среда разработки, сама система написана на С++, с использованием переносимой графической библиотеки wxWidgets ( http://www.wxwidgets.org/ ). Поддерживает языки программирования С и С++, но для разнообразных операционных систем (Windows, Linux, Mac OS X), среду можно собрать практически под любую UNIX систему, например FreeBSD. Обеспечивает кросс-разработку под ряд используемых процессорных платформ (ARM, AVR). Среда создаёт шаблоны приложений и поддерживает разработку для многих графических платформ (GTK+, Qt, wxWidgets, GLUT и другие), поэтому может оказаться особенно удобной для проектирования GUI приложений.
Эта среда предполагает использование (на выбор) различных компиляторов С/С++ из числа установленных в системе:
Кроме того, Code::Blocks предлагает очень расширенный набор шаблонов для создаваемых приложений (различные платформы, различные графические библиотеки):
Проекты, созданные Code::Blocks, очень компактны, что приятно отличает её от многих других IDE (здесь показан объём вместе с собранным бинарным приложением):
Geany ( http://www.geany.org/ ) — популярная среди многих разработчиков, простая в обращении, много-платформенная среда разработки. По существу, Geany не является IDE, а есть развитый инструмент редактирования кодов с цветовой разметкой, встроенным вызовом gcc, make, . Благодаря такой специфике Geany используется для при разработке программ более чем на 40 языках программирования, среди которых: C/C++, Java, JavaScript, Tcl, PHP, Python, XML/HTML и другие.
Geany работает не с какими-либо специфическими проектами, а с файлами программного кода, собираемыми традиционным make . На рисунке показан вид в Geany обсуждавшегося ранее приложения создания библиотек, ниже виден запущенный в окне терминала Geany менеджер mc (отсутствие специфических для IDE «наворотов» и определяет гибкость и универсализм Geany):
Glade ( http://glade.gnome.org/ ) — Glade не является IDE в том смысле, как описанные ранее. Это свободная система визуального создания графических интерфейсов (GUI), которая может создавать шаблон практически под любую графическую библиотеку (сам Glade написан на основе GTK+). Создадим шаблон приложения (архив Glade.tgz ):
Дальше нам остаётся написать сценарий сборки (Makefile) для сгенерированного шаблона приложения, в случае использования wxWidgets это будет что-то типа:
CCOPT = `wx-config —cxxflags`
LDOPT = `wx-config —libs`
Далее мы можем открыть полученный проект для дальнейшей работы в уже рассмотренный ранее Geany. Тем самым устраняется нагромождение «под одной крышей» слишком интегрированных IDE: и генерации визуальных образов GUI, и отработка программного кода.
Это далеко не все IDE, активно применяемые в разработках в Linux. Из других некоторые стоило бы хотя бы просто назвать «по имени»:
- Anjuta ( http://www.anjuta.org/ ) — официальная интегрированная среда разработки проекта GNOME, для разработки на языках: C, C++, Vala, Java, JavaScript, Python. Особенно хорошо подходит для разработки GUI приложений.
- QDevelop ( http://code.google.com/p/qdevelop/ ) в связке с QtDesigner ( http://trolltech.com ) или Qt Creator ( http://trolltech.com/developer/qt-creator ) — представляют собой мощный комплекс для отработки графических приложений, базирующихся на библиотеке Qt. Qdevelop представляет собой облегчённую версию Kdevelop, хотя и построен на совершенно отличном коде. Развитие Qdevelop начато в 2006г.
- HaiQ ( http://groups.google.com/group/haiq/ ) — ещё одна много-платформенная IDE, ориентированная на разработку с использованием библиотек Qt.
Приведенный беглый обзор ни в какой мере не рассчитан как объективное представление или сравнение всех доступных в Linux средств разработки. Заметим здесь, что разнообразных средств разработки в Linux намного больше, чем в Windows, но это разнообразие создаёт и некоторую растерянность в выборе оптимальных инструментов под конкретный программный проект. Некоторое сравнение (но также ограниченное) можно найти по ссылке http://ru.wikipedia.org/wiki/Сравнение_средств_разработки .
Эти, а также и другие IDE вы легко найдёте и установите в своей системе под свой вкус, пользуясь техникой установки программного обеспечения, описываемой далее. Вряд ли этот предмет стоит большего внимания.
1 Не по принципу «эти лучше других», а только потому, что эти попросту «под руку попали».
Источник
9 лучших интегрированных сред разработки с поддержкой языков программирования C/C++ для Linux
Оригинал: What is a good IDE for C/C++ on Linux
Автор: Adrien Brochard
Дата публикации: 14 января 2015 г.
Перевод: А. Панин
Дата перевода: 24 мая 2016 г.
«Настоящий программист не использует интегрированную среду разработки, ведь ему вполне достаточно [вставьте сюда название любого текстового редактора] с некоторыми плагинами.» Все мы когда-то слышали подобное утверждение. Хотя и сложно не согласиться с ним, следует признать, что интегрированная среда разработки все же может оказаться полезной в ряде случаев. Во-первых, ее проще настроить и использовать сразу же после установки. Кроме того, в ней проще начинать разработку проекта с нуля. Поэтому в данной статье я постараюсь привести список наиболее удобных интегрированных сред разработки с поддержкой языков программирования C/C++ для Linux. Почему я акцентирую внимание именно на языках C/C++? Скорее всего, потому, что C является моим любимым языком программирования, кроме того, нужно с чего-то начинать. Вам также следует учесть тот факт, что существует большое количество подходов к разработке кода на языке C, поэтому с целью сокращения списка в него были включены лишь «реальные интегрированные среды разработки», а не текстовые редакторы, такие, как GEdit или Vim с плагинами. Данные текстовые редакторы не являются плохой альтернативой интегрированных сред разработки по каким-либо причинам, тем не менее, в случае их рассмотрения список оказался бы слишком длинным.
1. Code::Blocks
Начнем с моего любимого программного продукта, а именно, Code::Blocks — простой и быстрой интегрированной среды разработки с поддержкой языков программирования C/C++. Как и в любой достойной интегрированной среде разработки, в ней реализованы подсветка синтаксиса, вкладки, механизмы автодополнения кода и управления проектами, а также интегрирован отладчик. Ее главным преимуществом является простая система плагинов, которая позволяет добавить поддержку таких незаменимых инструментов, как Valgrind и CppCheck, а также реализовать такие менее нужные функции, как мини-игра Тетрис. Мне же она нравится из-за главным образом из-за своего набора очевидных и удобных горячих клавиш, а также большого количества параметров конфигурации, которые могут пригодиться в тех или иных ситуациях.
2. Eclipse
Я помню о том, что собирался описывать лишь «реальные интегрированные среды разработки», а не текстовые редакторы с плагинами, при этом Eclipse как раз является «реальной интегрированной средой разработки». Но для программирования на языке C в Eclipse все же нужно установить небольшой плагин. Таким образом, я не противоречу сам себе. Кроме того, было бы невозможно создать список интегрированных сред разработки без упоминания такого монстра, как Eclipse. Нравится вам это или нет, Eclipse остается отличным инструментом для разработки программных продуктов на языке Java. А благодаря проекту CDT , данная интегрированная среда разработки может с успехом использоваться и для разработки программных продуктов на языках C/C++. Вы сможете пользоваться всеми возможностями Eclipse, включая такие традиционные возможности, как автодополнение кода, визуализация структуры кода, генерация кода и мощный рефакторинг. На мой взгляд, единственным недостатком данной интегрированной среды разработки по сравнению с Code::Blocks является тяжеловесность. Она является крайне тяжеловесной, поэтому для ее полной загрузки требуется некоторое время. Но если ваша машина может достаточно быстро работать с ней или же вы являетесь фанатом Eclipse, эта интегрированная среда разработки будет отличным выбором.
3. Geany
Geany является более гибкой, но менее функциональной противоположностью Eclipse. При этом отсутствующие функции (например, отладчик) с лихвой компенсируются небольшими полезными инструментами: полем для добавления заметок, механизмом создания проектов из шаблонов, полем визуализации структуры кода, настраиваемыми горячими клавишами, а также инструментом для управления плагинами. Все-таки, Geany скорее можно назвать мощным текстовым редактором, а не интегрированной средой разработки. Однако, я включил ее в данный список из-за легковесности и отлично спроектированного интерфейса.
4. MonoDevelop
Еще одним монстром является MonoDevelop — интегрированная среда разработки с уникальными пользовательскими качествами, обусловленными ее внешним видом и интерфейсом. Лично мне нравятся ее встроенные инструменты для управления проектами и работы с системой контроля версий. Ее система плагинов также впечатляет. Но, по какой-то причине, все ее параметры конфигурации, а также поддержка множества языков программирования смущают меня. Данная интегрированная среда разработки остается отличным инструментом, который я использовал много раз в прошлом, но все же не может претендовать на первое место в том случае, если речь идет о работе с «простым» языком программирования C.
5. Anjuta
Интегрированная среда разработки Anjuta , отлично интегрированная с окружением рабочего стола GNOME, может вызывать противоречивые чувства. Я привык считать ее расширенной версией Geany с поддержкой отладчика, причем ее интерфейс является более продуманным. Мне нравится ее система вкладок, предназначенная для переключения между списком проектов, списком директорий и областью визуализации структуры кода. При этом мне хотелось бы использовать некоторые дополнительные горячие клавиши для перемещения в рамках файла. В общем, это отличный инструмент, позволяющий изменять множество параметров компиляции и сборки проекта, который может удовлетворить нужны самого требовательного разработчика.
6. Komodo Edit
Я не очень хорошо знаком с интегрированной средой разработки Komodo Edit , но после работы с ней в течение нескольких дней, у меня остались лишь положительные впечатления. Во-первых, ее интерфейс навигации на основе вкладок является достаточно практичным в любых ситуациях. Удобная область визуализации структуры кода очень напоминает аналогичную область интегрированной среды разработки Sublime Text. Более того, система макросов и инструмент сравнения файлов делают интегрированную среду разработки Komodo Edit очень практичной. А библиотека плагинов делает ее практически идеальной. Я использовал слово «практически», так как используемые в ней горячие клавиши показались мне не такими удобными, как в других интегрированных средах разработки. Кроме того, я хотел бы увидеть более специализированные инструменты для работы с кодом C/C++, но этот недостаток свойственен практически всем популярным интегрированным средам разработки. В любом случае, это очень удобный программный продукт.
7. NetBeans
Как и в случае Eclipse, достаточно сложно игнорировать данный монструозный программный продукт. Благодаря наличию вкладок для навигации по файлам проекта, области визуализации структуры кода, механизма отслеживания истории изменений и множества дополнительных полезных инструментов, NetBeans может считаться самой функциональной интегрированной средой разработки из существующих. Но это достоинство может расцениваться и как ее недостаток, причем значительный. Несмотря на наличие множества полезных функций, я предпочитаю использовать программное обеспечение, поддерживающее плагины, так как сомневаюсь, что кому-либо может потребоваться поддержка систем контроля версий Git и Mercurial при разработке одного и того же проекта. Можете считать меня сумасшедшим. Но если вам хватит терпения для того, чтобы разобраться со всеми ее параметрами, вы, скорее всего, разберетесь с любой из интегрированных сред разработки для любой из платформ.
8. KDevelop
Интегрированная среда разработки KDevelop может быть отличным решением для всех фанатов окружения рабочего стола KDE. Она поддерживает огромное количество параметров конфигурации, которыми вы можете воспользоваться при необходимости. Можете считать мое мнение субъективным, но мне никогда не нравился ее интерфейс. Кроме того, я не смог использовать ее для выполнения реальной работы из-за того, что в редакторе кода используется чрезмерное количество различных параметров навигации и изменяемых горячих клавиш. Отладчик также поддерживает чрезмерное количество параметров, поэтому для продуктивной работы с ним требуется продолжительная практика. Однако, в вашем случае все затраты времени наверняка компенсируются гибкостью и мощностью данной интегрированной среды разработки. Кроме того, просто нельзя обойти вниманием отличную документацию, поставляемую в комплекте.
9. CodeLite
Наконец, последняя в списке, но не по значению интегрированная среда разработки CodeLite наглядно демонстрирует то, что вы можете использовать традиционную формулу и получить не ее основе что-либо самобытное. Ее интерфейс напомнил мне интерфейс интегрированных сред разработки Code::Blocks и Anjuta, при этом я был просто поражен ее богатой библиотекой плагинов. Если вам понадобится найти различия в файлах, добавить в файл исходного кода информацию об авторском праве, определить аббревиатуру или разместить свою работу в репозитории Git, для вас найдется подходящий плагин. Если говорить о мелочах, следует отметить, что в данной интегрированной среде разработки отсутствуют некоторые, по моему мнению, полезные горячие клавиши для навигации по коду, при этом я не могу найти каких-либо дополнительных недоработок.
Я надеюсь, что благодаря данному списку вы узнаете о новых интегрированных средах разработки с поддержкой вашего любимого языка программирования. Хотя Code::Blocks и остается моей любимой интегрированной средой разработки, даже при работе с ней иногда возникают значительные трудности. Также следует отметить, что мы рассмотрели далеко не все инструменты, облегчающие процесс разработки программных компонентов на языках C/C++ в Linux. Вы можете сообщить о своем любимом инструменте в разделе комментариев. Если же вы хотите, чтобы я описал интегрированные среды разработки с поддержкой других языков программирования в следующих статьях, вы также можете написать об этом в разделе комментариев.
Источник