учебники, программирование, основы, введение в,
мужское эскорт агентство

 

Место человека в человеко-машинных системах

О названии и цели нашего курса
Мы понимаем, что операционной системы, называемой UNIX, на самом деле уже практически не существует. По прискорбным причинам правового характера само это слово становилось собственностью (гримасы империализма: частная собственность на слова) то одной, то другой организации. Наверное, они рассчитывали, что владение поможет поднять продажи. Сегодня словом UNIX обозначается не одна конкретная операционная система, а целое их семейство со сложной структурой и взаимоотношениями (см. http://www.levenez.com/unix/history.html#09). Именно в этом смысле мы и намерены использовать его, опираясь в примерах то на один, то на другой вариант (в основном на ALT Linux и FreeBSD). Если упоминание UNIX в таком контексте противоречит требованиям нынешнего владельца, просьба далее по тексту вместо четырех символов UNIX читать UNИX для обозначения того же предмета. Эти четыре символа выглядят даже более стильно, а кроме того, так называется клуб при ВМиК МГУ, на участниках которого в 2000/01 учебном году как раз и обкатывалось то, что теперь стало этими лекциями.
Мы не ставим своей задачей подробное описание всего, что встречается пользователю при работе с UNIX. И не потому, что нельзя объять необъятное. Какие-то необходимые для жизни и работы части необъятного можно объять в свой черед; более того, именно UNIX предоставляет возможность и средства для этого увлекательного занятия. Однако если уж предстоит познакомиться с предметом сложным и заставляющим мыслить, то уж точно не надо начинать с чего попало. Прежде всего следует понять, зачем мыслить и как. Мы даже оставляем за собой право значительно упрощать отдельные аспекты UNIX (до тех пор, пока это принципиально не меняет сути дела). Любознательный читатель, изучая настоящую систему, может увидеть эти несоответствия и упрощения своими глазами.
Главное, о чем следует помнить: пользователь UNIX - всегда соавтор создателей системы. Вместе с ними он постоянно достраивает систему, дополняя ее новыми возможностями. Иногда пользовательские доработки незначительны, иногда - весьма запутанны и своеобразны. Чаще всего бывает так, что задача, с которой столкнулся один пользователь, встает и перед другими, поэтому имеет смысл решить ее аккуратно и до конца, а полученным решением дополнить систему. Соавторство предполагает некоторую меру ответственности за состояние системы. Чем выше профессиональный уровень пользователя, тем большие ему открываются возможности и тем больше на нем лежит ответственности.
Поэтому мы считаем своим долгом не перечислять возможности системы, а показать, каким образом можно отнестись к работе в ней с необходимой долей ответственности, и наметить те направления, с которых целесообразно начинать освоение системы. Каждое направление будет сопровождаться примерами того, как связанные с ним задачи решаются в том или ином варианте UNIX. Кроме того, мы разберем несколько специальных тем, знакомство с которыми заметно облегчает работу в системе, а самостоятельное освоение потребовало бы известного объема знаний.
UNIX невозможно изучить урывками, читая книжку в метро, а тем более - не подходя к компьютеру. Рассмотрим самый, на наш взгляд, естественный алгоритм решения любой задачи:

  1. уяснить задачу;
  2. выбрать самый подходящий инструмент решения (самый подходящий, а не самый знакомый!);
  3. освоить этот инструмент (начиная с изучения документации).
  4. придумать по возможности красивое решение;
  5. зафиксировать это решение (чтобы можно было в случае чего повторить);
  6. применить его.

Казалось бы, спорить не с чем, но как часто мы поступаем строго наоборот!
Желая "сэкономить время", мы нередко начинаем с того, что так и эдак применяем попавшиеся под руку инструменты (6) и даже начинаем набрасывать кое-какие сценарии или проекты решения (5). Потом мы задумываемся над тем, как же решить нашу задачу "по уму" (4), и понимаем, что инструмент нам, в сущности, незнаком, что надо изучать руководство (3). Из руководства выясняется, что инструмент нам не подходит, и приходится искать другой (2). И только тогда мы понимаем, что для этого надо разобраться, какую именно задачу мы решаем (1).
Драма пользователя UNIX в том, что система на такой непрофессиональный способ взаимодействия не рассчитана. Если начинать не с начала, времени на решение будет потрачено гораздо больше. К тому же это верное средство создать хаос в собственной голове; а никаких средств против беспорядка в пользовательской голове не предусмотрено, UNIX не вмешивается во внутренние дела человека: свобода дороже.


Новые луддиты
Можно даже сказать, что человеку свобода дороже всего. Именно с боязнью утратить свободу, на наш взгляд, связана одна из "болезней XX века" - машинобоязнь.
Когда-то давно, в XVIII веке, выяснилось, что машины могут работать вместо человека, причем работать быстрее, качественнее и дешевле наемного рабочего. Человек переставал быть универсальной рабочей силой. Машина, можно сказать, "объедала" человека: рабочих увольняли, а деньги шли не в общий котел, а на смазку и запчасти. Последовавшие за этим восстания ни к чему, конечно, не привели: машинное производство было значительно эффективнее ручного, просто сферы человеческой деятельности не могли перераспределяться мгновенно. Но уже в XX веке человек прекрасно знал и о том, что машина может почти все, и о том, что завтрашняя машина будет не такой, как сегодняшняя, поэтому техника требует непрерывного изучения.
И что же? Накапливая инженерные знания, человечество в то же время погружалось в пучину совершенного мистицизма. Человек продолжал бояться машины, но беспокоился уже не о куске хлеба, а о собственной свободе. В 1920 году К. Чапек написал пьесу "R.U.R.", где впервые появилось слово "робот". Едва появившись, роботы немедленно замыслили извести все человечество. "Человек во власти машин" - тема, за прошедшее столетие превратившаяся из фантастического предположения в образующий элемент массового сознания. Человечество, порабощенное компьютерами, - не об этом ли рассказывает каждый второй голливудский фильм о будущем Земли? Явление в высшей степени загадочное: компьютеры становятся все привычнее, в повседневном обиходе их все больше (в стиральной машине, в телефоне, в автомобиле...), а боимся мы их по-прежнему.
Между тем компьютер - это всего лишь электронно-вычислительная машина, орудие, выполняющее за нас вычислительные действия точно так же, как, допустим, экскаватор выполняет земляные работы. Еще в XVII веке Фрэнсисом Бэконом сказано:
"Ни голая рука, ни предоставленный самому себе разум не имеют большой силы. Дело совершается орудиями и вспоможениями, которые нужны разуму не меньше, чем руке".
Несколько позже К. Маркс упростил это высказывание:
"Любое орудие есть продолжение нашего органа, выполняющее ту же работу, но эффективнее".
Итак, отношения экскаваторщика с могучим железнокогтистым продолжением его руки не вызывают ни у кого опасений. Откуда тогда такая боязнь попасть в зависимость от продолжения мозга, если оно только и делает, что быстро считает?
Видимо, нас пугает неизвестность. Если машина выполняет за человека действие, которое он может себе объяснить (например, черпает воду, открывает ворота, раздувает огонь), она не вызывает священного ужаса. Такая машина воздействует на предметы, то есть изменяет материальный мир, так же, как и наши органы (рука, нога, рот и легкие) изменяют его, подчиняясь нашей воле (разуму, душе - здесь есть разночтения). Более того, заглянув внутрь, мы можем сказать: эта пружина давит на колесо, колесо имеет шип, который толкает шест, шест сжимает мехи, из мехов вырывается воздух. Все ясно.
Другое дело - машина, совершающая за нас работу, объяснить которую мы не можем. Например, вычисления. Пока мы переносим камешки из одной кучки в другую, называя это "сложением", можно ссылаться на камешки. А без них? Непонятно... Ясно одно: это работают уже не наши органы, выполняющие команды разума (души, воли), а скорее сам разум. А как вычитает арифмометр? Колесо имеет шип, шип толкает шест и т. д.? Не может этого быть! Либо у нас вместо души - колесо и шест (были и такие мнения), либо действия арифмометра продиктованы его, арифмометра, душой; причем душой темной, чугунной с бронзовыми накладками, лишенной видимых эмоций и безусловно враждебной. Что же произойдет, если дать волю арифмометру? Трагедия, масштаб которой зависит только от возможностей взбунтовавшегося автомата.
Бесспорно, миф. Но миф удивительно устойчивый: достаточно сравнить столетней давности рассказ Амброза Бирса "Повелитель Моксона", где шахматный автомат задушил конструктора, потому что тот играл нечестно, с каким-нибудь "Терминатор-3. Восстание машин". Искажение реальности, конечно же, в том, что арифмометр на самом деле не дает нам никакого повода подозревать в нем душу. Потому что выполняет он все те же заранее нами предусмотренные действия, и неважно, изменяется и при этом материальный мир или нет. Это мы сами настолько умны, что можем не только складывать, не перенося при этом камешки из кучки в кучку, но и формализовать свои действия как "сложение", то есть превратить их в механизм, которым наш разум пользуется, как рука лопатой (см. "Органон"). Попытки формализовать мышление или принятие решений (нейронные сети, экспертные системы и т. п.) не привели ни к чему, кроме очевидных достижений в областях именно формализуемых (вроде распознавания образов или прогнозирования поведения очень сложных систем).
Однако у этого мифа есть и рациональные корни. Во-первых, машин вокруг нас теперь так много и они так много умеют, что исчезни они - и уклад жизни разрушится. Картины самые мрачные: холод, голод, тьма, мятежные толпы... верно, сюжет не нов. Но фатальная зависимость от машин налицо. Во-вторых, современные машины столь сложны, что для взаимодействия с ними приходится изрядную часть времени отводить на изучение специальных приемов и средств работы. Вот тут мы и можем говорить о системе "человек+машина", потому что реальную пользу они могут принести только во взаимодействии. Формально ситуация не меняется: человек пользуется орудием. Но самому человеку представляется совершенно иное: равноправное "сотрудничество" человека и машины, а зачастую и работа "на нее" (например, "разговор на языке компьютера", "выполнение заданий компьютера" и т. п.). А тут уж недалеко и до машиноборчества в духе луддитов.
Оставим мифы культурологам, а эсхатологию - богословам и посмотрим, как такая ситуация преодолевается в современных человеко-машинных системах. Под машиной мы, разумеется, будем в первую очередь понимать компьютер, но только в качестве удобного примера сложного орудия. Как вывести человека из-под диктата машины, освободить его от необходимости "работать на нее" и, напротив, заставить машину работать на человека? Это зависит от того, кем сам человек видит себя в системе, как именно он собирается в ней участвовать, имеет ли он возможность и желание изучать саму систему (подчас весьма сложную и далекую от его профессиональных интересов), а также от того, кто в области решаемой задачи имеет больший авторитет - он сам или создатели машины (разработчики системы).

Химик и сварщик
Человек хочет решить задачу, связанную с его профессиональной деятельностью. Например, химик строит пространственную модель молекулы. Все исходные физико-химические данные - формула, размеры, углы, описание структуры - готовы, осталось только воплотить их. В получившейся модели все будет иметь физико-химическое толкование: определенного вида шарики соответствуют определенным атомам, заданной толщины стержни - конкретным типам связей и т. д. Для того, чтобы эта модель появилась, химик должен освоить какой-нибудь способ изготовления таких моделей - скажем, лепить их из пластилина, сваривать из шишечек для кроватей или проектировать на компьютере. Другой вариант - научиться внятно объяснять правила размещения шариков и стержней скульптору, сварщику или компьютеру.
Что для нас важно? Чтобы условия задачи и конечный результат ее решения были понятны любому специалисту в области пространственного моделирования молекул независимо от способа получения этого результата. При этом автор модели и его коллеги будут говорить на одном языке: "атом", "связь", "молекула", а автор и сварщик - на другом: "шарик", "стержень", "штуковина". И хотя используемые при сварке предметы как-то соотносятся с теми химическими объектами, которые они моделируют, однозначного соответствия не будет. Атом с двойной связью мало чем отличается от атома с двумя одинарными связями, а работа сварщика будет совсем иной. С другой стороны, красный шарик мало чем отличается от синего, а ведь это - атомы совсем разных веществ. Наконец, и химик, и сварщик неплохо обходятся друг без друга, но конкретная задача изготовления модели молекулы из шариков для кроватей остается тогда нерешенной.
Налицо две области человеческой деятельности. Одна - прикладная - связана с постановкой и решением задач определенного класса. Другая - инструментальная - связана с разработкой средств для решения прикладных задач. Области эти вполне самостоятельны: сварщик занимается не только молекулами, а химик строит свои модели как пример или средство дальнейших исследований, а не как их цель. В каждой области существует свой язык, свои традиции, свои задачи и свои методики их решения. Машина, а в особенности компьютер, выступает как универсальный инструмент, с помощью которого можно решать разнообразные прикладные задачи, был бы подходящий инструмент.
Специалиста в инструментальной области можно на определенных условиях исключить из цикла решения конкретной прикладной задачи. В конце концов, если для первого решения такой специалист требовался, то для воспроизведения этого решения достаточно составить инструкции по использованию инструмента. Оставшийся один на один с машиной человек называется пользователем. Пользователь - часть человеко-машинной системы, он ставит перед машиной задачи и добивается их решения. Специалист-разработчик не является частью этой системы: свою работу - создание системы и инструкций к ней - он уже сделал.
Тогда-то и всплывают все страхи перед неведомым химику миром сварочных аппаратов или перед неведомым пользователю компьютерным миром. Странные термины, похожие скорее на заклинания, какие-то таинственные ритуалы с нажатием рычагов, неадекватная (с точки зрения пользователя) реакция машины на одинаковые (опять же с точки зрения пользователя) команды... Все это повергает человека в глубокое уныние и может навсегда отвратить от компьютера.
Пользователь как клиент
Первый, наиболее очевидный путь "сближения" человека и машины - вернуть машине-орудию ее былую простоту. Несмотря на сложность системы и разнообразие решаемых ею задач, вполне возможно оставить для взаимодействия с человеком только те управляющие возможности, что лежат в прикладной области. Иными словами, человеку будет доступно (и известно) лишь то, что относится к постановке и решению задачи. При этом инструментальную область - все, что относится к устройству системы и управляет ходом решения, - следует оставить доступной только разработчикам и экспертам, а от конечного пользователя скрыть.
Кем себя будет ощущать пользователь такой системы? Заказчиком и одновременно потребителем, то есть клиентом: он описывает на доступном ему языке продукт, который хочет получить, и отдает это описание на отработку машине. Когда работа машины окончена, то, что получилось, немедленно идет в дело. Предполагается, что некоторые параметры продукта (а иногда и все) машина будет узнавать уже по ходу работы, задавая наводящие вопросы, опять-таки на доступном клиенту языке. Другой вариант - держать перед глазами клиента некую модель требуемого объекта, которая изменялась бы всякий раз, когда изменяется сам объект. Это называется WYSIWYG, What You See Is What You Get ("что видишь, то и получишь"). В этом случае можно не вводить вообще никакого промежуточного языка, оставив клиенту только те действия, смысл которых понятен из изменений модели.
В чем будет заключаться участие человека в такой системе? По большей части в точном следовании "инструкциям по применению": система сложна, ее поведение непредсказуемо (оттого, что непонятно ее устройство), и, если по незнанию нажать какую-нибудь не ту кнопку, результат может оказаться плачевным. Поскольку действия человека сводятся к выполнению неких процедур, такие системы можно назвать процедурными.
Уровень знаний о системе в этом случае может быть минимальным (как включить, как заставить решать задачу и т. п.). Более того, знание устройства системы, понимание принципов ее работы помогут пользователю лишь в малой степени, потому что возможности изменить эти принципы у него нет (иначе она давно бы уже вышла из строя из-за неумелого руководства). Что следует знать досконально, так это то, какие именно действия над объектом будут выполнены, если потянуть за тот или иной рычаг управления.
Кто оказывается главным в такой системе, от кого зависит качество получаемого продукта? Машина, а точнее создатели системы, заложившие в нее соответствия между рычагами управления и выполняемыми действиями. Если после нажатия очередной кнопки объект, вопреки сказанному в инструкции, испортился - это недоработка авторов, а не ошибка клиента: все, что он мог сделать, - не нажимать на кнопку. Клиент такой системы требует гарантий качества от разработчиков, потому что сам в силах гарантировать только неукоснительное следование инструкциям.

Пользователь как администратор

Второй путь преодоления пропасти между машиной и человеком - сделать сложную машину удобной для освоения. В идеале инструментальная область должна быть так же понятна и близка пользователю, как и прикладная. Разработчикам предстоит потратить немало усилий на выработку очевидной внутренней структуры системы, на внятное и полное ее описание, придется предусматривать ограничения в использовании инструментария в зависимости от уровня компетенции работающего с системой человека (то есть, как минимум, обеспечить "защиту от дурака") и т. д. Пользователь такой системы обязан знать основы ее устройства и весь инструментарий, при помощи которого он может конструировать решения задач. Причем чем больше он знает, тем более качественными получаются решения. Пользователь фактически управляет работой части системы (а нередко - системой целиком), то есть выступает в роли управляющего или администратора.
Администратор человеко-машинной системы и "системный администратор" не одно и то же. Это может быть программист, оператор СУБД или, скажем, автолюбитель, который разбирает и собирает свою автомашину с закрытыми глазами. Главное, что он способен управлять системой, потому что знает, как она работает. Нередко и заказчик системного продукта, и потребитель - некто другой, не включенный в систему; иногда (часто в случаях реального системного администрирования) четко выраженного заказа вообще нет: начальник хочет, чтобы "все работало как следует". Администратор здесь - производитель системного продукта, иными словами - тот, кто выполняет (часто для других) работу при помощи машины.
Такой подход требует, чтобы в системе были предусмотрены разнообразные универсальные и специализированные средства создания решений любых возможных задач. Для компьютера это высокоуровневые языки программирования и отдельные программы для элементарных взаимодействий с системой. Для автомобиля - набор удобных ключей и прочих инструментов для работы с любой деталью и всевозможные насосы-домкраты. Конечно, необходимо, чтобы и пользователь свободно владел этими средствами. Решив (чаще всего чисто умозрительно) поставленную задачу, администратор дает команду машине: "Делай по моему проекту" (или ударяет в нужное место кувалдой). Машина работает, а пользователь занимается другими делами, не забывая, однако, приглядывать за системой: хорошо ли справляется с задачей его творение, не стоит ли где подправить? Составление проекта, по которому машина будет решать задачи самостоятельно, - ключевая особенность, иначе пользователю пришлось бы делать часть формализуемой работы за машину, поэтому организованные таким образом системы можно назвать проективными.
Про уровень знаний о системе, необходимый администратору, было сказано выше: чем больше он знает, тем лучше она работает. К сожалению, обратное тоже верно: чем меньше - тем хуже. Более того, "больше" должно быть именно знаний, то есть понимания внутрисистемных механизмов, а не просто сведений о том, как в разных случаях пользоваться системой. К тому же администратор должен иметь ясное представление обо всех прикладных областях системы, даже если не является сам себе заказчиком. Получается, что строже всего разработчикам человеко-машинной системы надо следить за объемом данных, достаточных для решения конкретной задачи. Когда количество рычагов управления системой вкупе со всеми формами постановки задач перевалит за определенный предел, обычный человек управлять такой системой не сможет. Тогда в администраторы годится только существо, ничем иным, кроме внутренности системы не интересующееся (такое, увы, случается). Но если это требование соблюдено и знаний в объеме "хорошая осведомленность плюс специфика системы" в самом деле достаточно, администрирование становится доступно любому, кому не лень напрягать мозги.
В проективной системе как раз администратор дает гарантии качества получающегося продукта - в меру своей квалификации, конечно. Претензии к разработчикам возникают только тогда, когда очевидна неисправность инструмента (ее, как правило, все равно можно обойти при помощи другого инструмента). Так или иначе, в такой человеко-машинной системе больший авторитет имеет человек: сколь бы качественна ни была дрель, ею можно и починить рояль, и загубить его, все зависит от того, где и сколько сверлить.

Свобода от или свобода для?

Прежде чем выяснять основные принципы устройства процедурных и проективных систем, отметим парадокс, связанный с тем, насколько человек свободен во время работы с машиной. Не желая попасть в зависимость от машины, некто выбирает работу в качестве клиента процедурной системы. Под процедурную систему не нужно "подлаживаться": постигать ее структуру, учить "машинный язык", настраивать ее. Наоборот, сама система всячески демонстрирует, как она подстраивается под желания пользователя, даже предугадывает их. В результате почти все время работы в такой системе он проводит, скрупулезно выполняя ее команды вроде "для продолжения нажмите кнопку далее" или "выберите тип преобразования файла", то есть попадает в ситуацию, когда для эффективного решения своих задач ему приходится временно жертвовать собственной свободой.
В то же время другой пользователь, потративший время на изучение подходящего инструментария в проективной системе, изобретает решения все более сложных задач, которые даются ему все быстрее, притом всю неинтересную, механическую работу делает за него машина. Изучая инструмент и дополняя его по своему усмотрению, он обретает свободу в системе, а не жертвует ею.
Может быть, именно в том, что за последние два десятилетия процедурные системы распространились так широко, и кроется причина новой волны машинобоязни, захлестнувшей массовое сознание? Писатель, творческий человек, садится в автомобиль, дабы поехать по неотложным делам, а тот не желает даже заводиться: ты, дескать, принял лишнего. Ошарашенный, писатель обращается к микроволновой печи с невинной в общем-то просьбой: поджарить утку. Печь ему отказывает: велика птичка. Тогда он садится за персональный компьютер - писать сценарий о светлом будущем человечества. Не тут-то было: текстовый редактор заявляет, что имена главных героев и названия удивительных машин будущего, которые писатель так старательно выдумывал, - полная ерунда, таких слов в языке нет. А под конец работы попросту уничтожает несколько последних абзацев, несомненно, из вредности, чтобы автор не забывал почаще делать резервные копии.
Тогда несчастный берет старую добрую механическую печатную машинку - и на свет появляется очередная серия "Матрицы"...

 

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г.Яндекс.Метрика