]> www.wagner.pp.ru Git - sites/home_page.git/blob - articles/user-friendly.html
Исправлена опечатка в аннотации к Детям Пространства
[sites/home_page.git] / articles / user-friendly.html
1 <HTML><HEAD>
2 <META HTTP-EQUIV="Content-Type" "text/html; charset=utf-8">
3 <TITLE>О вреде дружественных интерфейсов</TITLE>
4 <META NAME="description" CONTENT="Статья в журнал Домашний Компьютер N
5 12/2002 о том что дружественный интерфейс - это не всегда хорошо">
6 </HEAD><BODY>
7
8  <H1>О вреде дружественных интерфейсов.</H1>
9  
10 <table border=0 width="100%">
11 <tr><td>&nbsp;</td><td width=300>
12 <p class="epigraph">
13                                 Есть у меня шестерка слуг,<br>
14                                 Проворных, удалых.<br>
15                                 И все, что вижу я вокруг, -<br>
16                                 Все знаю я от них.
17 </p><p class=epigraphauthor>
18                                                 Р Киплинг
19 </p>                                            
20 </td></tr></table>
21 <p>
22 Сейчас все привыкли к термину &laquo;дружественный интерфейс&raquo;. Никто и не
23 задумывается над тем, а какой смысл кроется в этих словах. А если
24 задуматься, то становится немножко страшно&nbsp;&mdash; такое впечатление, что наши
25 электронные творенья&nbsp;&mdash; программы, если и не захватили еще власть на
26 Земле, то во всяком случае вырвались из-под нашей власти.
27 </p><p>
28 Ведь дружба&nbsp;&mdash; это отношение между равными. Может быть человек-друг,
29 может быть дружественная страна, но &laquo;дружественный молоток&raquo; или
30 &laquo;дружественная авторучка&raquo; это звучит странно. Даже из всего животного
31 мира на роль &laquo;друга человека&raquo; претендует только собака.
32 </p><p>
33 Конечно, программы отличаются от прочих инструментов тем, что они
34 обладают чем-то вроде членораздельной речи. Во всяком случае они иногда
35 способны внятно объяснить, что происходит.
36 </p><p>
37 Но программы&nbsp;&mdash; это наши создания. А что бывает, когда создание забывается
38 и пытается встать на равную ногу с создателем, хорошо описано в Книге
39 Бытия.
40 </p><p>
41 Конечно, английский термин <i>friendly</i>, калькой с которого является
42 наше &laquo;дружественный&raquo;, имеет несколько другой оттенок. Его скорее следует
43 переводить как &laquo;дружелюбный&raquo; или &laquo;обходительный&raquo;. Но и эти эпитеты
44 применимы скорее к случайно встреченному на дороге путнику, или продавцу
45 в магазине, пытающемуся вам что-то впарить. То есть к кому-то, кто
46 преследует свой собственный интерес.
47 </p><p>
48 С какого такого, спрашивается, перепугу, программа, которую я лично
49 установил на свой собственный винчестер, кормлю оплаченной за свои
50 кровные электроэнергией, имеет право преследовать цели, отличные от
51 моих?
52 </p><p>
53 Программы это не более чем орудия. Вспомним, кого в старину называли
54 говорящими орудиями? Правильно&nbsp;&mdash; рабов. Вот истиное место программы по
55 отношению к человеку. Хороший интерфейс должен быть не дружественным, а
56 рабским. Никакого вам панибратства и похлопывания по плечу&nbsp;&mdash; &laquo;Чего
57 изволите, хозяин?&raquo;, &laquo;Будет исполнено, хозяин&raquo; и больше никаких
58 разговоров, если не случилось чего действительно заслуживающего
59 внимания.
60 </p><p>
61 За что мне нравятся Unix-подобные системы, так это за то что в их
62 традиционных программах концепция рабского интерфейса проводится весьма
63 последовательно. Одним из проявлений этого является то, что многие команды
64 не выводят никаких сообщений в случае успешного завершения операции.
65 Приказание выполнено, о чем тут говорить. Вот если не получилось, то
66 надо объяснить причину.
67 </p><p>
68 Заметим, что &laquo;дружественные&raquo; программы обычно &laquo;вопят&raquo; о проблемах на
69 всю систему, выкидывая модальный диалог, который не дает вам сделать
70 ничего, пока вы на него не отреагируете. Совершенно не так себя ведут
71 командно-строчные утилиты&nbsp;&mdash; если вы работаете в оконной среде, то
72 сообщение будет лежать в том окне, где вы запустили программу, пока,
73 вы, хозяин, не соизволите обратить внимание на неудачливого раба.
74 </p><p>
75 Даже если вы работаете на последовательном терминале, где у вас нет
76 не только многих окон, но и виртуальных консолей, ошибка для программы -
77 обычно сигнал прекратить всякую деятельность и дать хозяину возможность
78 разобраться в том, что происходит, освободив &laquo;поле боя&raquo;.
79 </p><p>
80 Еще одним недостатком &laquo;дружественного&raquo; интерфейса является то, что
81 интерфейс пользователя воспринимается разработчиками программ как нечто
82 совершенно особенное. А между тем еще тридцать лет назад был
83 сформулирован принцип "Если тебе лень читать вывод программы, заставь
84 это делать другую программу". Олицетворением этого принципа являются
85 программы yes и grep, входящие в состав любой unix-подобной системы.
86 Первая из них занимается тем что генерирует бесконечное число ответов
87 &laquo;да&raquo; на любые вопросы, задаваемые программой, в которую направлен вывод
88 yes. Таким образом, пользователю очень легко избавиться от монотонного
89 сидения за экраном и нажатия Enter на каждый вновь появившийся вопрос. 
90 Монотонная работа не для хозяина, ее нужно поручить рабам.
91 </p><p>
92 Программа grep выполняет строго противоположную функцию&nbsp;&mdash; она читает
93 вывод какой-нибудь другой программы, и выбирает из него интересные
94 хозяину строки. Нечто вроде секретаря-референта. Причем секретаря
95 довольно продвинутого&nbsp;&mdash; ей можно указать достаточно гибкие шаблоны для
96 поиска, воспользовашись так называемыми регулярными выражениями, и можно
97 потребовать достаточно разнообразного представления результатов&nbsp;&mdash; только
98 количество найденых выражений, только имена файлов, строки с найденными
99 образцами, строки с парой-тройкой соседних. А еще есть разнообразные
100 продвинутые варианты egrep и agrep.
101 </p><p>
102 Типичным способом решения какой-либо задачи в Unix является разбить
103 ее на максимально простые подзадачи, каждую из которых умеет решать
104 какая-нибудь известная вам программа, после чего заставить эти программы
105 работать &laquo;на конвейере&raquo;, передавая свой результат следующей в цепочке.
106 </p><p>
107 Это получается очень похоже на формулировку способа решения задачи
108 словами. &laquo;Прочитать почтовый ящик, выбрать из него все строки, начинающиеся со
109 слова Subject, отсортировать в алфавитном порядке, удалив
110 дубликаты&raquo; 
111 превращается в
112 </p>
113 <pre>
114  cat mbox |grep '^Subject:'|sort|uniq
115 </pre> 
116 <p>
117 Фактически так оно и есть. Набор команд, которыми вы оперируете это
118 язык, с помощью которого вы даете команды машине. Для Киплинга,
119 писателя, верными слугами были обычные слова английского языка. Для
120 пользователя компьютера слугами являются команды операционной системы.
121 </p><p>
122 То что в системе тысячи команд (на моем скромном ноутбуке в данный
123 момент в PATH 1411 исполняемый файл) не должно вас смущать.
124 В русском языке сотни тысяч слов, а героиня Ильфа и Петрова Эллочка
125 вполне обходилась в повседневной жизни 30-ю. Примерно также
126 распределяется и частота использования команд операционной системы.
127 </p><p>
128 Обратите внимание, что в мире &laquo;дружественных интерфейсов&raquo; более
129 распространено понимание программы как вещи, которую можно сделать,
130 продать, купить, использовать, а не как слова в языке общения человека с
131 машиной. Такое понимание, без сомнения, выгодно производителям
132 программного обеспечения. Ведь любая, даже самая топорная вещь имеет
133 свою цену. А вот платить за слова мы согласны только, если эти слова
134 достаточно талантливы. С другой стороны, мало кто будет самостоятельно
135 изготовлять себе мебель или радиоприемник. Предпочтут купить. А
136 сформулировать достаточно простую мысль словами способен любой грамотный
137 человек.
138 </p><p>
139 Поэтому, индустрии программного обеспечения выгодно превратить
140 пользователей компьютеров в потребителей программ. А вот выгодно ли это
141 пользователю? Представьте себе охотничьего сокола, приученного брать
142 кусочки мяса из рук человека. Он вполне способен догнать и убить зайца,
143 но не знает, что этого зайца можно тут же немедленно съесть. Он отдает
144 зайца человеку, и довольствуется тем мясом, которым человек сочтет
145 нужным с ним поделиться. Примерно в таком же положении находятся
146 большинство пользователей компьютеров&nbsp;&mdash; они способны сформулировать свою
147 задачу (догнать зайца) и даже знают как ее решить (убить зайца). Но вот
148 &laquo;содрать с зайца шкуру и съесть&raquo;&nbsp;&mdash; превратить свою формулировку в набор
149 приказов машине, они не могут. В результате львиная доля зайчатины
150 достается производителям программного обеспечения.
151 </p><p>
152 А пользователю достаются программы с &laquo;дружественным интерфейсом&raquo;,
153 обладающие немерянным самомнением, и уйма тупой механической работы,
154 затрачиваемой на то, чтобы оформить техническую документацию в текстовом
155 процессоре общего назначения или выполнить рассчеты на
156 микрокалькуляторе, когда под рукой есть мощная электронная таблица.
157 </p><p>
158 Это происходит потому, что основной чертой компьютерного &laquo;вещизма&raquo; является 
159 непонимание
160 того, что имеющиеся у тебя программы следует знать. Если возникла новая
161 задача, покупают или выискивают в сети новый инструмент. Метафора
162 программ как слов способствует другому подходу&nbsp;&mdash; попытаться
163 сформулировать задачу с помощью уже известных твоей машине слов. 
164 Благо результат этой формулировки всегда можно обозвать одним новым
165 словом.
166 </p><p>
167 Собственно, движение свободного программного обеспечения возникло как
168 противовес этой тенденции. Когда появилась индустрия программного
169 обеспечения, многие обратили внимание, что эта индустрия норовит лишить
170 пользователей компьютеров власти над ними. А Ричард Столлман не только
171 обратил внимание, но и сформулировал стратегию борьбы&nbsp;&mdash; манифест ГНУ.
172 </p><p>
173 Смысл этой стратегии заключается в том, что если ты написал программу,
174 которая приносит тебе какую-то пользу, то тебе не жалко поделиться ей с
175 коллегами. Поскольку у тебя останется копия, и будет продолжать
176 приносить тебе пользу. 
177 </p><p>
178 Очевидно, что принять активное участие в этом движении могут только
179 люди, умеющие самостоятельно решать свои задачи, создавая новые
180 программы. Поэтому программы, решающие задачи, полезные программистам,
181 как правило, появляются быстрее, чем программы, решающие задачи
182 конечного пользователя. Так например, компилятор GNU C пояился чуть ли
183 не на десятилетие раньше, чем графический редактор GIMP.
184 </p><p>
185 А что же делать конечным пользователям, не программистам,
186 если они хотят чтобы компьютер
187 был им послушен? Всего лишь знать, как он работает, и уметь
188 формулировать свои мысли в терминах тех &laquo;слов&raquo; которые есть в их
189 распоряжении.  Четкой границы между решением пользовательских задач и
190 программированием не существует. Алиасы в шелле, макросы в текстовом
191 редакторе, однострочные скрипты&nbsp;&mdash; это уже полноценное программирование.
192 Программировать, имея дело с компьютером, так же естественно, как
193 говорить прозой для мольеровского Журдена.
194 </p>
195 </BODY>
196 </HTML>