Почему пользователь должен быть программистом
2012-02-26 Максим Жолобак
Прежде всего, хочу предупредить читателя, что если он не осознаёт того факта, что компьютер мыслить не может принципиально, то эту статью ему читать особого смысла нет. Разве что посмеяться.
Начнем издалека. В середине XX века Фон Нейманом и соавторами были предложены принципы архитектуры компьютеров. Мы остановимся на одном из них, оказавшем самое большое влияние на дальнейшее развитие компьютерной техники, а именно принципе однородности памяти. По-простому этот принцип формулируется так:
Программы и данные хранятся в одной и той же памяти. ЭВМ не различает, что хранится в данной ячейке памяти: число, текст или команда. Над командами можно выполнять такие же действия, как и над данными.
Таким образом, в этом принципе признается и утверждается, что данные и команды — суть одно и то же. На самом деле, последнее предложение цитаты — это лишь один из многих выводов, которые получаются из данного принципа. Гораздо более интересна другая сторона тождества данных и команд: не то, что команды — тоже данные, а то, что данные — это те же команды.
Получается, что любая программа — это такой специфичный транслятор определенного языка программирования. Если понять это, то вопрос, вынесенный в заголовок решается сам собой: пользователь должен быть программистом просто потому, что он уже им есть. И, очевидно, лучше быть сознательным программистом, чем бессознательным.
Давайте теперь рассмотрим некоторые примеры практического применения (а точнее, отсутствия применения) этого теоретического принципа. Среди них: проблема пользования поиском, работа с текстом, автоматизация рутинных задач.
Начнем со второго примера. В наше время практически у всех понятие «работа с текстом» ассоциируется с программами, подобными Microsoft Word. Характерной особенностью этих программ есть визуальное редактирование. То есть человек как бы видит, как будет выглядеть на печати то, что он редактирует. «Как бы» добавлено в предложение по нескольким причинам. Самая главная из них та, что очень часто тот текст, который редактируется, никогда не будет печататься в таком виде. Часто после написания и предварительной обработки он пересылается специалисту, который, используя, в большинстве случаев, вовсе не Word, подготавливает документ к печати или, например, к размещению в Интернете.
Можно подумать, что ничего плохого в визуальном редактировании нет: ну видит человек красивую картинку, и что тут такого? Разве лучше, когда ему кроме текста пишется еще куча ненужных и непонятных символов, как, например, в html? Проблема вовсе не в красивой картинке, а в том, что она заслоняет для человека ту кучу «ненужных и непонятных» символов, которые присутствуют в любом случае, и, фактически, обеспечивают существование этой картинки. Только вот среди людей, использующих word-подобные программы, не то что смотреть на эти символы, а даже знать о их существовании не принято. А когда человек не понимает, что он делает, он, как правило, делает глупости.
Замечено, что если человек редактирует текст, видя знаки форматирования, он осторожно относится к их использованию. И наоборот, не видя этих знаков, человек склонен использовать их где нужно и не нужно, применять их неестественные комбинации для получения нужного ему визуального эффекта — соответствующей его представлению картинки. Так некоторые особо одаренные пользователи используют пробелы для создания абзацных отступов или, еще круче, для выравнивания текста.
Что характерно, в Microsoft Word предусмотрена «помощь идиоту» в одном из случаев «ручного абзацного отступа». Так он автоматически заменяет символ табуляции (тоже такой «символ пустого пространства», вставляется клавишей Tab) в начале абзаца на абзацный отступ для него (в стиле оформления), но вот против «пробельного отступа» даже эта «умная» программа ничего поделать не может, и оставляет его в нетронутом виде, портя жизнь тем, кто, например, подготавливает документ к публикации в интернете.
Если кому интересно, то эти пробелы превращаются при конвертации в html в длинные цепочки команд неразрывных пробелов. Для четырех пробелов будет вот такой результат: « » в начале каждого абзаца. Согласитесь, не очень-то радующая глаз картина.
Вы можете сказать, что это мелочи, которые никому не интересны, ведь проблемы с такими текстами обычно начинаются только у тех, кто будет эти тексты обрабатывать после нас, а их проблемы нас не касаются. Но неестественные методы работы с текстом наказывают и самих пользователей, когда им вдруг приходит в голову сделать что-либо по-человечески, не вручную. Так привычка периодически использовать вместо кириллических букв схожие по начертанию буквы латиницы приводит, например, к невозможности автоматически отсортировать список по алфавиту, а классическая глупость, которой «все возрасты покорны»,— использование полужирного начертания и изменение размера шрифта для обозначения заголовков, мешает автоматически сформировать оглавление. А это — куча впустую потерянного времени. А иногда — и нервов.
Таким образом, человек, который считает, что он редактирует картинку на экране, не понимающий, что даже вводя и форматируя текст он выступает именно как программист, дающий компьютеру четкие инструкции по созданию нужного результата, портит жизнь себе и окружающим.
Вторая сфера, в которой близость программиста и пользователя очевидна — поиск. Каждый может проверить свою степень развращенности таким способом: попробовать найти что-либо в Википедии с использованием ее собственного поиска, и с использованием поиска Google. Практически для всех гораздо удобнее последний вариант: при поиске в Google автоматически исправляются незначительные опечатки, исправляется ошибка набора не в той раскладке, иногда даже поиск выдает результаты по словам-синонимам. Вся эта прелесть берется не из ниоткуда, и уж тем более не из способности компьютеров, пусть даже компьютеров корпорации Google, думать. Дело в том, что эта корпорация имеет у себя в штате огромное количество работников, которые занимаются анализом наиболее популярных запросов и подтасовкой («оптимизацией») ответов на них. Стоит задать вопрос из области, которая не подходит под звание «популярной», сразу же начинаются проблемы с получением адекватного ответа. Впрочем, в этой поисковой системе имеются средства, которые рассчитаны не на идиотов, и позволяют тонко управлять процессом поиска.
Надежный метод поиска, как ни странно, связан с программированием. Действительно, если подумать, поисковый запрос — это не просьба компьютеру найти что-то, а инструкция, как выдать определенный результат поиска. За долгое время существования компьютеров было разработано множество методов поиска, существует даже отдельная группа языков программирования (часто встроенных в другие), предназначенных именно для эффективной формулировки запросов поиска, так называемые «регулярные выражения».
К сожалению, обычному пользователю эти достижения человеческой мысли не доступны. Ведь он пользуется обычными программами, которые ориентированы на то, чтобы ими мог пользоваться человек с минимальным уровнем компьютерной грамотности, а никак не на воспитание в нем навыков программирования. Они создаются с таким расчетом, что в них всегда легче было все сделать вручную, чем разумно. Например, переместить курсор в текстовом файле в нужное место клавишами перемещения курсора («стрелочками»), а не поиском, или нумеровать ссылки на литературу руками, а не автоматически.
Итак, последний вопрос, автоматизация. По моему глубочайшему убеждению она является самой главной проблемой современного пользования компьютерами. Точнее не она, а отсутствие привычки ее использовать. Немалую роль в этом, безусловно, играет графический, «дружественный» интерфейс, который лучше продается, но при этом значительно усложняет автоматизацию, делает ее необходимость и возможность не такой очевидной для пользователя.
Но речь не о причинах отсутствия, а о необходимости присутствия. Человек, работая на компьютере, часто вынужден выполнять много однообразных действий. Если он имеет некоторые навыки программирования, он постарается этого избежать, если же не имеет — будет тупо выполнять машинную работу.
Как итог хотелось бы подчеркнуть, что статья вовсе не имеет своей целью приобщить читателя к разумным методам использования компьютера. Самое большее, чего хотел бы достичь автор, это осознания читателем ущербности современного подхода к пользованию компьютерами. И если когда-нибудь, в десятый раз перенумеровывая страницы в своем дипломном проекте, он будет знать, что винить в этом можно алчность производителей программного обеспечения, которые своим «дружественным интерфейсом» сделали из него идиота, это будет высшей наградой для писавшего сей опус.
P. S. Если же читатель все-таки решится изменить точку зрения на место компьютера в своей жизни, то он должен иметь в виду, что, кроме необходимости потратить время на переучивание, он очень быстро столкнетесь с непониманием и сопротивлением окружающих, которые, сами того не зная, будут ставить палки в колеса его процессу овладения компьютером, например, требуя «высылать текст исключительно в Word».
По теме редактирования текста и подготовки его к печати можно почитать про текстовые редакторы Emacs и Vim, а также про систему компьютерной верстки Tex; по теме поиска — ознакомится с регулярными выражениями, которые используются в текстовых редакторах (в Word, кстати, тоже кое-что такое есть) и в поисковых системах.