пятница, 18 июля 2003 г.

"Мифотворцы"

"Я включил кибернетику в
качестве второго важного
исторического события моей
жизни, поскольку у меня есть [...]
смутная надежда, что мы
сможем заставить себя честно
пользоваться этим новым
пониманием. Если мы будем хоть
немного понимать, что мы
делаем, может быть, это
поможет нам найти выход из
того лабиринта галлюцинаций,
который мы создали вокруг себя.
"
(Г.Бейтсон 1966г.)

Я пишу эту заметку через 37 лет после слов Бейтсона, и пишу ее, может быть, именно потому, что вижу надежды Бейтсона не оправдавшимися. Хотя есть "время разбрасывать камни, и время собирать камни; [...] время искать, и время терять; время сберегать, и время бросать" (Еккл.). Возможно, время слов Бейтсона еще не пришло? Какое время сейчас?

Программа как метафора
"Тот, кто верит в реальность
вещей, живет в совершенно
нереальном мире.
"
(Сутра Помоста)

Я бы сказал, что отнесение программирования к "инженерным" дисциплинам сослужило ему плохую службу, создав иллюзию "вещности" и "объективности" результатов труда программистов. Тогда как по роду своему программы ближе всего к словам языка (к "Именам"), чем к традиционным объектам материального мира. И к конструкциям над этими словами - песням, сказкам, метафорам. И эта отнесенность касается всех уровней программирования: от системных библиотек до больших прикладных комплексов.

Возьмем простой пример - функция "выделения памяти". Вы думаете, "память" вам действительно "выделяют"? Отрезают кусочек от микросхемы и кладут на весы? Нет, разумеется, вы так не думаете... Вы, возможно, знаете, что "выделение памяти в большинстве библиотек..." Стоп! Какая разница, как оно реализовано? Вопрос - что есть такое "выделение памяти"? А есть мы будем метафору некоторых операций над некими сущностями.

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

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

- Вы пробовали записать "Белоснежку" на языке CASE-средств? Уверяю вас - это возможно. - Не пробовали? Что ж, это говорит в пользу вашего вкуса. ("- Мне беленькие, простые. - У вас потрясающе хороший вкус".) Впрочем, можете посмотреть формальный язык записи фольклорных сюжетов. Но насколько мне известно, при написании сказок писатели его не используют. И если заглянуть в "курилки" некоторых программистских фирм, да отследить потом судьбы продуктов... приходит мысль, что лучшая постановка - та, что может быть рассказана устно, в форме метафоры, образа, истории. И постановка действительно понята программистом, если он может пересказать образ своими словами. Качество постановки - качество фольклора, его жизнеспособность.

Может оказаться, что образ "теток с авоськами у двери магазина" - куда более полная и надежная постановка задачи, чем перечисление операций. Хотя бы потому, что она "неявно" включает в себя нештатные ситуации. (Да, кстати, замечу в скобках: "очередь алкашей у винного ларька" - это совсем другая задача, поскольку эта самая очередь дождется конца обеденного перерыва... и как только модем пропищит восстановление связи...)

Сценография
"Если хорошо подумать, все
это смахивает на балаган.
"
(Хуэйкай) *
Итак - сказав А, пора говорить Б. Если мы имеем дело с представлениями "сказок", то скорее всего мы с вами в театре, или если без лишнего формализма - в балагане. А потому законы жанра диктуют свои правила. В частности - правила постановки вопросов. Например, если на стене висит ружжо, то висит оно там не "потому что", а "для того чтобы". Для того, чтобы разгневанному главному герою в четвертом акте было что хватать. Так и сущности, встречающиеся в программах, могут быть оправданы только целью, но никак не историей. Я говорю "оправданы", поскольку бритва Оккама отсекает все лишнее, как в познании, так и в творчестве.

Жизнь программы - как жизнь спектакля, определяется ее "изяществом". Ну и еще, может быть, художественным стилем... Что у нас нынче в моде? А что завтра? Но при всем при том остаются произведения, которые, переосмысливаясь, переживают моду. Искусство. Искусство слова, мысли, метафоры. Причем было бы ошибкой считать наиболее удачными те метафоры, котроые "впрямую" отражают реальность. Уход "соцреализма" тому подтверждение. Думаю, что увлечение компьютерным образом "листа бумаги", "документа" в скором времени ждет та же судьба.

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

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

На пути к мифу
"Нет науки без бессознательных
предпосылок, над которыми
никакой исследователь не имеет
власти...
"
(О. Шпенглер) *

Я говорил "сказка", "метафора". Но есть грань, когда метафора становится мифом. Когда она начинает формировать свой собственный мир и свое собственное мировосприятие. Свою религию, свои святыни, свой "символ веры". Огромная масса людей с утра до вечера, сидя перед экранами, живут внутри метафор. И программирование стремительно движется к мифу и, возможно, уже перешло "точку возврата". И если метафора служит описанию и разрешению некоторой внешней задачи, привносит решение на ином, чем раньше, уровне понимания, то функция мифа иная. Функция мифа - поддержание самого себя (и через это - гомеостаза мировосприятия).

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

Я не знаю, какой путь ляжет в истории. Не знаю, куда склонятся весы, на одну чашу которых положено желание "приобщиться к новым технологиям, которые сами все решат", а на другую - свобода творчества человека в меру сил его. Могу только сказать, что само осознание выбора уже определяет этот выбор. Поскольку осознание и осознанность дают тот вкус, который безошибочно отличает истинную "сказку" от массовых поделок.

18.07.2003

------------------------
* Цитаты взяты по книге В.Ирхин М.Кацнельсон "Крылья феникса"





1 комментарий:

black комментирует...

Хороший текст.
На самом деле мир уже давно перешагнул "точку возврата".
Это случилось в те времена, когда люди променяли побитовый ввод информации в машину(например, с перфокарт) на "посимвольный" с клавиатуры, когда между человеком и железкой появился кусок кода в ПЗУ, отвечающий за преобразование форматов при I/O.
В наши дни появляется все большее количество умных машин, а совсем рядом, через экран монитора, множится число людей-идиотов. Получается такой себе "прогрессивный регресс", люди набивают код(знания и опыт) в железо, вдыхая все больше разумности в кремний, автоматически дебилизируя большую часть своего племени.
Сейчас gcc пишутся на gcc, а высшим пилотажем(читать: самым "низким" уровнем) считается ассемблер в текстовых мнемониках, либо такие же символьные строки - hex-коды.