О будущем

Feb 03, 2012 14:42

Почему [линуксовый] терминал и ssh до сих пор основной инструмент программистов?

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

И во-вторых, из него сделали такой более-менее универсальный канвас, экономный до пропускной способности сети. Одно дело гонять туда-сюда 1000x1000 пикселей, и совсем другое - 80x25 байтиков.

И не надо рассказывать мне про тотальное превосходство текстовых интерфейсов над графическими. Современная линуксовая консоль использует те же метафоры, что и любое гуёвое приложение: screen - это самые обыкновенные табы, curl рисует прогресс-бары, git состоит из набора визардов, vim - полноэкранный текстовый редактор, mc стоит вспоминать или уже понятно?

Сам bash с gnu utils отдельно - это такой удобненький repl, и то, что все вышеперечисленные большие программы именно из него запускаются - стечение обстоятельств, не более.

Окей, в чем проблема? Несмотря на длинную историю и общепризнанность, система терминалов до сих пор страдает от несовместимостей, кодировок, обработки спецклавиш и интегрированности в десктоп пользователя (банальные ctrl+c/ctrl+v очень чужеродны в этой среде, например, или перекидывание файлов с локала на ремоут и обратно). Кроме того, средств терминала бывает маловато - картинку не покажешь, линию не нарисуешь, мышкой ничего не потаскаешь.

На десктоп давно пришли графические приложения, лишенные этих недостатков. Только проксирование их туда-сюда не получило распространения, то ли из-за зоопарка форматов, то ли из-за высоких требований к каналу связи. Банально, хочу я запустить vim на удаленной машине - я запускаю терминал, пишу ssh prokopov@host, затем vim. А если я хочу запустить графический блокнот, что мне писать? Непонятно. Не дай бог обе стороны еще как-то настраивать придется. Битва проиграна, и я бы не наделся, что в будущем эта ситуация еще изменится.

Но терминалы умрут. А мир будущего я вижу себе так:

Вместо sshd на сервере крутится какой-нибудь webd. Вместо ssh prokopov@host ты заходишь на https://prokopov@host/, авторизуешься и видишь REPL по типу bash-а. Хотя это может быть и питоновский repl, или вообще какая-нибудь веб-панель сервера с набором ссылок-иконок. Короче, как сейчас выбирается login shell, так он и будет выбираться.

Дальше, запуская, скажем, условный webvim, он запускает на сервере процесс, процесс открывает порт, а тебе в браузере открывается отдельная страничка https://prokopov@host:12234/, где ты с этим webvim-ом и работаешь.

Давайте посмотрим, какими преимуществами обладает такой подход:

  1. Проксировать http трафик уже сейчас умеют лучше, чем ssh.
  2. Клиенты для веба распространеннее и проще в обращении, чем ssh.
  3. Клиенты интегрированы в десктоп-окружение - нормально работает copy/paste, легко гонять файлы туда-сюда, комбинации клавиш нативные, и так далее.
  4. По мощи веб-приложения равны десктопным, то есть далеко впереди терминальных.
  5. Веб-приложение нетребовательно к пропускной способности сети.
  6. Более того, оно отзывчивее на медленных соединениях за счет того, что логика работает на клиенте, а на сервер ходит только по делу и асинхронно.
  7. Разработка веб-интерфейса лишена того ада, треша и угара, которые сейчас называются ГУИ фреймворками.
  8. Кроссплатформенность станет сильно проще, т.е. приложение на яве/питоне/руби можно поставить на сервер с любой ОС, и оно везде, всегда будет работать одинаково.
Программистам тоже наступит рай, потому что можно писать на чем угодно и не бояться, что будет выглядеть ненативно.

Возможность открыть приложение в нескольких табах, с нескольких своих компов, послать ссылку другу, скриптование на клиентской стороне, и многое другое еще предстоит осмыслить. Браузерам тоже есть куда подрасти, но с ними уже почти все нормально, даже несовместимости ушли в прошлое с приходом IE9.

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

идеи, веб-шмеб, важное, девелопмент, интерфейсы

Previous post Next post
Up