6 September 2012

Unix как IDE: Введение

Configuring Linux
Original author: Tom Ryder
Профессиональные программисты, как новички, так и опытные, обычно придерживаются концепции IDE, или «интегрированной среды разработки». Правда, удобно же иметь самые необходимые средства организации, написания, поддержки и тестирования кода в одном приложении с единым интерфейсом для всех инструментов? К тому же, среда, специально спроектированная для программирования, дает ряд преимуществ, таких как автодополнение, проверка и подсветка синтаксиса.

Подобные средства есть для всех распространенных настольных ОС, включая Linux и BSD, и многие из них совершенно бесплатны, так что вряд ли имеет смысл ограничивать себя в Блокнотом Windows, nano или cat.

Однако, в среде поклонников Unix гуляет в разнообразных вариациях мем о том, что «Unix — это IDE», в том смысле, что средства, которыми разработчики располагают в терминале, легко реализуют основные возможности современных IDE. Вы можете соглашаться или отказываться признать Unix «IDE» в том самом смысле, что Eclipse или Microsoft Visual Studio. Так или иначе, вас скорее всего удивит, насколько законченную среду разработки может являть собой скромный Bash.


В каком смысле Unix — это IDE?


Смысл IDE состоит в том, чтобы объединить все инструменты общей концепцией интерфейса, и без лишних мучений научить их совместной работе. Это особенно важно для GUI-приложений, поскольку они обычно с большим трудом находят общий язык. Кроме возможности копипастить текст, у них нет других средств взаимодействия.

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

Отличная идея



Такой подход не остался уделом только лишь убеленных сединой ветеранов Unix; вокруг современных воплощений Vi и Emacs (Vim и GNU Emacs) образовались сообщества разработчиков, работающие над расширениями для любых видов работы с текстом. Для обоих редакторов есть плагины под любые программистские задачи, и ряд из них я назвал бы жизненно важными.

Мне кажется, что в конечном счете разработчики расширений стремятся превратить названные текстовые редакторы в настоящие IDE. Нередко можно встретить посты о том, что Vim или Emacs можно вообще не покидать в процессе работы.
Но, думается, впихивать в текстовый редактор несвойственные ему возможности не есть верный подход к проблеме. Bram Moolenaar, автор Vim, похоже, в значительной степени согласен со мной, если судить по :help design-not. Командная строка всегда доступна по Ctrl-Z, и ее зрелый, хорошо интегрированный внутри себя инструментарий по возможностям заткнет за пояс любой текстовый редактор.

О этой серии публикаций



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

  • Управление файлами и проектамиls, find, grep/ack, bash
  • Текстовый редактор и средства редактированияvim, awk, sort, column
  • Компилятор и/или интерпретаторgcc, perl
  • Средства сборкиmake
  • Отладчикgdb, valgrind, ltrace, lsof, pmap
  • Контроль версийdiff, patch, svn, git


О чем не буду говорить


Я не считаю, что IDE плохи; они великолепны, как раз поэтому я и пытаюсь утверждать, что Unix можно использовать аналогично, или по крайней мере думать о Unix в таком качестве. Я также не собираюсь утверждать, что Unix — всегда лучшее средство для задач программирования; вероятно, он гораздо лучше заточен для разработки на C, C++, Python или Shell, чем для таких мейнстримных языков, как Java или C#, особенно в части написания сложных GUI-приложений. Также я не собираюсь убеждать вас выбросить на свалку тяжко выстраданное знание Eclipse или Microsoft Visual Studio в пользу несколько эзотеричного мира командной строки. Я лишь хочу показать вам, чем мы занимаемся по ту сторону ограды.

Unix как IDE: Введение
Unix как IDE: Файлы
Unix как IDE: Работа с текстом
Unix как IDE: Компиляция
Tags:ideunixgnu
Hubs: Configuring Linux
+68
34.9k 334
Comments 71
Top of the last 24 hours