"Желания потребителей значат больше, чем их нужды", или Ода Паскалю
"Почти все в программном обеспечении может быть реализовано, продано и даже использовано, если проявить достаточную настойчивость... Но существует одно качество, которое нельзя купить таким образом, — это надежность".
Никлаус Вирт
Публично признаваться в любви к какой-либо операционной системе, платформе, фирме-производителю ПО, языку программирования (равно как и к марке машин, писателю или политической партии) - занятие небезопасное. Нет, если речь идет о чем-то модном, что у всех на слуху, то это еще ничего, в противном же случае можно получить, иногда даже и невиртуально. Тем более, если речь идет о журналисте, пишущем на околокомпьютерные темы, - в самом лучшем случае его обвинят в "джинсе", безграмотности или графоманстве. И все же я признаюсь. Я, господа, люблю язык программирования под названием "Паскаль". И восхищаюсь его создателем - Никлаусом Виртом.
Профессор Никлаус Вирт (Niklaus K. Wirth) родился в 1934 году. Никлаус Вирт довольно долго проработал в Америке, в самой колыбели новых технологий - в Стэнфорском университете. Но проникнуться духом всеобщей коммерциализации так и не смог. Он всегда считал, что компьютерные системы в первую очередь должны быть простыми, ясными и понятными, а уже потом - продаваемыми. С этими взглядами он решительно не попадал в "струю": промышленники еще задолго до появления ИТ-технологий уяснили одно свойство потенциальных покупателей - они не соблазняются простотой. И даже, как ни парадоксально, дешевизной! Парадигма рекламной идеологии постиндустриального общества - "купи то, чего еще нет у твоего соседа", причем простота, ясность, доступность, надежность к этому не имеют никакого отношения. "Надежные и ненавязчивые программы обычно не представляют интереса для разработчика. Желания потребителей значат больше, чем их нужды", - говорил Н.Вирт. А Р.Столлмен, основатель и идеолог движения "за свободный софт", недавно заметил по аналогичному поводу, что ранее "компании могли заниматься бизнесом и получать доходы, но они не могли переделывать общество, чтобы оно подходило к их бизнес-планам".
Вирт всю жизнь, как умел, боролся с этими тенденциями. Конечно, он не был беспочвенным мечтателем. Он создал языки Паскаль, Модула, Оберон (про который поклонники говорят так: он во всем лучше Java, кроме количества затраченных рекламных денег) и несколько "железных" конструкций - за разработку компьютера "Лилит" даже удостоен Тьюринговской премии, считающейся высшей наградой в области компьютерной науки. Паскаль (сам наследник Алгола) оказал огромное влияние на последующее развитие принципов построения языков программирования. Кроме всего прочего, именно Вирт - изобретатель технологии под названием "виртуальная машина", которая была так разрекламирована с появлением платформы Java от фирмы Sun. Еще в начале 70-х им была придумана абстрактная Pascal-машина (P-машина), исполняющая специальный P-код, который интерпретировался на каждом конкретном устройстве. Ни одно из этих изобретений не принесло ему коммерческого успеха - но он его и не добивался. Он всегда оставался сторонником "чистой науки". В конце девяностых Вирт оставил работу в ETH (Eidgenoessische Technische Hochschule - Федеральный технологический университет в Цюрихе) и ушел на пенсию. И сейчас он частенько сетует на коммерциализацию науки: "Сама мысль о том, что человек может испытывать удовлетворение от хорошо выполненной работы - просто потому, что эта работа творческая и профессиональная, признана абсурдной. Не ценится ничего, кроме экономического успеха и его денежного выражения". Наиболее известное детище Н.Вирта - язык программирования Паскаль. Надо сказать, что пресловутое противостояние двух лагерей - Си и Паскаля - все эти годы намеренно поощрялось коммерческими компаниями (вновь предоставим слово самому Вирту: "Многие люди относятся к стилям и языкам программирования как к религиозным конфессиям: если вы принадлежите к одной из них, то не можете принадлежать к другой. Но это ложная аналогия, и она сознательно поддерживается по причинам коммерческого порядка"). Если же говорить о более серьезных возражениях против Паскаля как языка для профессионалов, то, пожалуй, они все в той или иной степени повторяют доводы, высказанные еще в 1981 году одним из создателем языка Си Брайаном Керниганом в статье "Почему Паскаль не является моим любимым языком программирования". Кстати, статью эту авторитетные журналы первоначально отказались опубликовать, и на суд широкой общественности она была представлена только в 1984.
Уже даже к моменту ее написания большинство возражений, высказанных Керниганом, были неправомерными. Да, первоначальный Паскаль в варианте Вирта не имел многого, что должно было бы быть в языке, если бы он претендовал на звание "системного" (что, впрочем, не помешало Вирту с сотрудниками разрабатывать компиляторы для Паскаля на самом Паскале). Однако, в форме знаменитой коммерческой версии от компании Borland, впервые появившейся в начале 80-х, это уже был совсем другой продукт. Turbo Pascal сделал за Вирта то, что университетский профессор не считал нужным делать, - преодолел людскую предвзятость и вывел Pascal на второе место среди языков программирования по популярности. Между прочим, соратник Кернигана Деннис Ритчи уже в 1993 году высказывался совсем по-другому: "Я утверждаю, что Паскаль очень близок языку Си. Одни, быть может, этому удивятся, другие - нет... Даже интересно, насколько они близки друг другу".
Если углубиться в суть разногласий между "сионистами" и "паскалистами", то основная претензия первых к Паскалю заключается в том, что он недостаточно гибок, особенно при работе с системными устройствами. Действительно, например, в Паскале, даже в последних реализациях от Борланд (Borland Pascal 7.0), довольно неразвитая система ввода-вывода - в сравнении с Си. Другим кардинальным недостатком Паскаля считается отсутствие поддержки массивов с открытыми границами, которое, впрочем, на самом деле легко обходится путем использования указателей. Лично автор этих строк создавал в программах, написанных на Паскале, массивы с плавающей верхней границей, объем которых ограничивался лишь количеством доступной памяти. Но, разумеется, Си в этом отношении куда более лаконичен. Однако, у Паскаля есть одно совершенно незаменимое свойство, которое, наряду с удобством и простотой борландовской среды Turbo, и сделало Паскаль столь популярным среди тех, кто занимается программированием, так сказать, "для себя" - ученых, инженеров и просто любителей (никакой Бейсик, хоть и специально созданный для этих целей, и все эти годы напористо продвигаемый всей мощью Микрософт, с ним не сравнится по "народной" популярности). Наиболее точно это выразил один мой знакомый электронщик, который умел программировать на трех-четырех ассемблерах для микроконтроллеров, но не знал ни одного языка высокого уровня. Впервые увидев текст паскалевской программы, он воскликнул: "а я тут все понимаю!". Если вы сравните две строки, выражающие одно и то же, но написанные - одна на Си, другая на Паскале, то, возможно, поймете, о чем идет речь (пример не из самых навороченных, просто первый попавшийся):
For(n=0;n<400;n++)printf("n = ",*n) //С
For n:=0 to 400 do write("n = ",n) //Pascal
И сейчас гораздо больше народу, чем это можно представить под влиянием популярных компьютерных журналов, совершенно не желает отказываться от старого доброго Паскаля, который более чем отвечает их нуждам. Но настоящую новую жизнь Паскаль обрел с появлением визуальной среды программирования Delphi, основанной на расширении Паскаля - Object Pascal. Это был реальный триумф корпорации Borland (которая на время зачем-то переименовывала себя в Inprise) - второй за двадцать лет. По поводу Дельфи столь принципиальных споров уже не возникало - разве только в частностях или из чистого снобизма. Это с самого начала была полноценная среда программирования, равно пригодная для высоких профессионалов и начинающих любителей, среда, которая в значительной степени вообще определила уровень продуктов такого рода.
Если вернуться к Вирту и его противодействию коммерциализации науки, то невольно вспоминается мысль, высказанная одним из авторов журнала "Мир ПК": "Паскаль и Си, давшие жизнь многим своим потомкам, являются яркими выразителями соответственно европейской и американской школ". У знаменитого автора детективов Рекса Стаута в одном из романов про Ниро Вульфа есть непревзойденная по выпуклости характеристика различия между европейской и американской культурой. Элитарный ресторан, предназначенный для посещения исключительно гурманами, способными на вкус перечислить количество и ассортимент специй, добавленных в то или иное блюдо, посещает некий супербогатый американец. "Ты представляешь! - восклицает владелец ресторана венгр Вукчич. - Он послал меня за рыбными палочками!" Нет, я здесь не собираюсь рассуждать на темы идеологических истоков движения "антиглобалистов" или о причинах, по которым рестораны "Макдональдс" во всем мире оборудуются небьющимися стеклами. Но хочу спросить у читателя, понимает ли он, в чем на самом деле заключается главный недостаток операционной системы Windows? Вовсе не в пресловутых синих экранах, не в неподдающемся учету количестве ошибок и не в необъятности требований к ресурсам. Главное в том, что монополия продуктов Микрософт на рынке - это все равно, как если бы все магазины в мире были завалены исключительно рыбными палочками, гамбургерами, замороженными чипсами, сухими сливками и растворимым кофе - разумеется, все "самой последней модели".
У защитников гейтсо-макдональдского подхода к ведению бизнеса вообще и ОС Windows в частности есть один довод, с которым трудно спорить. Действительно, то, что навороченные компьютеры стали повседневной реальностью, - это во многом заслуга таких, как Гейтс, которые стали штамповать высокотехнологичные устройства и программы к ним, как макдональдские гамбургеры. И чем больше их штамповали, тем дешевле они становились. Известный закон, который гласит, что "последняя модель компьютера всегда стоит 1500 долларов", еще пятнадцать лет назад звучал вовсе не так: новые модели IBM AT продавались примерно за $7000. Но такая логика - всего лишь логика тех, для кого "крутые навороты" важнее функциональности. Нет никаких сомнений, что все (почти без исключения) функции, которые действительно необходимы для 99 из 100 пользователей компьютеров, вполне могут быть реализованы на машине с 386 процессором, четырьмя мегабайтами памяти и тактовой частотой в 40 МГц. Хотите возразить? Тогда обратите внимание, что навороченная почтовая программа TheBat! до самых последних версий умещалась на одну дискету (да и сейчас ненамного превышает эти объемы). Ах да, я забыл про геймеров... ну, конечно, конечно.
Юрий Ревич 24.11.2002
www.russ.ru