Владимир Губайловский: «Реальный мир пронизан цифрой…»

Сегодня в гостях у "ПРАВДЫ.Ру" Владимир Губайловский — автор и ведущий программы "Седьмой континент" "Радио Свобода" ("Radio Freedom EuropeRadio Liberty", USA), интернет-обозреватель и постоянный автор рубрики "Мир науки" журнала "Новый мир" (Москва, Россия).
Автор многих статей, посвященных методологии науки, программированию и цифровым технологиям.
Родился в 1960 году. В 1982 году окончил мехмат МГУ им. М. В. Ломоносова по специальности "дискретная математика". Профессиональный программист.

- Владимир, чем уходящий год ознаменован в области программирования? Можно ли перечислить выдающиеся достижения, если они есть?

- Андрей, я практикующий программист, причем программист прикладной, и те микрометрические изменения, которые происходят с появлением новых версий используемых мной в повседневной работе
программных продуктов, я никак не могу назвать знаменьем или знаком времени. Конечно, в программировании что-то происходило. Например, вышла Windows XP. Но я даже не удосужился ее поставить, не то что "простучать" как следует.
Я смотрю на программирование с двух полярных точек зрения. Со своей маленькой прикладной полянки. Тут изменения есть, но они исчезающе малы, если взглянуть даже с соседней полянки.
Сразу с высоты птичьего полета — пытаясь обозреть весь волшебный лес программирования как целое. Здесь изменения накапливаются и происходят очень медленно — кстати, гораздо медленнее, чем меняется "железо", и это различие с годами только нарастает.
Год — не то чтобы очень малый срок, просто то главное, что, возможно, произошло в этом году, станет ясно только в будущем, может быть, лет через пять-десять.
Новые сильные идеи в программировании также редки, как и в других областях человеческой деятельности. Почему до сих пор подавляющее большинство программ пишется на Паскале или Си? Может быть потому, что какие-то качества этих языков оказались непревзойденными? И это, несмотря на то, что постоянно появляются не только новые языки во множестве, но и новые типы или парадигмы языков. Такие, например, как языки разметки документов. Например, HTML со всем его многоликим потомством. Но ведь до того как HTML в 1991 году стал использоваться для описания интернет-страничек, его аналог — другой язык разметки документов SGML - существовал уже, по крайней мере, лет пять. Так когда же произошло коренное изменение?
Но ответить на вопрос "Что было главным в программировании 2002 года?" вероятно можно, просто нужна соответствующая позиция наблюдения. Я в эту позицию, к сожалению, не попадаю, но есть ведь профессиональные обозреватели софта.

- Программа — это ведь нечто идеальное, существующее "в голове", как стихи, например — или я ошибаюсь? Программирование, на Ваш взгляд — это творчество или, скорее, ремесло? И что тут важнее — внимание, старание, умение или озарение, быть может?

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

- Как Вы сами решились стать программистом? Это была дань моде, трезвый расчет или — сердца зов?

- Я стал программистом, потому что не стал математиком. Это было в 1983 году. Ближе всего это решение — к "трезвому расчету", поскольку я просто ничего больше не умел в тот момент.
Если быть точным, с 1983 года я начал профессионально работать над программами. А программистом я себя ощутил через несколько лет, написав уже очень много кода. Может быть, это было в тот момент, когда мы сдали заказчику довольно навороченный программный комплекс — этакий аналог MSProject — взяли коньяку, разлили, и мой товарищ сказал: "Вот теперь, Вова, мы знаем, как надо было писать эту программу". В этот момент мы оба почувствовали и ясно увидели, как следует улучшать код, как направлен градиент восхождения. То есть стали профессиональными программистами. Профессионал — это человек, который умеет улучшать не разрушая.

- Труд программиста анонимен, как правило — для большинства пользователей, которым "до лампочки", кто придумал аську, например. Кто ее, кстати, придумал? Главное, чтобы работало! И работает... Не обидно?

- Анонимность — это ведь не так плохо. Если ты хочешь увидеть результаты своего труда — становись лесорубом. Если хочешь немедленной славы — ведущим токшоу. Программист далек и от того, и от другого.
Четыре молодых израильских программиста, которые организовали в 1996 году фирму "Mirabilis" решали абсолютно конкретную проблему — интерактивный обмен короткими сообщениями через интернет. Они эту проблему решили. Они не стали знаменитыми, раз Вы меня спрашиваете об их именах. Впрочем, они выложены на сайте ICQ http://www.icq.com/company/about.html. Я приведу их имена в английской транскрипции поскольку не рискую переводить ее на русский: Yair Goldfinger (26,Chief Technology Officer), Arik Vardi (27,Chief Executive Officer), Sefi Vigiser (25,President), Amnon Amir (24, currently studying). (В скобках возраст и должность на момент создания фирмы)
Мечтали они о славе? Возможно, но, конечно, не в первую очередь. Впрочем, проще всего спросить у них самих. Они сказали свою реплику в бесконечном диалоге. Это много. Это ведь не только разговор людей, но и компьютеров. А сколько компьютеров знает ICQ? Наверное, уже десятки миллионов. Может быть, это другая форма славы?

- А в профессиональном кругу — есть свои авторитеты, люди-легенды, романтики и изгои и т.д.? Перечислите поименно, пожалуйста.

- Изгои — есть, но перечислять их поименно я не стану. В частности, потому что они — особенно наиболее успешные — не афишируют своих имен. Изгои — это вирусописатели, взломщики — крэкеры. Они именно изгои вне зависимости от профессиональной компетентности, иногда очень высокой, иногда практически нулевой.
Эти люди вовсе не окружены романтической дымкой, как может показаться со стороны. Я не знаю ни одного программиста, который бы своими вирусами или взломами похвалялся. У настоящих хакеров есть правило: не навреди. Нельзя бить слабого. Это не благородно.
Все программисты люди, и многим случалось нарушать эти заповеди, и быть невольным или даже сознательным соучастником взломов или спамовых атак, но сообществом это никогда не приветствовалось и не приветствуется.

На роль романтиков лучше всего подходят рыцари свободного программного обеспечения — движения за открытые исходные тексты — Open Source. Самые громкие имена: один из главных идеологов движения, автор статьи "Собор и Базар" ("The Cathedral and the Bazaar") http://www.osp.ru/os/1999/09-10/071.htm Эрик С. Реймонд, первый разработчик Linux — Линус Торвальдс. Можно назвать много других имен. Люди свободного программирования заботятся о том, чтобы их имена сохранила история.
Не вдаваясь в детали, я хочу сформулировать главную движущую идею свободного программирования. Информация распространяется и умножается, не требуя почти никаких затрат для тиражирования. Почему человек, которому она нужна, должен платить за экземпляр? Правильный ответ: не должен он ничего платить за любую интеллектуальную собственность, в том числе за программы. Как нам писать программы? Их нужно писать всем вместе. Не нужно деления не только на архитекторов проекта и рядовых кодировщиков, но и на авторов проекта и его пользователей. Есть старая программистская поговорка: Good User — Dead User. Хороший пользователь — мертвый пользователь. Реймонд круто меняет положение дел: "Иметь пользователей — это великолепно и не только потому, что они показывают, что ваша работа отвечает их требованиям, то есть, что вы делаете нечто нужное. Если правильно взаимодействовать с пользователями, то они могут стать соразработчиками". Свободный софт — это софт преимущественно сетевой. Он развился вместе с инернетом и лучше всего чувствует себя в интернет-приложениях. Но не только там. Так что, давайте на нашем интернет-bazaar'е строить коммунизм. Мне очень интересно то, что делают рыцари свободного программирования, с ними весело и молодо. Но деньги-то приходится зарабатывать по-старому, самыми традиционными способами. Открытым кодом сыт не будешь. Это несколько удручает.

В профессиональном программистском кругу авторитетов нет. Это именно так. И это очень важное отличие программирования от других видов человеческой деятельности. Я не говорю о науке — с ее разветвленной системой иерархий: доктора, профессора, академики. Но даже в искусстве существуют авторитеты, чье слово крайне весомо, иногда определяюще.
Кроме программирования, я профессионально занимаюсь литературной критикой и знаю и ту, и другую кухню довольно хорошо. В ноябре 2002 года с очень коротким интервалом я читал лекции для преподавателей и курсантов программистской школы в Риге http://www.progmeistars.lv , и для студентов Литературного института в Москве. Контраст меня поразил.
Юные программисты вели себя очень корректно, но мне было не просто. Вопросы ставились остро и безо всякой оглядки на мой несравнимо больший опыт работы, и все мои публикации и исследования. Но при всей остроте мои слушатели были полностью компетентны в тех вопросах, которые поднимали. Это была крайне полезная встреча для меня, и очень многие положения мне пришлось продумать заново и заново сформулировать. Надеюсь, что и мои юные слушатели что-то полезное вынесли для себя. Это было реальное сотворчество.
Когда молодые литераторы вместо того, чтобы затеять жесткую дискуссию, смотрели мне в рот, я был разочарован. Конечно, и в литературе есть "сердитые молодые люди", но они не вступают в диалог. В литературе есть авторитеты — поэтому есть кого свергать, и есть за кем следовать. Вот только говорить не с кем. Впрочем, в последние годы и здесь среда становится свободнее, в основном благодаря интернету и возможности свободно публиковаться.
Но все-таки программистский демократизм мне несравнимо ближе. Здесь мы все равны перед компьютером.
На рынке программных продуктов тоже есть свои безусловные — авторитеты — брэнды. Но не внутри сообщества.
Это связано и с тем, что стремительно меняется среда разработки, и тот, кто блестяще писал вчера, сегодня просто с трудом может получить элементарную работающую программу. И с тем, что кардинально меняются области приложений, и скорость и мощность компьютеров, которая не может не влиять на сам код. Уместить работающее приложение в 16кб оперативной памяти — это виртуозно, но совершенно никому не нужно. Этой памяти у вас будет столько, сколько хотите. Сосредотачиваться приходится на чем-то совершенно другом, всякий раз новом и неизвестном. Накопление знаний происходит другим образом. Накапливаются идеи — а идеи это не авторитет, с ними и можно и нужно спорить.
А вот люди-легенды есть. Ну, самая известная это, конечно, Билл Гейтс. Но это легенда не без привкуса. Многие полагают, что Гейтс повинен в том, что сегодняшний и пользовательский, и системный софт находится в весьма плачевном состоянии. Ни защищать, ни нападать на этого бизнесмена я не стану. И как раз потому, что его слава — это слава продаж, а не слава программ. Программы Microsoft писал не он.
И вот сообщение в одной из гостевых книг: "Умер Дейкстра ;(
Собственно, говорить больше и нечего..."
Говорить действительно ничего не нужно. Для меня именно этим событием и был помечен и навсегда останется 2002 год. Еще одно сообщение — на сайте одного из американских университетов: "Professor Edsger Wybe Dijkstra, a noted pioneer of the science and industry of computing, died after a long struggle with cancer on 6 August 2002 at his home in Nuenen, the Netherlands. http://www.cs.utexas.edu/users/Redirects/UTCS.html
Дейкстра был одним из очень немногих людей, к которому определение человека-легенды применимо безо всяких натяжек. И дело не столько в том, что он "профессор" и "пионер". Он был человеком, который, будучи программистом par exсelence — чистой культурой профессии, никогда не ограничивался только написанием кода. Он написал две книги, которые и сегодня являются самыми, вероятно, глубокими рефлексиями программирования, как особого рода человеческой деятельности: "Дисциплина программирования" и "Заметки о структурном программировании". Эти книги можно читать и не будучи профессионалом. Это — взгляд философа, подлинное обобщение опыта. Дейкстра попытался ответить на вопрос "Что такое программирование" и, чтобы как-то сориентироваться в современном состоянии программных дел, его необходимо читать. Его мысли устарели не в большей степени, чем, скажем, философия Платона.

- Каков вклад программистов в экономику России, кто-нибудь потрудился подсчитать? Я не только о деньгах, вырученных путем продажи интеллектуальной собственности. Я о доле программного продукта в конечном результате технологических процессов (заумно как-то звучит!), будь то производство автомобилей, телепрограмм или перевозок железнодорожным транспортом.

- Программирование самая интернациональная профессия. Но при всем при том подавляющее большинство программ делается или в США или в филиалах американских софтверных компаний. Пока так. Разве что поднимется "золотой плавник Китая". Конечно, есть Индия, в которой экспорт программных продуктов составляет серьезную часть национального дохода, насколько я помню, около 6%. Есть очень интенсивно развивающееся программное производство в других странах, например, в Ирландии. Есть Европа, есть Израиль. Мне неизвестны цифры, касающиеся России, но я полагаю, что они незначительны.
То, что касается "доли программного продукта", она безусловно растет и растет довольно ощутимо. Но если мы захотим оценить вклад именно российских программистов в эту "долю", не думаю, что он будет большим. Я пишу программу на языке, который разработан американской фирмой, и выполняется под управлением операционной системы made in USA. Что тут мое? Что-то, конечно, есть, но немного.
В программировании не существует протекционистских барьеров. Это автомобили можно обложить несуразными ввозными пошлинами, с программами так не получится. Поэтому конкурировать приходится в трудной открытой борьбе.
Где российский продукт вне конкуренции? Это, во-первых, финансы. Бухгалтерский учет, управление предприятием, банковские программы, биллинговые системы — специфическая бухгалтерия телекоммуникационных компаний. Внедрение западных продуктов, даже таких известных как R/3, наталкивается на необходимость крайне непростой адаптации к нашему дикому законодательству. Дикость его не в какой-то особой сложности, а в непредсказуемости изменений. Здесь необходимы очень быстрые локальные решения, и, в общем, российские программисты их находят. Во-вторых, это языковая локализация: автоматические переводчики, проверка русской орфографии и тому подобное. То есть, мы выигрывает там, где мы закрыты, пусть не протекционистским, а естественным барьером.
Потребность в программистах постоянно растет, и есть успешно работающие софтверные фирмы и в России, но говорить хотя бы о таких успехах, как в Индии, не приходится. И здесь необходимо напомнить о до сих пор существующем языковом барьере. И Ирландия, и та же Индия — англоговорящие страны. А мы пока очень далеки даже от уровня неанглоязычной Европы. А язык программирования, как некой отдельной ойкумены, конечно, английский, и столица этой ойкумены — Силиконовая долина, хотя уже скорее как образ, чем как реальное географическое место.

- Когда-то, помнится, надеялись: вот внедрим АСУ и — экономика рванет вперед невиданными темпами. Но по прошествии времени убеждаемся в правоте классика — радио есть, а счастья все нет. Или я не прав?

- Радио-то есть, а вот АСУ-то нет. Задачи, которые ставились перед глобальными автоматизированными системами, оказались несравнимо более сложными, чем представлялось и в 60-е, и даже в 70-е годы. Когда разрабатывались первые комплексные решения — такие, как, например, Общегосударственная автоматизированная система (ОГАС), над которой работал замечательный ученый Виктор Михайлович Глушков http://www.russ.ru/netcult/20030107.html еще в рамках косыгинской реформы экономики, тогда возможности вычислительной техники и особенно развитие электронных средств передачи данных — глобальных сетей — было на уровне просто-таки первобытном по сравнению с сегодняшним днем. Но даже сегодня мы очень далеки от устойчивых глобальных решений. И не очень понятно, достижимы ли они вообще.
Проблема состоит в том, что мы пытаемся описать изменяющуюся систему. А ее динамика не всегда достоверно предсказуема. Мы решаем одну задачу — описание сегодняшней экономики, а пока мы ее решаем, экономика делает непредсказуемый зигзаг и, хотя мы вроде бы пытались "выстрелить" с упреждением, попадаем все равно в "молоко".
Это не значит, что не нужно пытаться решать проблему автоматизированного управления хозяйством, но нужно отчетливо представлять себе наши возможности. Даже на сегодняшний день они сравнительно невелики. А в 60-80-е годы задача была заведомо неразрешима. Но это мы знаем сейчас.
А экономика, тем не менее, рванула вперед и весь мир перекроила — превратив его из индустриального в постиндустриальный — из мира материального производства в мир информационный. Но этот рывок был как раз непредсказуем с точки зрения планового хозяйства.

- Все-таки на счастье остановимся. Бывают ли программисты счастливые? И в чем оно, программерское счастье?

- Бывают. Не часто, но бывают. Впрочем, частное счастье это уже и не счастье вовсе.
Когда я задал этот вопрос моему 13-летнему сыну, который делает самые первые шаги в программировании, он мне ответил: "Счастливый программист, это тот, кто может выкинуть свой компьютер с 22-этажа, чтобы потом горько об этом пожалеть". Может быть и так.
Счастье, оно ведь всегда одинаковое — это, вероятно, прикосновение к свободе и красоте. И то и другое есть в программировании.
Я помню свое ощущение, когда мой обработчик "окон" наконец задышал и стал подчиняться командам, и сказал я в сердце своем: "Господи, как же это все-таки красиво!". Это редкое чувство.
Дейкстра говорил, что наслаждаться строго проведенным рассуждением, можно так же, как адажио Моцарта. В этом нет преувеличения.
Когда я нахожусь в хорошей форме и пишу программу — может быть, даже очень простую — появляется ощущение, что у меня бесконечное количество пальцев: я совершенно свободен, я могу "взять" в руки мельчайшую деталь, выделить сколь угодно малую подробность. Тогда чувствуется упругость и плотность формальных конструкцией и свобода в воплощении, кажется, любого замысла. Это всегда — мгновение, но это бывает.

- Вы в одном из своих выступлений на радио "Свобода" заметили, что "цель программиста — совершенный код, который бы воплотил в цифре образы реального мира, преломленные через сознание и представленные в виде элегантных языковых конструкций": Я это к чему вспомнил: ведь реальный мир сегодня включает в себя мир цифровой и без него— уже немыслим. Как же такой симбиоз описать? И что извлечет (если извлечет) из такого описания к практической пользе человечества Computer Science?

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

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

- "Лавинообразность" развития цифровых технологий вызывает подозрение, тревогу и настороженность у очень многих людей, но нужно сказать, что это люди старшего или среднего поколения. У молодых людей не возникает вопроса, а не опасен ли интернет? А воздух, которым мы дышим, не опасен? Тоже ведь разносчик вирусов.
Но верно и другое: никогда ни человечество вообще, ни живущее сегодня поколение с такой скоростью изменения мира не сталкивалось. И мы, кажется, не вполне готовы к тому, что происходит.
И может быть, тяжелее всего страдает школьное образование. Чему сегодня нужно учить школьника? Наверное, нужно учить читать. И кажется все. Больше я уверенно не назову ничего. Просто потому что пока мы его учим всякой ерунде типа геометрии или литературы, этот школьник в свободное от наших домогательств время становится веб-мастером и на домашнем компьютере печет сайты, как блины, и зарабатывает в 10, а то и в 20 раз больше чем его образованные родители.
Что они могут ему сказать? Учись, сынок, а то... А что? Я бы рад учиться, только вы мне толком объясните чему и зачем. Я вот английский знаю лучше вас, потому что "завис" в интересном англоязычном чате, посвященном Гарри Поттеру. Это, конечно, весьма специфический английский, но при необходимости чадо-то объяснится с англичанином, а родители будут судорожно листать разговорник: и повторять "Excuse me, excuse me...", холодея до полной немоты.
Можно сказать, что необходимо широкое систематическое образование, чтобы картина мира не сводилась к узкому окошку дисплея. Но я совершенно не уверен в том, что этот наш гипотетический школьник (я могу и реальных таких набрать немало) не сможет разобраться с философией Платона того же, но он сделает это не потому, что ему нужно сдавать экзамен, а потому что он почувствовал в этом необходимость. Например, решил таким непростым способом пустить пыль в глаза симпатичной барышне.
Сегодня человек должен быть готов постоянно переучиваться, и нужно сказать ничто лучше программирования этому не учит. Программисты оказались самыми подготовленными к сегодняшнему дню людьми. Но не только они. Журналисты, например, тоже. То есть люди, чьи профессии не связаны жестко с предметной областью. Конечно, это постоянный тренинг, постоянное напряжение, не всякий это выдержит...
Станислав Лем назвал нарастание цифровых технологий "Дорога без возврата". Но ведь электричество или автомобиль — это тоже дорога без возврата. Мы уже не можем без них. Опасно это?
А если... Те, кто останется в живых, заново начнут строить электростанции.
Не нужно пугаться, нужно учиться жить немного на лету. Может это даже интереснее?
А время в цифровом мире действительно идет по другому...

- И чего нам ждать от будущего? Может быть, кто-то уже заглядывал в программу "2003" - и дальше?

- В силу тех причин, что я назвал в ответе на первый вопрос, мне трудно сказать что-то конкретное о программном обеспечении 2003 года, а вот в более долгосрочной перспективе можно попробовать разобраться.
Попробуем взглянуть на эволюцию языков программирования. (Здесь я сошлюсь на содержательную статью Руслана Богатырева "Природа и эволюция сценарных языков" http://www.osp.ru/pcworld/2001/11/144.htm ).
Первые языки — это вообще-то и не языки вовсе. На первых машинах программировали в кодах: то есть вводили в компьютер наборы нулей и единичек, которые соответствовали командам и данным. Эти программы были очень короткими и очень простыми, с сегодняшней точки зрения. Практически отсутствовали операционные системы и не было средств отладки. Это — архейская эра программирования: 40-е, начало 50-х. Программирование было предельно подробным и совершенно нетехнологичным. Можно сказать, что в этот момент программирование еще не оторвалось от "железа".
Но уже в середине 50-х появились первые языки программирования, и один из самых знаменитых Фортран (1954, Fortran), который был разработан Дж. Бэкусом (IBM). Это уже самый настоящий язык. В нем есть типизированные данные и команды обработки. Это уже не набор нулей и единичек, а вполне осмысленные фразы, составленные из английских слов. Каждая фраза — это целая программа в машинных кодах. То есть произошел первый этап сборки. На этом языке уже можно было писать огромные комплексы. Они были вполне управляемыми. Их можно было сопровождать и совершенствовать.
Но и этот язык, и множество других языков, таких как Паскаль или Си, во многих отношениях гораздо более удобных и мощных, были все-таки слишком подробными, и в 80-е годы произошел переход к следующему уровню сборки — к объектам. Объект — это уже целая программа на языке высокого уровня, например на С++. Он содержит и данные, и программы обработки этих данных, но он открыт, гибок и приспособлен для того, чтобы объединяться с другими объектами.
Объект — это уже не символ алфавита, это своего рода иероглиф.
В девяностые годы стремительно развивались языки сценарного типа, или скрипты. Это уже языки, которые строятся на основе готовых объектов — языки склейки, такие как VisualBasic или JavaScript. Программирование опять ускорилось и упростилось, и опять расширилась область его приложений.
На основе этого краткого обзора можно увидеть, что происходило и предположить, что будет происходить.
Наборы объектов будут все более доступными и универсальными, все более независимыми от операционных систем, средства "склейки" станут еще более мощными и тонкими. То есть, в глобальном масштабе мы будем все чаще прибегать не к написанию программ, а к их сборке из готовых кубиков для наших текущих потребностей.
Реймонд пишет: "...отличительная особенность великих программистов как раз и состоит в том, что они конструктивные лентяи. Они делают то, что делают не ради самого процесса, а ради результата и почти всегда проще начать, отталкиваясь от хорошего, частичного решения, чем вообще с нуля".
Программирование развивается так, чтобы сделать из всех программистов — "великих" в смысле Реймонда. Писать нужно, как можно меньше и только в случае необходимости, то есть, когда того объекта, который нужен, точно нет. Нужно учиться использовать готовое. И самое важное, что этого готового очень часто вполне достаточно. А развитие интернета позволяет получить доступ к уже существующим решениям и их использовать.
Это очень важная, на мой взгляд, вообще основная тенденция развития программирования на обозримое будущее. А вот какими будут конкретные решения, я предсказать не берусь.
Но у этой тенденции есть и оборотная сторона. Упрощение программирования приводит к его затаптыванию толпой.
Если для написания компьютерного вируса необходимо изощренное знание ассемблера — это одно — таких специалистов просто физически мало, и далеко не каждый из них напишет вирус, есть дела и поинтересней. Если для создания интернет-червя — сетевого вируса — достаточно просто знания определенного адреса сетевого ресурса, где можно взять все необходимые компоненты для его сборки с помощью банального Бэйсика — это совсем другое. Таких вирусов будет очень много (и есть).
И здесь необходимо сказать о своего рода сетевой морали. Цифровой мир гораздо более хрупок и неустойчив по сравнению с материальной реальностью, он еще очень юн. И хотя он стремительно взрослеет, пока он легко уязвим.
Выходя в сеть, мы чувствуем себя одинокими и невидимыми, а на самом-то деле мы едем в переполненном трамвае и, невольно взмахнув рукой, мы кого-то бьем по лицу. Об этом необходимо помнить, и вести себя соответствующим образом.

Автор Андрей Михайлов
Андрей Михайлов — офицер, журналист, собственный корреспондент Правды.Ру в Северо-Западном федеральном округе
Обсудить