Зачем нужна КС?

Следует четко разделять задачи, для которых необходим графический (``дружественный'') интерфейс и те, которым более чем достаточно стандартных потоков STDIN, STDOUT, STDERR и параметров, задаваемых при вызове. Первых, как это многим не удивительно, довольно мало и каждая их них охватывает собой некий вполне определенный класс задач. Вторые же оформляются обычно в виде команд и представляют по сути язык общения пользователя с его системой. Практически любая задача, которую можно выразить одним предложением, можно реализовать (а если задача не уникальна, то, вероятно, давно уже реализовано) в виде команды (с командой-подлежащим, или сказуемым и её параметрами-другими частями речи). Предложения конечно же могут быть сложносочиненными, то есть состоять из нескольких, разделенных, к примеру, точкой с запятой (или символом перенаправления ``|'' для команд), частей. И вполне естественно, что задача которую можно выразить в терминах, знакомых нам и понятных системе, разрешается проще и эффективнее именно набором соответствующей фразы/предложения, нежели использованием некоего интуитивно-дружелюбного интерфейса13.

Возникает вопрос -- так ли необходимо изучать командную строку, если любому доступен парк ПО на все случаи жизни? Отвечу словами Фредерика Брукса: ``не бывает серебряной пули''. Редко можно найти программу целиком и полностью отвечающую нашим потребностям в настоящем и будущем. Это возможно только тогда, когда потребности сами определяются исходя из наличия и возможностей существующего ПО. Существуют также, конечно же, и языки программирования высокого уровня (к примеру Perl, Python, Ruby14), на которых возможно довольно простое изложение любых алгоритмизируемых задач, но для этого их следует во первых знать, а во вторых -- это слишком универсальный и довольно сложный инструмент, их использование примерно аналогично самостоятельному приготовлению себе обеда, вместо заказа оного в столовой, или ресторане. Можно, конечно, готовить себе все самостоятельно (и со временем стать профессиональным поваром), но большинство людей почему-то предпочитают обедать в столовых... Вот и команды-предложения являются официантами-поварами нашей системы-столовой15. И гораздо проще (и удобнее) научиться общению с ними, нежели тратить свое время, которого, увы, на все не хватит...

Соответственно при возникновении очередной задачи в Unix принято разбивать её на максимально простые подзадачи (каждой из которых соответствует некоторая программа-команда), и запускать конвейерную обработку ими входных данных.
Например, задача: ``выделенный текст перекодировать из неизвестной, но русской кодировки в koi8r, результат поместить в буфер обмена''.
Решение: xsel|konwert any/ru-koi8r|xclip.
Как видите, результат является практически дословным переводом фразы-задачи на понятный системе язык, причем заметно более лаконичный...

Кроме того привычка к формулированию своих действий вербально (в виде слов/предложений/скриптов), позволяет заметно повысить эффективность работы и на дектопном поле. К примеру, многие догадываются, что в WindowsOS иконки существуют не только для запуска приложений, но и для удобного использования принципа Drag&Drop. То есть перетащив файл на иконку Word, мы запускаем программу на открытие данного файла. Но многие ли используют иконки для чего-либо большего? Например, для автоприведения файла к какому-либо частоиспользуемому нами виду16, что едва ли займет пол десятка строк на word-basic?



Footnotes

... интерфейса13
Естественно во множестве ситуаций использование дектопной метафоры оправдано и как следствие -- наиболее эффективно. К сожалению, в последнее время оную используют и в совершенно неадекватных задаче ситуациях, что влечет ничем неоправданные потери эффективности нашей работы.
... Ruby14
Для последнего даже есть великолепный слоган: ``предназначен уставшим от языков, начинающихся на «P»''
... системы-столовой15
Продолжая аналогию, можно найти и аналог для ``дружественного'' (кавычки я использую применительно к тому ПО, которое неоправданно использует дектопную метафору) ПО -- Макдоналдс. Одинаковые дружелюбные улыбки, унифицированная junkie-food для среднего человека со здоровым желудком. Все настолько унифицировано, что умение разговаривать становится не обязательным, но вместе с тем и снижаются возможности...
... виду16
Да, это, конечно же, можно сделать парой кликов в самом Word, но зачем заставлять себя в пустую расходовать время?

Copyleft © 2002-2003 г.   Nikolay A. Panov, "Intro To Linux" (orig),  niksite@mail.ru,  ICQ: 122-40-8888