Интегрированные среды и линукс на десктопе

Последний срач в Google Buzz заставил меня задуматься и поразмыслить насчёт консоли в современных никсах и о больших системах.

Противопоставление разных подходов к интерфейсам и специализация интерфейсов на определенных подходах не дает ничего хорошего. В UNIX эта беда заметнее чем во многих других системах.

Я перепробовал множество минималистичных плиточных оконных менеджеров. Среди них были очень толковые, но ни один из них меня не устроил: все они были слишком зациклены на клавиатуре — большинство из них просто игнорировало мышь как таковую. Это глупость со стороны авторов этих программ — от плиточных оконных менеджеров толку больше всего в связке с мышью, что продемонстрировал iPad, тем более, что основная программа на десктопе современного пользователя — браузер, целиком и полностью ориентирована на мышь.

В результате я использую гном. Он достаточно хорош для всего — он просто работает достаточно хорошо.

С консолью та же беда. Это может прозвучать глупо, вроде как консоль — она на то и консоль, чтобы быть текстовой, и мышь тут не при делах. Но нет — даже в консоли поддержка мыши очень важна. Трудно отказаться от убойной фичи копирования выделением мыши и вставки по щелчку двумя кнопками. В древней операционке Open Genera для лисп машин в консоли была полная поддержка мыши, графики и гипертекста. Но это было больше 20-ти лет назад.

Консоль в UNIX, в том виде в котором она есть сейчас мало того что практически бесполезна для пользователя (простого пользователя), в большинстве случаев она просто вредна.

Я пользуюсь консолью в Ubuntu 10.04 в пяти случаях:

  1. Запуск mplayer с субтитрами. Это долго и нудно, но smplayer тормозной, а стандартный проигрыватель не поддерживает FullHD.
  2. Перезапуск сбойного pulseaudio. Здесь даже и говорить нечего.
  3. Установка софта через apt. Установка софта через консоль — это очень удобно, тут уж ничего не скажешь.
  4. Работа с git (в большинстве случаев консоли я предпочитаю Emacs, но порой проще через консоль), пакетными менеджерами, системами сборки, etc. Профессиональный софт удобно использовать в консоли, на то он и профессиональный.
  5. Правки из-под sudo в труднодоступных местах. Это уже из области техобслуживания, простой пользователь во внутренности системы не полезет, а игры с sudo опасны. Неосторожный rm -Rf / или даный добрым другом «скрипт для оптимизации системы» может иметь очень нехорошие последствия.

В остальном — от консоли толку нет.

Путь UNIX

А как же классический UNIX-way: скрипты, pipe'ы, и т.п? Только если вы сисадмин или упоротый сисадминистый пользователь, которому настолько нечего делать, что он использует все эти навороченые классические консольные инструменты (за пределами элементарных rm, mkdir, cp, chmod, конечно — эти достаточно просты, чтобы быть полезными).

У меня есть книжка в формате PDF. Я хочу её почитать. Как я сделаю это через интерфейс консоли и через интерфейс командной строки поиска Google в Chrome?

Zsh

  • Надо почитать книжку, для этого надо открыть её.
  • Вот только я не помню где она лежит — надо найти её.
  • Я читал в учебнике для системных администраторов что для этого используется команда find.
  • Чтобы узнать (или вспомнить, потому что правила использования такого навороченого механизма полностью стираются из памяти после использования) надо прочесть мануал.
  • Открываю терминал, набираю:
    man find
    
  • Проходит 5 минут. Как все сложно! Открываем вторую консоль и уже в ней продолжаем:
    find -name "SICP*" -type f -exec evince
    find: отсутствует аргумент у `-exec' 
    

    Результат нулевой — команда набрана неправильно. (Ах, да, пользователю нужно еще знать регулярные выражения).

  • Еще разок:
    find -name "SICP*" -type f -exec evince '{}' \;
    

    Заработало, только вот команду надо запускать всегда 2 раза: если в первый раз найдется 2000 файлов, то это будет кромешный ужас. Опечатки в команде приведут к еще более кромешному — можно тупо просрать все свои файлы. Откатить будет невозможно — в UNIX нет корзины. Find ищет по всей домашней директории, и если у меня 2 Тб всякого говна на винте я представляю, сколько времени она будет искать.

Итого, прошло около 12 минут. 12 минут чтобы почитать книжку — это нечто запредельное (боюсь, не освоившийся в консоли пользователь потратит на это куда больше времени). И это с учетом того, что нужно знать иностранный язык, чтобы прочесть мануал. И разбираться в тонкостях запуска команд в консоли.

Google Chrome

Как эта задача решается в хроме.

  1. Открываем хром.
  2. Открываем новую вкладку.
  3. Печатаем «SICP». Хром выдает список с вариантом «SICP PDF». Дважды вниз, один Enter.
  4. Похоже, 4-ый результат — это то, что надо.
  5. Тык.

Наслаждаемся.

Окей, это заняло около 20 секунд. Никаких чтений мануалов. Пишешь что хочешь — получаешь что хочешь. Это — командный интерфейс для людей.

А теперь у меня возникает вопрос. Если и адресная строка хрома и юниксовая консоль — командные интерфейсы, то почему я должен тратить столько времени, пользуясь юниксовой консолью, чтобы почитать книжку? Если я в десятки раз быстрее сделаю то же самое в хроме.

Консоль, в том виде в котором она есть в Linux не так хороша как могла бы быть. Более чем реально сделать её в разы более удобной, полезной, простой, понятной и безопасной. Не стоит зацикливаться на древних, как говно мамонта, методах (классический UNIX-вэй) — будущее за интегрированными системами, совмещающими в себе плюсы всех подходов.

Интегрированные системы

Людям, сведущим в технике, нравятся интегрированные системы (оставим в стороне тех, кому нравится интегрировать системы — привет, пользователи Gentoo (или, прости хосподи, LFS)). Им нравятся минималистичные системы (оставим в стороне программистов на C++ под Windows).

Я могу назвать несколько таких систем.

Chrome
Образцово-показательная минималистичная интегрированная система. Будущая Chrome OS тому подтверждение.
Лисп
Простой, минималистичный язык программирования, в который с завидной легкостью интегрируются любой другой язык программирования. Его любят за это. И ненавидят за скобочки.
Emacs
Emacs — минималистичный? Не смеши меня! — Скажут мне некоторые. Ну или почти все.

Нет, на самом деле Emacs — минималистичный. У него (относительно) небольшое ядро, а все его модули расширения (тысячи их) написаны на лиспе. Другое дело, что Эмакс используется уже несколько десятилетий, и область его применения столь широка, что сравнить её можно, разве что с Chrome OS — потому он довольно большой. Интегрированности эмакса может позавидовать любая другая система, кроме, разве что

Лисп Машина
Emacs некогда был лишь частью лисп-машины, наверное, самой интегрированной системы за всю компьютерную историю. Что и говорить, лисп-машины нравились программистам. И определенно больше, чем им нравится сейчас UNIX.