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

Профессиональные программисты, как новички, так и профессионалы, нередко являются сторонниками концепции 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) образовались сообщества разработчиков, работающие над расширениями для любых видов работы с текстом. Для обоих редакторов есть плагины под любые программистские задачи, и ряд из них я, Vim-зависимый человек, назвал бы жизненно важными.

Мне кажется, что в конечном счете разработчики расширений стремятся превратить названные текстовые редакторы в настоящие 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 в пользу несколько эзотеричного мира командной строки. Я лишь хочу показать вам, чем мы занимаемся по ту сторону ограды.

Продолжение следует

Добавить комментарий

Войти с помощью: