В 60–70-х годах университетские специалисты по компьютерным технологиям перестали акцентироваться только на проектировании аппаратного обеспечения, а вместо этого начали закупать коммерчески доступное оборудование и совершенствовать принципы создания программного обеспечения. Центр тяжести их работы сместился от математики и электронной инженерии к ПО, и одной из первых задач стала разработка языков программирования, имеющих эффективный, надежный и простой в сопровождении код. Поскольку к языкам программирования всегда предъявлялись бесконечно разнообразные требования, то за последние 50 лет были созданы и получили применение тысячи языков.

От Алгола к Паскалю

В 1962 году Никлаус Вирт получил докторскую степень в области электронного машиностроения в Калифорнийском университете Беркли, а затем с 1963 по 1967 год преподавал в Стэнфордском университете. В 1968-м Вирт вернулся в Швейцарию, где администрация Цюрихского университета и Швейцарской высшей технической школы поручила ему основать факультет по компьютерным наукам.

«Будучи специалистом по программному обеспечению, я провел ревизию доступных инструментальных средств, и выбор оказался весьма разочаровывающим, — вспоминает Вирт. — Был Алгол с рекурсией и хорошей структурой, однако реализован он был не ахти, и я подумал, что если им пользоваться, то это только сведет на нет любые шансы того, что компьютерная наука будет воспринята. Кроме Алгола был Фортран, который, на мой взгляд, для преподавания не подходил, как и Ассемблер».

Долой «жирные» программы

Идут ли большая производительность и расширенная функциональность приложений в ногу со все увеличивающимися запросами на вычислительные ресурсы? В большинстве случаев — нет.

Никлаус Вирт

В результате Вирт разработал более совершенный, чем Алгол-60, язык, пригодный для преподавания, предложив назвать его Алгол-68: «Я решил продолжить работу, начатую в Стэнфорде, и реализовать новый компилятор Алгола, а позднее из этого получился Паскаль. Я входил в состав рабочей группы Международной федерации обработки информации, занимавшейся созданием наследника Алгола-60, и в конечном итоге там были приняты к рассмотрению два предложения — одно от Ада ван Вейнгардена из Амстердама, второе от меня. Мой вариант потерпел неудачу. Но я решил несмотря ни на что реализовать свою разработку, поскольку она была мне нужна для преподавания. В результате в 1969 году был создан Паскаль, и в 1971 году я впервые воспользовался им на вводном курсе программирования».

На заре становления компьютерной науки ученые с готовностью делились друг с другом своими новациями, таская туда-сюда катушки магнитных лент с исходными кодами, и Вирт помогал проектам переноса компилятора Паскаля на другие аппаратные архитектуры. В результате ко времени, когда началась революция микропроцессоров, Паскаль был доступен сразу на нескольких разных мэйнфреймах: «Настоящий прорыв произошел с появлением микрокомпьютеров вроде Apple II, Tandy и др. Появился UCSD Pascal, а также Turbo Pascal от компании Borland, которая предлагала не только компилятор, но и интегрированную систему с текстовым редактором и отладчиком всего за 50 долл., что было смехотворной суммой по тем временам, ведь компиляторы для больших машин стоили тысячи. Люди начали обучаться программированию с нуля, а компьютеры появились в домах и школах».

Паскаль был структурным языком, поэтому он был более пригоден для создания готового к рабочему применению ПО на появившихся тогда микрокомпьютерах. Благодаря строгой проверке типов и четкому описанию интерфейсов он превосходил Бейсик при разработке практически любых приложений.

После Паскаля

Так как Вирт распространял Паскаль бесплатно, компании вроде Borland имели возможность предлагать весьма недорогие продукты, базирующиеся на его коде: «Паскаль был общим благом. С Apple, Tandy и Borland я практически не взаимодействовал — Атлантический океан оказался слишком широким, чтобы через него можно было тесно сотрудничать. Мы всегда распространяли свое ПО бесплатно и сами покупали магнитную ленту, так что обращаться за разрешением ко мне никто не был обязан».

Никлаус Вирт о культуре разработки ПО

Вирт известен определенными и выражаемыми с абсолютной точностью взглядами на современное состояние культуры разработки ПО, поэтому интервью с ним всегда вызывают оживленную реакцию в компьютерном сообществе.

Карло Пешио

В 70-х Паскаль завоевал популярность во всем мире, а Вирт продолжал придумывать языки и среды, оптимальные для целей образования. С 1976 по 1977 год он взял годичный отпуск от преподавания и в этот период работал в Xerox PARC над модульной версией Паскаля, которую можно было бы применять для создания более крупных программ. Чтобы подчеркнуть модульность своего нового языка, он назвал его Модула: «Свои дальнейшие языки я не стал называть Паскалем, и с коммерческой точки зрения это было ошибкой, так как если бы я назвал Модулу Паскалем-2, а Оберон — Паскалем-3, они бы пользовались более широким успехом. Модула-II появился через девять лет после Паскаля. Это был язык для системной разработки, на который повлиял, в частности, MESA, создававшийся в Xerox PARC. Надо сказать, MESA тоже был основан на Паскале. Главной новой особенностью Модулы стал модуль, а в нем — объявление интерфейса. Модули можно было компилировать по отдельности, при этом выполнялась строгая проверка типов в интерфейсной части. В Фортране этого не было. Компоновка нескольких модулей Модулы настолько же надежна, как и программирование в пределах одного модуля, — это чрезвычайно важная особенность».

Дав новому языку имя Модула, а не Паскаль-2, Вирт лишил язык коммерческого потенциала, но благодаря этому смог сосредоточиться на продолжении разработки учебных пособий для преподавания. Работая в Xerox PARC, Вирт также заинтересовался аппаратным обеспечением: «В Xerox PARC мне в личное пользование дали компьютер Alto — это была кардинальная перемена по сравнению с тем, как тогда обычно использовались компьютеры. В Швейцарии у меня в то время все еще был терминал, соединенный кабелем с большой машиной, которой пользовались еще сотни других сотрудников. Я решил, что больше не хочу программировать на этих «динозаврах», мне нужен собственный компьютер, но в то время они еще не продавались на потребительском рынке. Единственное, что я мог сделать, это сконструировать компьютер самостоятельно — так я увлекся аппаратным обеспечением. Я ведь учился на инженера-электронщика, поэтому мне было относительно просто. Но за полтора десятка лет, прошедших со времени окончания университета, электроника кардинально поменялась. Это было поистине потрясающе: за очень скромные деньги мы обустроили небольшую мастерскую и сконструировали ряд прототипов. Наш компьютер для обучения программирования на Модуле мы назвали Lilith и разработали для него свою операционную систему».

В 1987 году Вирт снова на год перешел на работу в PARC и приступил к осуществлению идеи создания объектно-ориентированной версии Паскаля/Модулы, которую он назвал Оберон: «Мы с моим коллегой Юргом Гуткнехтом пришли к убеждению, что будущее преподавания программирования за более простыми языками. Модула оказалась перегруженной функциями и возможностями, поэтому мы решили очистить ее, и результатом стал Оберон. По сути, мы добавили всего одну особенность, но важную — расширение типов. Вместе с процедурными переменными, которые уже присутствовали в Модуле, это давало возможность реализовать полноценный объектно-ориентированный язык».

Компьютер Lilith за десять лет до этого Вирт сконструировал вместе со своими аспирантами, а на этот раз таким же образом специально для Оберона была создана рабочая станция под названием Ceres. Для нее также была написана операционная система Operon с растровыми окнами, а на Обероне разработан текстовый процессор и другие инструменты.

Программируемые логические матрицы

В 90-х Вирт переключил внимание на проектирование аппаратного обеспечения на основе программируемых логических матриц (Field-Programmable Gate Array, FPGA). Его исследовательские команды разрабатывали языки для программирования FPGA, позволявшие весьма сложными способами использовать эти интегральные схемы.

Интерес к FPGA привел Вирта к проекту, над которым он работает и по сей день. После выхода на пенсию в 1999 году Вирт продолжил экспериментировать с FPGA и добился, в частности, полной реализации центрального процессора архитектуры RISC их средствами. Сейчас он модифицирует ОС Operon таким образом, чтобы она смогла работать на RISC-компьютере, основанном на FPGA. Он планирует построить полноценный компьютер на базе FPGA-платы Xilinx за 100 долл.: «Я пришел к выводу, что принцип простоты, которым я руководствовался в программном обеспечении, следует применять и к аппаратному, и сегодня это возможно благодаря программируемым матрицам. У меня есть макетная плата Xilinx с FPGA, на которой я реализовал микропроцессор. Это RISC-чип, но он гораздо проще, чем ARM, MIPS или SPARC, — в нем есть лишь все самое важное, что необходимо разъяснить и показать студентам. Код процессора занимает всего три страницы. Я написал компилятор Оберона для своей RISC-архитектуры, а также компоновщик и загрузчик».

По мнению Вирта, «пенсионер — это лучшая должность, поскольку не надо ходить на скучные собрания научных комитетов». Его нынешняя цель — закончить RISC-процессор на основе FPGA, выпустить обновленный Оберон для него и доработать книгу по этому языку, добавив главы с описанием процессора и его архитектуры.

***

Когда работа над аппаратным обеспечением, ПО и книгой Вирта будут окончены, можно будет построить учебную лабораторию с рабочими станциями для Оберона, в которой студенты — слушатели курсов компьютерных дисциплин смогут начать с написания программы «Hello world» на Обероне, потом перейти к основам объектно-ориентированного программирования и архитектуры операционных систем, а после — и к проектированию аппаратного обеспечения. Надежным помощником в этом им станет учебник с подробным описанием ПО и оборудования в лаборатории. Все будет настолько простым, элегантным, понятным и легким в освоении, что студенты смогут получить максимум знаний за максимально короткое время — иного Никлаус Вирт не допустит.

Чарльз Северенс (csev@umich.edu) — редактор журнала Computer, преподаватель школы информации Мичиганского университета.

Charles Severance, The Art of Teaching Computer Science: Niklaus Wirth, IEEE Computer, July 2012, IEEE Computer Society. All rights reserved. Reprinted with permission.