Лучшие редакторы по программированию? Бесконечная битва без явного победителя
Опубликовано: 2022-03-11Несмотря на очевидные доказательства обратного, программисты — люди. И, как и всем людям, нам нравится пользоваться своей свободой выбора. Независимо от того, заключается ли этот выбор в том, чтобы принять красную или синюю таблетку, надеть платье или брюки или использовать одну среду разработки вместо другой, выбор, который мы делаем, помещает нас в ту или иную группу людей. Выбор неизбежно следует за нашей оценкой вариантов. А сделав выбор, мы склонны считать, что тот, кто выбирает по-другому, совершил ошибку.
Вы можете легко поискать в Интернете и найти сотни дискуссий о Emacs и Vim. Даже если вы прочитаете их все, объективно выбрать победителя будет невозможно. Однако говорит ли выбор среды разработки о качестве работы, которую может выполнить разработчик? Точно нет!
Хороший разработчик может написать свой код в Блокнот и при этом получить отличные результаты.
Безусловно, при выборе инструментов для своей работы профессионалы учитывают множество факторов. Это верно для любой профессии, включая разработку программного обеспечения. Однако довольно часто выбор основывается на личном вкусе, а не на чем-то легко осязаемом.
Программисты тратят большую часть своего времени на изучение среды разработки, поэтому естественно, что нам нужно что-то красивое и функциональное. Каждая среда разработки имеет свои плюсы и минусы. В целом они являются движущей силой индустрии разработки программного обеспечения.
Что должен учитывать разработчик при выборе набора инструментов программирования, например редактора программирования? Ответ на этот вопрос не так прост, как может показаться. Разработка программного обеспечения близка к искусству, и есть довольно много «нечетких» факторов, которые отличают шедевр от предмета коллекционирования с завышенной ценой.
Каждый язык программирования, будь то Java, C#, PHP, Python, Ruby, JavaScript и т. д., имеет свои собственные методы разработки, связанные со структурой проекта, отладкой и развертыванием. Однако у них всех есть одна общая черта — редактирование кода. В этой статье мы оценим различные платформы разработки с точки зрения самой распространенной задачи в разработке программного обеспечения: написания кода.
IDE против текстового редактора общего назначения
Интегрированная среда разработки (IDE) (или интерактивная среда разработки) — это программное приложение, которое предоставляет программистам комплексные средства для разработки программного обеспечения. IDE обычно состоит из редактора исходного кода, инструментов автоматизации сборки и отладчика, и многие из них поддерживают множество дополнительных плагинов и расширений.
Текстовые редакторы — это более простые приложения. По сравнению с IDE они обычно соответствуют только сегменту редактора кода IDE. Тем не менее, они часто намного больше, чем это. IDE создаются для целей разработки программного обеспечения, в то время как многие текстовые редакторы также предназначены для использования не разработчиками.
Языки со статической типизацией могут получить много преимуществ от IDE. Из-за строгих правил типизации среда IDE может обнаруживать ошибки и несоответствия имен в классах и модулях и даже в файлах непосредственно в редакторе перед компиляцией. Эта функциональность входит в стандартную комплектацию многих IDE, и по этой причине IDE очень популярны для языков со статической типизацией.
Однако сделать то же самое для динамически типизированных языков невозможно. Например, если имя метода может быть сгенерировано самим кодом, созданным из серии конкатов строк, для обнаружения ошибок именования в динамических языках требуется не что иное, как запуск самой программы. Поскольку одно из основных преимуществ IDE не распространяется на программистов на динамических языках, они более склонны придерживаться текстовых редакторов, таких как Sublime. Кстати, это также основная причина, по которой движение разработки через тестирование выросло вокруг динамических языковых сообществ и не имело таких сильных последователей в статических языках.
Что делает хорошего редактора программ?
Помимо ряда различных функций для разных языков, каждый редактор программирования должен иметь хорошо организованный и понятный пользовательский интерфейс. Не следует упускать из виду и общую эстетическую привлекательность. Дело не только в том, чтобы хорошо выглядеть, так как хорошо разработанный редактор с правильным выбором шрифта и цветов помогает снизить нагрузку на глаза и позволяет вам работать более продуктивно.
В современной среде разработки крутая кривая обучения является проблемой, независимо от набора функций. Время всегда дорого, поэтому к хорошему редактору должно быть легко привыкнуть. В идеале программист должен иметь возможность сразу приступить к работе, не прыгая через слишком много обручей. Швейцарский армейский нож — это практичный и полезный инструмент, но любой может освоить его за считанные минуты. Точно так же для программистов-редакторов простота является достоинством.
Пользовательский интерфейс, функции и рабочий процесс
Давайте подробнее рассмотрим пользовательский интерфейс, различные функции и возможности, а также часто используемые инструменты, которые должны быть частью любого редактора программирования.
Номера строк, конечно же, должны быть включены по умолчанию, и их можно просто включить или отключить.
Фрагменты полезны для вставки стандартных блоков текста в фиксированный макет. Тем не менее, программирование во многом заключается в том, чтобы сказать что-то только один раз, поэтому будьте осторожны с фрагментами, поскольку они могут затруднить поддержку вашего кода в будущем.
Возможность анализа или проверки синтаксиса текущего файла полезна, как и возможность его запуска. Без этой возможности программист должен переключиться на внешнее окно командной строки, выбрать и запустить правильную команду, а затем пройтись по сообщениям об ошибках, чтобы найти источник ошибки. Однако линтинг должен находиться под контролем программиста, потому что задержка, вызванная линтом, может прервать работу кодера в критический момент.
Встроенный документ полезен до тех пор, пока он не мешает, но иногда полезнее открыть страницу браузера с определениями классов, особенно когда имеется множество связанных классов, которые не расширяют друг друга напрямую. Достаточно легко вырезать и вставлять код из документации браузера в код, который пишется, поэтому дополнительная сложность встроенной документации часто становится менее полезной, более того, более раздражающей, по мере того, как знания программиста о документации увеличиваются.
Завершение слов полезно, поскольку оно быстрое и почти такое же надежное, как редактируемая документация, но менее навязчивое. Приятно ввести всего несколько символов слова, а затем нажать Enter, чтобы получить остальные. В противном случае приходится страдать от лишнего набора текста, вызывающего отвращение у ленивых программистов, которые хотят набирать ee
, а не более длинную exponentialFunctionSquared
. Завершение слов удовлетворяет требованиям, сводя к минимуму набор текста, обеспечивая последовательное наименование и не мешая.
Переименование переменных и функций в программе полезно, но вы должны иметь возможность просмотреть изменения и убедиться, что ваш код не сломан. Опять же, завершение слов полезно на полпути, поскольку оно работает для всех языков; вы можете использовать длинные имена для элементов с длительным сроком службы, не тратя время на набор текста. Вы можете локально использовать ссылки на них через более короткое имя, чтобы сократить выражения, которые в противном случае могли бы растянуться на слишком много строк. Если вам нужно переименовать, длинные имена уникальны, поэтому этот подход работает для всех языков и всех файлов.
Исходные файлы иногда могут сильно вырасти. Сворачивание кода — удобная функция, упрощающая чтение длинных файлов.
Поиск/изменение с ограничением области действия на локальный, инкрементный или глобальный с метасимволами и регулярными выражениями в наши дни является частью минимального требования, как и подсветка синтаксиса.
Обзор популярных программных редакторов
За эти годы я сменил несколько редакторов, и вот что я о них думаю:

Emacs: один из самых популярных редакторов в мире. Величайшей особенностью Emacs является его расширяемость, несмотря на сложность его языка расширений (в нем даже можно играть в тетрис с помощью
Mx tetris
). Поклонники Emacs считают его терминальный интерфейс отличной функцией, в то время как другие могут возразить, что это недостаток. По моему личному опыту, я обнаружил, что это слишком много, чтобы перенимать и учиться. Я уверен, что если вы знаете, как использовать Emacs, вы никогда не будете использовать ничего другого, но взять и изучить всю культуру — это больше, чем я хотел. Тем не менее, его популярность среди разработчиков доказывает, что он далеко не пережиток прошлого, а также остается частью нашего будущего.Vi/Vim: Vim — еще один мощный редактор на основе терминала, который входит в стандартную комплектацию большинства операционных систем xNIX. Помимо того, что у меня другой интерфейс, чем у Emacs, мое мнение практически такое же. Если вы выросли на нем, я уверен, что вы никогда не будете использовать ничего другого. Наличие навыков работы с Vi значительно упростит вашу жизнь при работе через SSH и другие узкие места, и у вас не будет проблем со скоростью, как только вы освоитесь с нажатиями клавиш. Хотя взломать его не так сложно, как Emacs, кривая обучения все же довольно крутая, и он определенно мог бы использовать несколько приятных функций оконного редактора.
SublimeText: верный своему названию, SublimeText — красивый текстовый редактор с множеством функций. В отличие от некоторых подобных редакторов, SublimeText имеет закрытый исходный код, поэтому его нельзя модифицировать на низком уровне. SublimeText предлагает простоту традиционных текстовых редакторов с простым и быстрым пользовательским интерфейсом. Многие разработчики находят его более простым в использовании, чем Vim, особенно это касается новичков. Кривая обучения просто не такая крутая. Хотя пользовательский интерфейс минимален и прост, SublimeText предлагает несколько отличных функций, таких как уменьшенный код отображения справа от пользовательского интерфейса, позволяющий пользователям быстро прокручивать свой код и перемещаться с относительной легкостью. Хотя это не совсем бесплатно, демо-версия с ограниченными возможностями является бесплатной. Разблокировка всех функций обойдется вам в 70 долларов.
Atom — это результат усилий GitHub по созданию редактора программирования для нового поколения разработчиков. Хотя Atom все еще находится в стадии разработки, он является очень способным редактором с активным сообществом разработчиков, заинтересованных в новых расширениях, библиотеках JavaScript и многом другом. Его недостатки включают в себя некоторые особенности пользовательского интерфейса, возможность неправильного поведения некоторых дополнительных пакетов и сообщения о проблемах с производительностью при работе с (очень) большими файлами. Но проект находится в активной разработке, и текущие недостатки, скорее всего, будут исправлены. Atom — это проект с открытым исходным кодом, и его можно легко взломать в соответствии с вашими потребностями.
Nano: отлично подходит для узкого угла, но недостаточно многофункционален, чтобы предотвратить неизбежную мысль, закрадывающуюся в голову, что должен быть более быстрый способ сделать это, когда кто-то пытается нажимать клавиши, чтобы сделать отступ в блоке кода, сохраняя при этом комментарии в строке в столбце 80! У него даже нет подсветки текста, и его нельзя использовать ни для чего, кроме как для изменения файла конфигурации.
TextMate2: самый большой недостаток TextMate в том, что он работает только на Mac. По словам его создателей, «TextMate переносит подход Apple к операционным системам в мир текстовых редакторов». Соединяя основы UNIX и графический интерфейс, TextMate выбирает лучшее из обоих миров, что приносит пользу как опытным сценаристам, так и начинающим пользователям. Это редактор, который предпочитают многие разработчики Ruby, Python и JavaScript, а также отличная поддержка Bash или Markdown. На момент публикации этой статьи TextMate 2 все еще находится в стадии бета-тестирования, но уже имеет очень зрелую экосистему плагинов, которая обещает расширить ее даже за пределы расширений Emacs.
jEdit: основан на Java, некоторые считают его медленным. Конфигурация из коробки может оттолкнуть некоторых людей, но jEdit может быть очень быстрым, если правильно настроен, а также очень красивым.
Eclipse: еще одна широко используемая IDE, Eclipse очень популярна среди разработчиков Java, но была адаптирована для многих различных платформ. Мы могли бы утверждать, что его монолитная архитектура — скала, которая утянет его под воду, но это по-прежнему одна из самых популярных платформ среди разработчиков.
Aptana Studio: комплексная среда разработки веб-приложений с открытым исходным кодом. Он доступен в виде подключаемого модуля Eclipse, что делает его популярным среди некоторых разработчиков Java. Автономная версия еще компактнее и предлагает ряд различных тем и вариантов настройки. Возможности управления проектами Aptana также могут пригодиться программистам, которые оттачивали свои навыки в Eclipse. В то время как более ранние версии страдали от проблем с производительностью на некоторых аппаратных платформах, эти проблемы были решены в Aptana Studio 3 и должны остаться в прошлом.
NetBeans: еще одна относительно популярная среда IDE с открытым исходным кодом и кроссплатформенной поддержкой. Он несколько медленнее при запуске, чем простые редакторы, такие как SublimeText, а выбор надстроек ограничен по сравнению с некоторыми альтернативами. Многие Java-разработчики полюбили NetBeans благодаря простой интеграции SCM и поддержке HTML5. В последних выпусках также улучшена поддержка NetBeans для PHP.
JetBrains: предлагает семейство IDE для Java, Ruby, Python и PHP. Все они основаны на одном и том же движке. IDE JetBrains сами по себе очень эффективны и завоевывают все большее число поклонников. Однако они не являются бесплатными решениями с открытым исходным кодом, хотя доступна 30-дневная пробная версия и разумные цены.
Komodo Edit: Komodo Edit обладает большим потенциалом, и все же он полон раздражающих маленьких «ошибок» и особенностей, которые могут расстраивать отсутствием ортогональности. Komodo Edit кажется загроможденным, и это позор, потому что он явно обладает огромными возможностями. Я продолжаю возвращаться к Komodo Edit в надежде, что упустил какой-то организационный принцип, и каждый раз меня отбрасывает беспорядок неорганизованных возможностей.
Geany: Geany не является крупным влиятельным игроком, как многие другие редакторы в этом списке. Оно определяется скорее тем, «чем оно не является», чем тем, «чем оно является». Он не медленный, в нем нет большого наследия старых времен, в нем нет возможности макросов или многооконного режима работы с буфером. Тем не менее, то, что он делает, он делает достаточно хорошо. Это, пожалуй, наименее требовательный из всех редакторов, которые я пробовал, и он все еще может делать 90 процентов того, что вы ожидаете от редактора программиста. Geany достаточно хорошо выглядит на Ubuntu, и это одна из причин, по которой я выбрал его в качестве предпочтительного редактора.
Мой вывод
Было бы самонадеянно объявлять только один из них лучшим редактором программирования среди этих замечательных инструментов. И есть довольно много редакторов, которые я даже не пробовал. Не существует универсального решения. Именно это заставило меня попробовать несколько разных редакторов; если вас больше интересует долговечность редактора, вам также следует прочитать оценку редакторов кода Робена Клини.
В настоящее время я использую Geany, но это потому, что он соответствует моим требованиям. С помощью Geany и с помощью Perl/Gimp/Audacity/Sox я могу разрабатывать и поддерживать кодовую базу Java для разрабатываемых мной приложений для Android, подготавливать их к компиляции в различных конфигурациях для нескольких дистрибьюторов, исходников, lint. , компилировать, индексировать и создавать файлы .apk
, а также распространять эти приложения по всему миру.
Ваша линия разработки может предписывать другой набор требований, и я надеюсь, что сэкономил вам время на поиске наиболее подходящих программных редакторов.