Command Line interface миграция

От известно време насам подменям инструментите, които ползвам за разработка с конзолни такива. До известна степен това беше задвижено от Ruby on Rails влизането ми, донякъде от това, че започнах да ползвам vim. Стъпка назад във века на графичните интерфейси и шарените масички на майкрософт?

Честно казано съм уморен от графичните интерфейси. Продуктите, които ползвам (или бих могъл да ползвам), са прекалено сложни - менюта, панели, тулбарове, слайдери, дървета, диалози, и други подобни. Отделните производители запазват сравнително еднакво поведение на софтуерите си, но все още са далече от уеднаквяване помежду си (сравни ms office с пакета на adobe, да речем). А аз не искам да помня коя опция в кое меню беше. И коя иконка какво значеше. По-лесно ми е да запомня името на командата, или дори последователността на натискане на клавишите. в конзолен режим софтуерът е много по-унифициран като поведение, поради ограничения начин на взаимодействие - команда, име на файл, някоя и друга опция, пренасочване на аутпута.

Разбира се, далеч не съм някакъв конзолен фундаменталист. Текстовия режим далеч не е най-удобния начин да визуализираш информация. Обаче считам, че софтуера (без изключение) трябва да предоставя възможността да взаимодействаш с него посредством команден ред, пък той нека да визуализира нещата графично. Не ви ли е минавало през акъла просто да напишете copy *.mp3 ~/My Music в дадена папка, която разглеждате с експлорера, наместо да извършвате всичките миши операции? autocad (архитектурна работа) предлага точно подобен начин за взаимодействие, хората го ползват. Неслучайно, предполагам. Скоростта на операциите е несравнима. Да, по-трудно е за начинаещите, но развързва ръцете на мощните юзъре.

За щастие, не съм единствения луд, който счита печатането за правилния начин да взаимодействаш с машината. Enso пичовете имат софтуерче, което е стъпка в тая посока. За момента обаче е много далеч от това, което ми трябва (да не говорим, че не мога да печатам, докато държа caps lock, освен ако не го изнеса на педал под бюрото).

Тук идва дилемата - леснота на употреба VS бързо и мощно. Ползвам конзолно софтуер, които ползвам по много (файлов мениджър, текстови редактор, клиент към база данни, FTP клиент, сорс контрол). За мен няма никакво значение колко трудни и криптични са командите, стига да мога да губя максимално малко време в боравенето. Ще отворя няколко пъти хелпа, и ще запомня каквото ми трябва. Дали обаче командния ред трябва да бъде единствения начин да си говориш с програмата? А можем ли да говорим за ползваемост на командния ред? Колко лесни ще са за запомняне командите и опциите им, вероятно.

И като за последен въпрос - представете си команден ред като добавка към интерфейса на gmail или basecamp, или друг ваш любим уеб базиран софтуер. Да речем
label important `find -sender ivan*`

7 Коментара по “Command Line interface миграция”

  1. Боби:

    По тоя въпрос не се чуствам компетентен да коментирам, но ще фърля малко случайни мисли, които ми дойдоха, докато четох.

    В ДОС дните основният ми проблем с командите беше нещо като липса на контекст; copy *.mp3 и т.н. е чудесно, но аз реално не виждам кое местя и някак си дестинацията е също в м’глата. “КЪДЕ, ПО ДЯВОЛИТЕ, СЪМ!?” е въпрос, който ще чуеш на всеки 10 минути от един прохождащ потребител. Туй е въпрос на настройка на съзнанието, но някои хора вероятно постигат това по-трудно. Quicksilver-а се бори с това добре, защото ти *показва* какво става - кое нящу какво ще го правиш в коя посока. Макар че за манипулация на много файлове не ми е удачен.

    Бях чел едно време, че визуалните интерфейси са със less thinking involved. Мисля, че се отнасяше до простите неща де, но все пак… Ако искам да взема само последните 10 свалени клипчета от папка с филми е доста по-задоволително да направя Ctrl+F, Size under 100MB, ентър, клик за сортиране по дата. Така имам нещо като вътрешно спокойствие, че вземам точно каквото ми трябва, а не разчитам на regexp / wildcard, който може да засере неизвестно какво…

    Трябва да си 100% безгрешен писач, което сигурно 99% от хората не са. Ако пропуснеш един слаш или объркаш една буква, всичко се засира. Метнал си 100 МП3 файла в папка с други МП3 файлове - айде върни ги сега. Ctrl+Z?

    Правилно е това за унифицирането на интерфейсите, но много неща си работят универсално, а другите са твърде специфични, за да има смисъл от таквоз нящу. Blur в Ексел? Column select във Фотошоп? В тая връзка, хората (нови потребители/начинаещи) очакват примерно Ctrl+C/V/Z да работят по подобен начин в различните програми, което е добре и е хубаво, че наистина работят.

    Може би command line хавите са нещо като напън да говориш по-семантично с машината. Може би тези команди са основата на някакви бъдещи нови интерфейси, които няма да имат нужда от клавиатура, или ще искат друг тип дивайс. До ден днешен размишлявам защо е нужно да се пишат думи, за да създадеш нещо в компютъра…

  2. howbizarre:

    хъх…

    Сано един луд - гении
    Още един луд - изключение
    Много други луди - медицинско описание… хехе…

    аз съм се симбионизирал… колкото през конзолота… толкова и визулано…

    wget - още нещо, което можеш да добавиш към конзолните си инструменти .. :о)

  3. Петьо:

    wget-а е в играта, “бих казал от доста време”. Боре, разсъжденията ти са напълно уместни. Факта, че трябва да помниш къде си и какво точно има в текущата папка (говорим за файлово управление) е проблем. За това наблягам на текстовия режим за команди, не на показване на информацията. Толкова и за ctrl-z, и за липсата на кошче при шела. Да, така е. Зор. Ако беше хубаво, щеше да е масово наложено.

    Очевидно е, че блър в ексел няма. Говоря за организацията на менютата, туулбаровете (отляво в фотошоп, горе в уорд). Активацията на инструментите. И дори концепцията за “инструменти”. Семантика може би е ключовата дума в случая. Командите да се доближават до думите, които изричаш, когато описваш нещо. Помисли - изкривяването да обясняваш с “Контрол це тука, кликваш тука, натискаш това, контрол ве”. Текстовия режим е по-лесен за изговаряне.

  4. ники:

    Гледах едно видео в google, където Еza Raskin (синът на Jef Raskin - човекът в основата на macintosh линията в apple навремето и автор на разни “основополагащи” книги) говори колко е труден графичния интерфейс за хората и колко по-лесно би било ако за интерфейс се ползва писане на команди на обикновен език. Искаш компютъра да ти свърши нещо, пишеш му “Свърши ми еди кво си” и той ти го върши. Почти за квото Петьо говори

    Та тоя Еza Raskin с още няколко човека се оказа, че са направили това Еnso, за което Петьо споменава. Действа на принципа на командния ред, но командите са от обикновения английски език. Независимо къде си, натискаш CapsLock, пишеш open edi kvo si и ти отваря edi kvo si. Това edi kvo si може да е всичко - файл, фолдер, букмарк от браузъра, можеш сам да си дефинираш такива edi kvo si-та. И има най-разпространените команди - copy, paste, close, minimize… Качих си го да го пробвам, засега изглежда удобен, само гадното е, че трябва да държиш Caps натиснат докато пишеш.

  5. николай:

    Още две причини, поради която са удобни текстовите команди/описания:
    * лесна автоматизация — командите с текст можеш да си генерираш по амнайсе начина и то лесно. Я върви автоматизирай цъкането по графичен интерфейс (не че не може…)
    * успешна повтаряемост — искам да си генерирам javadoc за няколко класа. Е какво правя — цъкам на определени места няколко пъти и сетвам различни опции. Утре обаче, когато трябва да направя финалната документация не натискам където трябва (напрежение) и уйде коня в реката. С текстови команди, дори ако не знаеш какво точно правиш, знаеш, че можеш да го повториш едно към едно няколко пъти.

    Относно ползваемостта — за доста инструменти за команден ред вече има програмируемо дописване (zsh, bash), което хем спестява време, хем намалява риска за грешки. Друго си е нещо друго да знае вместо теб опциите на mplayer или на apt.

    Относно мечтата ти в края на писанието — в света на уеб-услуги, API-та и подобни щуротии, защо да не е възможно?

  6. Петьо:

    Николай (ама много Колювци станахте, начи, ще ви индексирам), напротив, даже си е доста възможно. Ама на - клекнал съм и чакам някой да го направи. Същата работа като преди 4 години, когато Ники (по-горе) измисли идеята за sifr, пък мен ме примързя да я реализирам :) . И после хората като го напраиха, аз седъ и си хапя гъза.

    По посока cli-тата - Дешев ще пише книга за power shell. Чакам да го приключи и да ми разкаже има ли смисъл от това пауър шела за юзърски таскове.

  7. Боби:

    Едно време (тука говоря преди 10+ години), на една хижа, дет са бяхме дръннали и напили в гимназията… та там говорихме за някакъв нов подход към софтуера въобще. Програмите да са нещо като loose heaps of commands. Да си купуваш команди, а не програми. Като си купиш Копиране (което, очевидно, включва paste/cut), можеш да копираш всичко, навсякде. Файлове, парче от картинка, кадри от филм, клетки в Юксел… Специфичните софтуери ще имат специфични команди, но все пак универсални, до където е възможно. Sharpen ще работи без значение дали си отворил TIFF или AVI файл. Sort - в Ексел, Ворд, за файлове. Конкурентни компании ще пишат варианти на команди. Моето Копиране е по-добро от твоето!

    Разбира се, това си го мислихме малко след като бяхме изпили една 3 литрова пластмаса с ракия и още толкова пелин и малко преди да извадим колчетата за домати от градината на хижарите и да ги изгорим в печката с дърва… но тези факти не омаловажават размислите ни! :)

Коментирай