Сравнение сред разработки приложений. Выбор среды разработки(IDE). Понимание процессов компиляции

"Все вот думал, когда же наступит тот момент, когда мне придется сказать в стиле "да я в твои годы!.. и т.д.". И вот... Этот момент, скорее всего, настал. Вам, - как видно из вашего недавнего поста, - 16 лет, и вы позиционируете себя как молодого человека, увлекшегося программированием. То вы собираетесь использовать Go для масштабного веб-проекта, то не можете подобрать цветовую схему для редактора Sublime Text 3, чтобы начать программировать, причем одну тему для дневной работы, а вторую - для ночной. И все это для того, чтобы, как вы в том же посте и выразились, в ближайшее время опять же - начать писать на языке golang. Теперь вот уже и сам IDE стоит под вопросом.

Я в ваши годы, а точнее, с 12 лет и где-то до 16-ти, сидел дома за гудящим компьютером ЕС-1840, оснащенным черно-белым монитором "Электроника". Там, поверьте мне, не было никаких тем - ни ночных, ни дневных. Я не говорю уже о том, что понятие "графика" сводилось к алгоритмам отображения простых геометрических фигур, причем практически, если так можно выразиться, "попиксельно". Не было и никаких навороченных IDE, а пиком эргономичности UI считались Norton/Volkov Commander. Windows и графический интерфейс? Не, не слышали.. Там был MS-DOS во всей его красе.

Но зато, мой юный друг, были Borland TurboPascal, Borland C++, Microsoft GW-BASIC и другие - простейшие в смысле графической оболочки (если понятие таковой вообще там можно было найти), но необходимые среды разработки под MS-DOS, благодаря которым многие стали профессионалами без всяких ночных тем. О да, забыл упомянуть: тогда не было никакого Интернета и ответ на вопрос типа "А как сделать, чтобы..." нельзя было найти с помощью Google. И книг не было. Разве что книга В. Э. Фигурнова "IBM PC для пользователя" - почти что единственная библия нашего поколения и скудные сканы с документаций, поставлявшимися с официальными версиями вышеозначенных программ и считавшимися ценнее золота.

Как я уже вам писал, я знаю людей (да и многие знают), которые годами собираются выучить Java, но никак не могут определиться, что лучше - Eclipse или NetBeans. В результате они остались на месте, не выучив ровным счетом ничего. А все потому что походили к процессу не с той стороны, явно полагая, что корень их непонимания азов программирования связан с использованием неудобного IDE.

Я желаю вам прогресса, а поэтому прошу: не повторяйте опыт неудачников и не наступайте на эти затертые чужие грабли. Учитесь и начинайте программировать, а темы оставьте на потом.

23.04.17 28.9K

Независимо от того, являетесь ли вы опытным разработчиком или только учитесь программировать, важно знать обо всех новых и уже существующих интегрированных средах разработки . Ниже приведен список 10 наиболее популярных IDE .

Чем IDE отличается от текстового редактора?

IDE — это не просто текстовый редактор. В то время как текстовые редакторы для кода, такие как Sublime или Atom , предлагают множество удобных функций, таких как подсветка синтаксиса, настраиваемый интерфейс и расширенные средства навигации, они позволяют только писать код. Для создания функционирующих приложений как минимум нужен компилятор и отладчик.

IDE включает в себя эти компоненты, как и ряд других. Некоторые из них поставляются с дополнительными инструментами для автоматизации, тестирования и визуализации процесса разработки. Термин «интегрированная среда разработки» означает, что предоставляется все необходимое для превращения кода в функционирующие приложения.

Ознакомьтесь с приведенным ниже списком функций и недостатков каждой из 10 лучших IDE .

1. Microsoft Visual Studio

Microsoft Visual Studio — это интегрированная среда разработки , цена которой варьируется от $699 до $2900 . Множество версий этой IDE способны создавать все типы программ, начиная от веб-приложений и заканчивая мобильными приложениями, видеоиграми. Эта линейка программного обеспечения включает в себя множество инструментов для тестирования совместимости. Благодаря своей гибкости Visual Studio является отличным инструментом для студентов и профессионалов.

Поддерживаемые языки: Ajax, ASP.NET, DHTML, JavaScript, JScript, Visual Basic, Visual C#, Visual C++, Visual F#, XAML и другие .

Особенности:

  • Огромная библиотека расширений, которая постоянно увеличивается;
  • IntelliSense ;
  • Настраиваемая панель и закрепляемые окна;
  • Простой рабочий процесс и файловая иерархия;
  • Статистика мониторинга производительности в режиме реального времени;
  • Инструменты автоматизации;
  • Легкий рефакторинг и вставка фрагментов кода;
  • Поддержка разделенного экрана;
  • Список ошибок, который упрощает отладку;
  • Проверка утверждения при развертывании приложений с помощью ClickOnce , Windows Installer или Publish Wizard.

Недостатки : поскольку Visual Studio является супертяжелой IDE , для открытия и запуска приложений требуются значительные ресурсы. Поэтому на некоторых устройствах внесение простых изменений может занять много времени. Для простых задач целесообразно использовать компактный редактор или средство разработки PHP .

2. NetBeans

Бесплатная среда разработки с открытым исходным кодом. Подходит для редактирования существующих проектов или создания новых. NetBeans предлагает простой drag-and-drop интерфейс, который поставляется с большим количеством удобных шаблонов проектов. Среда в основном используется для разработки Java приложений, но можно устанавливать пакеты, поддерживающие другие языки.

Поддерживаемые языки программирования: C, C++, C++ 11, Fortan, HTML 5, Java, PHP и другие .

Особенности:

  • Интуитивный drag-and-drop интерфейс;
  • Динамические и статические библиотеки;
  • Интеграция нескольких сессий GNU-отладчика с поддержкой кода;
  • Возможность осуществлять удаленное развертывание;
  • Совместимость с платформами Windows, Linux, OS X и Solaris;
  • Поддержка Qt Toolkit;
  • Поддержка Fortan и Assembler;
  • Поддержка целого ряда компиляторов, включая CLang / LLVM, Cygwin, GNU, MinGW и Oracle Solaris Studio.

Недостатки: эта бесплатная среда разработки потребляет много памяти, поэтому может работать медленно на некоторых ПК.

3. PyCharm

PyCharm разработан командой Jet Brains . Пользователям предоставляется бесплатная версия Community Edition , 30-дневная бесплатная ознакомительная версия Professional Edition и годовая подписка за $213 — $690 на версию Professional Edition . Комплексная поддержка кода и анализ делают PyCharm лучшей IDE для Python-программистов .

Поддерживаемые языки: AngularJS, Coffee Script, CSS, Cython, HTML, JavaScript, Node.js, Python, TypeScript.

Особенности:

  • Совместимость с операционными системами Windows, Linux и Mac OS;
  • Поставляется с Django IDE;
  • Легко интегрируется с Git, Mercurial и SVN;
  • Настраиваемый интерфейс с эмуляцией VIM;
  • Отладчики JavaScript, Python и Django;
  • Поддержка Google App Engine.

Недостатки: пользователи жалуются, что эта среда разработки Python содержит некоторые ошибки, такие как периодически не работающая функция автоматического заполнения, что может доставить определенные неудобства.

4. IntelliJ IDEA

Еще одна IDE , разработанная Jet Brains . Она предлагает пользователям бесплатную версию Community Edition , 30-дневную бесплатную ознакомительную версию Ultimate Edition и годовую подписку на версию Ultimate Edition за $533 — $693 . IntelliJ IDEA поддерживает Java 8 и Java EE 7 , обладает обширным инструментарием для разработки мобильных приложений и корпоративных технологий для различных платформ. Если говорить о цене, IntelliJ является прекрасным вариантом из-за огромного списка функций.

Поддерживаемые языки программирования: AngularJS, CoffeeScript, HTML, JavaScript, LESS, Node JS, PHP, Python, Ruby, Sass, TypeScript и другие.

Особенности:

  • Расширенный редактор баз данных и дизайнер UML ;
  • Поддержка нескольких систем сборки;
  • Пользовательский интерфейс тестового запуска приложений;
  • Интеграция с Git ;
  • Поддержка Google App Engine , Grails , GWT , Hibernate , Java EE , OSGi , Play , Spring , Struts и других;
  • Встроенные средства развертывания и отладки для большинства серверов приложений;
  • Интеллектуальные текстовые редакторы для HTML , CSS и Java ;
  • Интегрированный контроль версий;
  • AIR Mobile с поддержкой Android и iOS .

Недостатки: эта среда разработки JavaScript требует времени и усилий на изучение, поэтому может оказаться не лучшим вариантом для начинающих. В ней есть много сочетаний горячих клавиш, которые нужно просто запомнить. Некоторые пользователи жалуются на неуклюжий интерфейс.

5. Eclipse

Бесплатный и гибкий редактор с открытым исходным кодом. Он может оказаться полезен, как для новичков, так и для профессионалов. Первоначально создаваемый как среда для Java-разработки сегодня Eclipse имеет широкий диапазон возможностей благодаря большому количеству плагинов и расширений. Помимо средств отладки и поддержки Git / CVS , стандартная версия Eclipse поставляется с инструментами Java и Plugin Development Tooling . Если вам этого недостаточно, доступно много других пакетов: инструменты для построения диаграмм, моделирования, составления отчетов, тестирования и создания графических интерфейсов. Клиент Marketplace Eclipse открывает пользователям доступ к хранилищу плагинов и информации.

Поддерживаемые языки: C, C++, Java, Perl, PHP, Python, Ruby и другие.

Особенности:

  • Множество пакетных решений, обеспечивающих многоязычную поддержку;
  • Улучшения Java IDE , такие как иерархические представления вложенных проектов;
  • Интерфейс, ориентированный на задачи, включая уведомления в системном трее;
  • Автоматическое создание отчетов об ошибках;
  • Параметры инструментария для проектов JEE ;
  • Интеграция с JUnit .

Недостатки: многие параметры этой среды разработки могут запугать новичков. Eclipse не обладает всеми теми функциями, что и IntelliJ IDEA , но является IDE с открытым исходным кодом.

6. Code::Blocks

Еще один популярный инструмент с открытым исходным кодом. Гибкая IDE , которая стабильно работает на всех платформах, поэтому она отлично подходит для разработчиков, которые часто переключаются между рабочими пространствами. Встроенный фреймворк позволяет настраивать эту IDE под свои потребности.

Поддерживаемые языки: C, C++, Fortran .

Особенности:

  • Простой интерфейс с вкладками открытых файлов;
  • Совместимость с Linux , Mac и Windows ;
  • Написана на C++ ;
  • Не требует интерпретируемых или проприетарных языков программирования;
  • Множество встроенных и настраиваемых плагинов;
  • Поддерживает несколько компиляторов, включая GCC, MSVC ++ , clang и другие;
  • Отладчик с поддержкой контрольных точек;
  • Текстовый редактор с подсветкой синтаксиса и функцией автоматического заполнения;
  • Настраиваемые внешние инструменты;
  • Простые средства управления задачами, идеально подходящие для совместной работы.

Недостатки: относительно компактная среда разработки Си , поэтому она не подходит для крупных проектов. Это отличный инструмент для новичков, но продвинутые программисты могут быть разочарованы ее ограничениями.

7. Aptana Studio 3

Самая мощная из IDE с открытым исходным кодом. Aptana Studio 3 значительно улучшена по сравнению с предыдущими версиями. Поддерживает большинство спецификаций браузеров. Поэтому пользователи этой IDE могут с ее помощью быстро разрабатывать, тестировать и развертывать веб-приложения.

Поддерживаемые языки: HTML5, CSS3, JavaScript, Ruby, Rails, PHP и Python .

Особенности:

  • Подсказки для CSS , HTML , JavaScript , PHP и Ruby ;
  • Мастер развертывания с простой настройкой и несколькими протоколами, включая Capistrano , FTP , FTPS и SFTP ;
  • Возможность автоматической установки созданных приложений Ruby и Rails на серверы хостинга;
  • Интегрированные отладчики для Ruby и Rails и JavaScript ;
  • Интеграция с Git ;
  • Простой доступ к терминалу командной строки с сотнями команд;
  • Строковые пользовательские команды для расширения возможностей.

Недостатки: есть проблемы со стабильностью, и она работает медленно. Поэтому профессиональные разработчики могут предпочесть более мощную HTML среду разработки.

8. Komodo

Предлагает бесплатную 21-дневную ознакомительную версию, полная версия стоит $99 – $1615 в зависимости от редакции и лицензии. Komodo поддерживает большинство основных языков программирования. Удобный интерфейс позволяет осуществлять расширенное редактирование, а небольшие полезные функции, такие как проверка синтаксиса и одноступенчатая отладка, делают Komodo одной из самых популярных IDE для веб и мобильной разработки.

Поддерживаемые языки: CSS, Go, JavaScript, HTML, NodeJS, Perl, PHP, Python, Ruby, Tcl и другие.

Особенности:

  • Настраиваемый многооконный интерфейс;
  • Интеграция контроля версий для Bazaar , CVS , Git , Mercurial , Perforce и Subversion ;
  • Профилирование кода Python и PHP ;
  • Возможность развертывания в облаке благодаря Stackato PaaS ;
  • Графическая отладка для NodeJS , Perl , PHP , Python , Ruby и Tcl ;
  • Автоматическое заполнение и рефакторинг;
  • Стабильная производительность на платформах Mac , Linux и Windows

Недостатки: бесплатная версия среды разработки программного обеспечения не включает в себя все функции. В то же время премиум версия явно стоит своих денег.

9. RubyMine

Еще одна премиум IDE , разработанная компанией Jet Brains . Предлагается 30-дневная бесплатная ознакомительная версия, полная версия стоит $210 — $687 в год. Удобная навигация, логичная организация рабочего процесса и совместимость с большинством платформ делают RubyMine одним из популярных инструментов для разработчиков.

Поддерживаемые языки: CoffeeScript, CSS, HAML, HTML, JavaScript, LESS, Ruby и Rails, Ruby и SASS.

Особенности:

  • Сниппеты кода, автоматическое заполнение и автоматический рефакторинг;
  • Дерево проектов, которое позволяет быстро анализировать код;
  • Схема модели Rails ;
  • Просмотр проекта Rails ;
  • RubyMotion поддерживает разработку под iOS ;
  • Поддержка стека включает в себя Bundler , pik , rbenv , RVM и другие;
  • Отладчики JavaScript , CoffeeScript и Ruby ;
  • Интеграция с CVS , Git , Mercurial , Perforce и Subversion .

Недостатки среды разработки: чтобы RubyMine работала бесперебойно, компьютеру требуется не менее 4 ГБ оперативной памяти. Некоторые пользователи также жалуются на отсутствие опций настройки GUI .

10. Xcode

Набор инструментов для создания приложений под iPad , iPhone и Mac . Интеграция с Cocoa Touch делает работу в среде Apple простой, вы можете включать такие сервисы, как Game Center или Passbook , одним кликом мыши. Встроенная интеграция с сайтом разработчика помогает создавать полнофункциональные приложения «на лету ».

Поддерживаемые языки: AppleScript, C, C++, Java, Objective-C.

Особенности:

  • Элементы пользовательского интерфейса можно легко связать с кодом реализации;
  • Компилятор Apple LLVM сканирует код и предоставляет рекомендации по решению проблем производительности;
  • Панель навигации обеспечивает быстрое перемещение между разделами;
  • Interface Builder позволяет создавать прототипы без написания кода;
  • Пользовательский интерфейс и исходный код можно подключить к сложным прототипам интерфейсов всего за несколько минут;
  • Редактор версий включает в себя файлы журнала и хронологии;
  • Распределение и объединение процессов удобно при командной работе;
  • Test Navigator позволяет быстро тестировать приложения в любой момент разработки;
  • Автоматически создает, анализирует, тестирует и архивирует проекты благодаря интеграции с сервером OX X ;
  • Рабочий процесс настраивается с помощью вкладок, поведения и фрагментов;
  • Библиотека инструментов и каталог ресурсов.

Недостатки инструментальной среды разработки: для запуска Xcode нужен компьютер от компании Apple . А для загрузки создаваемых приложений в Apple Store — лицензия разработчика.

Связано с выбором рабочего окружения - IDE (integrated development environment / интегрированной среды разработки). Особенно важно это для тех, кто впервые сталкивается с программированием, поскольку выбор IDE может оказать существенное влияние на их рабочий процесс.

Несмотря на то, что в целом существует больше десятка различных сред разработки для Java, крупнейшими и наиболее функциональными, а также обладающими хорошей поддержкой как со стороны разработчиков, так и со стороны сообщества, являются три IDE: NetBeans, Eclipse и IntelliJ IDEA. Остальные конкуренты существенно уступают в функциональности, многие более не поддерживаются, из-за чего не могут отвечать последним стандартам такого стремительно развивающегося языка программирования как Java. Остановимся на каждой из упомянутых сред разработки более подробно.

NetBeans разрабатывается при активной поддержке компании Oracle, которой также принадлежат права на Java. Таким образом часть технологий Java имеют поддержку в NetBeans из первых рук.

По своей функциональности NetBeans является наиболее простой и интуитивно понятной средой разработки для Java из тройки лидеров. Без сомнения можно рекомендовать ее для тех, кто впервые сталкивается со средами разработки и языком программирования Java. Среди отличительных черт этой IDE можно выделить оптимальную настройку среды «из коробки». Установив данную среду, пользователь получает отличные настройки компилятора и самой среды разработки, интерфейс без лишних иконок и пунктов меню, присутствуют лишь наиболее востребованные и часто используемые функции. Впоследствии, естественно, можно настроить интерфейс под себя. Можно отметить также удобную реализацию выполнения задач, все меню очень хорошо структурированы, имеют понятные названия. Отдельно можно отметить легкость работы с NetBeans из-за отсутствия необходимости бродить по бесконечным меню и всплывающим окнам, чем страдают многие другие среды разработки. В большинстве случаев при общении пользователя со средой NetBeans автоматически предлагает оптимальные параметры для работы. Таким образом, даже если начинающий пользователь не до конца понимает, о чем его спрашивает среда, нажимая «ОК», навредить своей работе почти невозможно. Установка дополнительных компонентов среды / плагинов (plug-in) производится в один клик. Имеется хорошая поддержка систем контроля версий (VCS, version control system), а также простая в использовании подсистема разработки графического пользовательского интерфейса (GUI, graphical user interface). NetBeans доступен .

Подводя итог, можно охарактеризовать NetBeans IDE как интуитивно понятную и простую в использовании среду разработки. Начиная работать с NetBeans, в нем легко разобраться, а также легко научиться пользоваться этой средой на продвинутом уровне. Кроме того, стиль взаимодействия NetBeans с пользователем таков, что позволяет быстро освоить и сам язык Java, если пользоваться встроенными в среду подсказками, будь то документация Javadoc или рекомендации по исправлению допущенных/потенциальных ошибок.

Eclipse - первоначально созданная IBM интегрированная среда разработки, находящаяся среди лидеров с момента своего появления. Eclipse, однако, заточен не только под Java, а является средой общего назначения Eclipse Platform, что сказывается на его функциональности. Наиболее подходящая для работы с Java сборка среды Eclipse доступна под названием ""Eclipse IDE for Java Developers"".

Отличительной чертой Eclipse является почти неограниченная настраиваемость и расширяемость. У пользователей, однако, это может вызвать проблемы. Так «из коробки» интерфейс Eclipse содержит излишне много редкоиспользуемых функций, обладает запутанными и не интуитивными меню, известен Eclipse и своими бесконечными диалоговыми окнами, требующими от пользователя ввода большого числа информации или просто перегруженными сведениями, с которыми ему необходимо ознакомиться. Система установки плагинов также может показаться запутанной. Системы работы с контролем версий и разработки пользовательского интерфейса находятся на среднем уровне. Eclipse также доступен бесплатно.

Среди плюсов Eclipse IDE можно отметить поддержку почти любой существующей технологии Java, а также второстепенных технологий, без которых не обходятся программисты. Имея достаточный опыт, Eclipse можно до невероятной степени подстроить под свои нужды. Для новых же пользователей это будет лишь преградой к эффективной работе, поскольку от среды общего назначения не стоит ожидать большой интуитивности и простоты.

IntelliJ IDEA, созданная компанией JetBrains, была первой созданной полноценной интегрированной средой разработки. В отличие от вышеописанных IDE Intellij IDEA доступна в бесплатной Community Edition версии и платной - Ultimate. Для начинающего разработчика бесплатная версия содержит весь необходимый функционал и может рассматриваться как полноценная IDE.

Сейчас IDEA получает все больше и больше сторонников и положительных отзывов, являясь, как и говорит ее слоган «умной» средой разработки. Intellij IDEA крайне понятна, проста в использовании, поддерживает большинство современных технологий, имеет одну из самых удобных систем по работе с контролем версий. В ней полностью отсутствует какая-либо перегруженность: минимум диалоговых окон и только необходимая информация выводятся пользователю. Существует обширная система горячих клавиш, позволяющих быстро выполнять большое число нетривиальных функций. По уровню удобства работы с IntelliJ IDEA определенно стоит на уровень выше конкурентов, поскольку будучи «умной» средой, она всегда знает намерения пользователя, подсказывая/помогая ему в работе и экономя большое количество времени и сил. Как таковых минусов у IntelliJ IDEA нет, для новичка, однако, сложность может представлять система разработки GUI, поскольку потребует от пользователя хотя бы минимального набора знаний о построении GUI в Java.

Подводя итог, стоит сделать следующие замечания. Для тех, кто впервые сталкивается с Java и интегрированными средами разработки, идеальный выбор - NetBeans. Для людей, обладающих хотя бы минимальными знаниями Java, подойдет NetBeans или IntelliJ IDEA. Тем, кто имеет желание и возможность провести какое-то время за знакомством и настройкой среды, а также хочет полностью подстроить среду под себя, можно посоветовать Eclipse.

Существует множество способов писать код для веб-приложений: от текстовых редакторов до облачных сред разработки. Трудно сразу решить, какая среда лучше подходит для поставленных задач. Чтобы сэкономить вам время, выбрали наиболее популярные:

В конце каждого раздела размещена сводная таблица, в которой можно наглядно увидеть сравнение функций редакторов для веб-разработки. В статье рассмотрены исключительно бесплатные кроссплатформенные решения, поэтому популярные проприетарные редакторы вроде Sublime Text не вошли в подборку.

Текстовые редакторы для веб-разработки

Komodo Edit

Основные возможности:

  • бесконечная история отмены,
  • обширное количество плагинов,
  • поддержка сотен языков программирования и форматов файлов,
  • мощный поиск и замена,
  • интеграция со сторонними инструментами.

GNU Emacs

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

Eclipse

Облачные IDE

Большинство десктопных приложений перешли в «облако», поэтому нет ничего удивительного, что облачные среды также становятся популярными среди программистов. Не каждый сразу доверяет облачным IDE, но популярные инструменты вроде Github и Pastebin помогают привыкнуть к тому, что исходный код хранится не на локальной машине, а на стороннем сервере.

Cloud9

После нескольких минут работы в Cloud9 создаётся впечатление, что попал в рай для программистов. Интерфейс написан на JavaScript, а серверная часть - на NodeJS. Хотя Cloud9 облюбовали разработчики и дизайнеры интерфейсов, поддерживается подсветка синтаксиса C#, C++, Python, Perl, Ruby, Scala и некоторых других языков.

Встроенный режим Vim - приятный штрих, как и поддержка популярных систем контроля версий вроде Git, Mercurial и SVN. Благодаря наличию CSSLint и JSBeautify это одна из красивейших сред разработки.

Codeanywhere

Ещё один инструмент для создания приложений, который часто возглавляет списки лучших - Codeanywhere. Эта дружественная облачная IDE поддерживает подсветку кода HTML, CSS, JavaScript, PHP, MySQL и других языков. Благодаря наличию приложений для iOS, Android и BlackBerry, с помощью Codeanywhere программисты работают где угодно.

Кроме того, Codeanywhere поддерживает Dropbox и SFTP, которые помогают легко создавать резервные копии файлов проекта и обмениваться ими с коллегами. Это не самая полнофункциональная среда, но свою работу выполняет на отлично.

Система платная, но есть бесплатный тарифный план.

Eclipse Che

Eclipse Che - облачное рабочее пространство разработчика и встроенная IDE. Che предоставляет удалённую платформу с открытым исходным кодом для многопользовательского создания приложений.

Основные возможности:

  • рабочие пространства, включающие среды выполнения и IDE,
  • сервер рабочих мест с RESTful веб-сервисами,
  • облачная IDE,
  • плагины для языков, платформы и инструменты,
  • SDK для создания плагинов и сборок.

Eclipse Che имеет две сборки - однопользовательскую и многопользовательскую. В первой нет компонентов, которые предоставляют мультиарендность и разграничение прав доступа. В этом случае сервер остаётся без защиты, но для локальной разработки - это хороший выбор.

Многопользовательская предоставляет мультиарендность. Учётные записи пользователей и рабочие места изолированы, а для регистрации, управления и аутентификации используется механизм KeyCloak . Permissions API регламентируют доступ к объектам вроде пространств, стеков и организаций. Сведения о пользователях хранятся в базе данных, поддерживающей миграцию (PostgreSQL).

Хотелось бы в очередной раз поднять эту довольно спорную тему.

С тех пор, как я начал заниматься программированием, этот вопрос не даёт мне покоя, а многочисленные темы на форумах и хабре ясности не внесли. Плюс к этому, мне кажется, некоторые аргументы как за одну, так и за другую сторону не были приведены. А у тех, что приведены, неверно расставлены приоритеты и упущен контекст.

В статье я постараюсь исправить это упущение и расставить ещё немного точек над «ё».

Приглашаю всех поучавствовать в поисках идеального инструмента.

О моём опыте

Программировать я начинал ещё в ДОС. на Turbo Pascal-е. Причём, почему-то, IDE мы тогда использовали только для отладки, и то достаточно редко. Для писания кода предпочитали использовать некий безымянный edit.exe без всякой подсветки синтаксиса в связке с Volkov Commander. И этого хватало. Этим же способом я позже занимался ассемблером и, частично, C++.

Продолжая изучать C++ я перешел на Windows и, соответственно, Visual Studio - куда же без него. Застал версии, если не ошибаюсь, с 5 до 7. После простенького редактора это было нечто - кодогенерация и автодополнение вызывали восторг. Правда, во всём этом сгенерированном добре разобраться было практически невозможно, но это казалось неважным.

Через некоторое время я пересел на Linux и занялся веб-разработкой на php. Здесь параллельно изучал vim и для разработки использовал ZendStudio. В какой-то момент начал использовать только Vim для всего - превратил его, в соответствии с многочисленными руководствами в маленькую ide. В нём же написал свою первую велосипедную CMS на php.

Замечу, что до этого программирование не было основным видом моей деятельности. Да, я и для работы писал различные мелкие утилитки, делал темы для для WordPress, но основным родом деятельности было администрирование.

Как только я занялся разработкой профессионально - возможностей vim мне перестало хватать. Был сначала eclipse, потом netbeans, сейчас - phpstorm.

Последние пол-года героически пытаюсь освоить emacs, в т.ч. в качестве основной рабочей среды.

Так что у меня есть с чем сравнивать и, надеюсь, моё мнение будет достаточно обоснованным и агрументированным.

IDE? IDE...

Я долго думал, в какой форме привести сравнение преимуществ и недостаков сторон. Список для этого не очень подходит, т.к. простое перечисление не вполне отражает суть вопроса. Редактор и IDE не противоположности, а инструменты, чья область применения перекрывается в некоторой области. Преимущества редактора далеко не всегда является недостатками среды и наоборот. По этой причине дальше идут более-менее структурированные рассуждения на тему.

Начну, пожалуй, с одного из бесспорных преимуществ редактора - его богатых возможностей по работе с текстом и возможности всё делать не отрывая рук от клавиатуры. Cреды в большинстве своём так не умеют. Только вот нужны ли такие возможности при написании кода? При написании статьи или письма, думаю, удобно одним нажатием клавиши поменять местами 2 слова или передвинуть абзац вверх страницы. Но в тексте программы это, в большинстве случаев бессмысленно и требует рефакторинга. А платить за это приходится либо пальцедробительными сочетаниями клавиш emacs, либо не менее мозгодробительными командами в vim. А ведь это всё нужно поминать! То, что просто решается одним движением мыши, вроде перемещения окна или изменения их размеров, превращается в целый квест. Да даже выделить текст проще мышкой - точнее, быстрее, и на надо считать сколько там слов до нужнго места в тексте. Нет, программисту тоже могут быть полезны эти функции, но дело в том, что его временные затраты на собственно редактирование кода ничтожны, так что выгоды во времени не будет практически никакой. А вот значительное усложнение инструмента - налицо.

Программист 80% своего времени тратит на понимание написанного кода и перемещению по нему. Причём перемещению именно по коду, а не по тексту! И здесь ему редактор не может помочь абсолютно ничем. Список параметров метода во всплывающей подсказке не покажет, перейти к определению метода не позволит, синтаксис не проконтролирует. А IDE, даже самые простые, с этим справляются просто и элегантно. Я недавно потратил минут 10 на поиск определения одного метода в проекте при помощи silversearcher из emacs. Оказалось, класс был определён в другом модуле и т.п. 10 минут, вместо одного клика мышкой! Я в emacs, конечно, недостаточно опытен, поэтому пусть будет 5 минут, даже минута. Но всё равно соотношение впечатляет.

И вот здесь IDE показывает свой, пожалуй, единственный, но очень жирный плюс - это наличие синтаксического анализатор языка программирования. Среда «понимает» что она редактирует код. Редактор - нет. А это и автодополнение, и навигация, и подсветка синтаксических, а, иногда, и семантических ошибок. Кажется, излишество, приятная мелочь, баловство. Но оно, превращается в необходимость после того, как размер проекта привысит некоторый предел. А с учётом объемных современных фреймворков - этот предел наступает практически сразу.

Да, на проекте из десятка файлов и пары тысяч строк, этот плюс не проявляет себя во всей красе. Редактор тоже может выполнять то же самое автодополнение, но он никогда не отсеет бессмысленные, варианты. И если размер проекта приближается к 100 тыс строк и состоит из тысяч файлов не считая библиотек, то становится проблемно выбирать нужное название из мешанины из названий переменных, методов других классов, да и просто слов из комментариев (было такое в vim-е у меня, не знаю, может, исправили). Интеллектуальные подсказки избавляют от необходимости помнить названия нужных функций и их параметры. Часто это просто физически невозможно.

Кстати о проектах. Во всех IDE есть такое понятие. К нему привязываются настройки, ресурсы, можно осуществлять поиск и т.п. В редакторах это в лучшем случае открытый каталог файловой системы. Иногда чуть больше.

Интеграция с отладчиком в редакторах тоже оставляет желать много лучшего. Юнит-тестирование, логирование в какой-то мере спасают ситуацию, но, иногда без отладчика никуда.

Кто-то может возразить, что в современных редакторах многие из этих функций уже реализованы и ничем не уступают самым навороченным IDE. Не соглашусь. Во-первых, полноценных реализаций нет. Не работают они, как должны. Во-вторых, установка всего этого уже достаточно сложная задача. Да даже конфигурация внутренних функций редактора уже нетривиальна. Попробуйте, скажем, включить нумерацию строк в том же emacs! Плюс ко всему, часто нужный функционал реализуется десятком плагинов непонятно как между собой взаимодействующих. А часто ещё и имеющих десяток версий и веток, не всегда совместимых, странно настраиваюхся и т.п. Можно, конечно, потратить месяц, всё настроить и установить (что тоже удел энтузиастов), но это всего лишь приблизит редактор к уровню IDE. К примеру, вернёмся к тем же проектам - я пробовал и Project под vim и projectile под emacs и ещё некоторые плагины. Если Project ещё более-менее отвечает моим требованиям (хотя в последней версии мне вообще не удалось создать проект из-за багов), то projectile оставил исключительно негативные впечатления.

И тем не менее, у редакторов есть несколько областей применения, где они, как минимум, составляют достойную конкуренцию средам разработки.

Во-первых, они себя лучше показывают на мелких проектах. Нет смысла загружать IDE-комбайн для работы с проектом в 10-20 файлов. Проще в редакторе подправить 3-4 строки.

Во-вторых, в некоторых специфических областях все преимущества IDE нивелируются. Например, низкоуровневая разработка для linux. Я этим не занимался, но, судя по структуре кода и предпочтениям разрабочиков (около 70% - emacs и клоны, 25% - vim, 5% - какая-то экзотика вроде jed), IDE там делать нечего. Весь нужный код, с которым происходит работа, собран, как правило в одном-двух файлах, и не нужно прыгать в пределах всего проекта. Да и не сильно поможет автодополнение при выборе из десятка-двух функций с почти одинаковыми названиями.

В-третьих, редакторы могут работать не только с кодом. Всю их мощь можно задействовать при работе с csv или xml файлами. Либо чего-то другого, в чём иногда возникает необходимость, вроде статьи или письма. И не нужно переучиваться, искать удобную программу или запоминать горячие клавиши - всё под рукой, всё одинаковое.

В-четвёртых, возможность работы с языками, для которых нет вменяемой IDE. Скажем, с тем же ruby мне среда не сильно помогла. SublimeText-а оказалось достаточно. Хотя с большим ruby проектом я не работал, возможно, там бы IDE себя показала.

И в-пятых, пресловутая возможность расширения. При наличии хороших плагинов редактор становится очень удобным! Плюс специфическое удовольствие непрерывного тюнига своего основного инструмента и ощущение полного контроля над ним - дорогого стоит.

Итого

Я не очень люблю IDE, хотя так могло показаться по предыдущему тексту. Считаю их довольно монструозными, с кучей ненужных функций, медленными и требовательными к ресурсам. Да и лучшие из них довольно дорогие. Кроме того, я считаю, использование IDE расслабляет, и привязывает к себе. У редакторов, соответственно, всё наоборот. Плюс доступность и возможности тонкой доводки под себя. По крайней мере vim и emacs. В конце концов, они мне просто нравятся. Эту статью, например, я пишу в Emacs.

Но индустрия (и начальство) диктует свои требования. Если не использовать IDE, производительность значительно упадёт. Но никто не даст вам пол-часа на поиск пропущенной запятой в 10 тыс строках кода. Это всё должно выполняться автоматически и автоматически же исправляться. Мне тоже иногда нравится покопаться в коде без всяких инструментов - но на работе это непозволительная трата времени.

После всех своих проб и ошибок я сделал такой вывод - редактор можно использовать для разработки, но с IDE, после определённого предела он не сравнится и использование редактора для чего-то, за что вам платят - непозволительная роскошь. Да, если использовать правильные практики разработки, правильно проектировать/документировать код, следовать стандартам - можно сгладить врождённые недостатки редакторов. Но мы живём далеко не в идеальном мире, поэтому использование IDE - необходимость, независимо от нашего желания.

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то