Не Паскалем єдиним: що зробив для сучасного світу лауреат комп'ютерної «нобелівки» Ніклаус Вірт

image

Деякі вважають, що сучасний світ майже не знає Ніклауса Вірта і навіть не здогадується про його величезний внесок у світову комп'ютерну науку. Хтось вважає його «батьком Паскаля». Вірта згадують не тільки педагоги у ВУЗах, коли викладають студентам Turbo Pascal, але і комерційні розробники, які пишуть на Delphi.

Насправді, Ніклаус Вірт є інженером з великої літери, його внесок у розвиток мов програмування не обмежується Паскалем, а тільки починається з нього. Крім того, Вірт — педагог, громадський діяч і, можна сказати, філософ. Спробуємо оцінити реальний масштаб його особистості і внесок в ІТ-індустрію.

Дитинство, освіта, захоплення

Ніклаус Вірт народився 15 лютого 1934 року в невеликому містечку Вінтертурі, в передмісті Цюріха. Його батьки — Уолтер і Хедвіг Вірт. Батько Ніклауса був шкільним учителем. Він жив неподалік від школи, де викладав його батько. У їх домівці була хороша бібліотека, де Вірт знаходив чимало цікавих книг про залізниці, турбіни і телеграф.

Вінтертур має багатовікову історію і славиться своїми машинобудуванням: там випускаються локомотиви і дизельні двигуни. З дитячих років Вірт захоплювався технікою, особливо авіамоделюванням. Для запуску ракет потрібно було отримувати паливо, і тому він зайнявся хімією. Юний Вірт обладнав у підвалі школи «секретну» лабораторію. Ніщо не могло його зупинити: одного разу зроблена модель відхилилася від заданої траєкторії і попала під ноги директор школи. Однак Вірт все одно продовжував наполегливо йти до поставленої мети.

Хобі виявилося настільки серйозним, що Вірт навіть побудував більше десятка моделей за власними кресленнями. Між іншим, пізніше він зайнявся цими польотами і проніс це захоплення через усе своє життя. Навіть у вельми поважному віці творець популярного мови програмування не відмовляв собі в задоволенні політати на реактивному винищувачі.

image

Коли йому виповнилося 18 років, то він з ще двома цюріхськими авиамоделистами виписали з Англії бажану радіоапаратуру. Це визначило його подальшу долю – у 1954 році Вірт вступив на факультет електроніки в цюріхський ETH (Eidgenoessische Technische Hochschule – Швейцарський федеральний технологічний інститут). Після чотирьох років навчання Вірт отримав ступінь бакалавра в області електротехніки. А потім починається славне десятирічне заокеанське наукове «турне» майбутнього «батька Паскаля» і «короля компіляторів» за маршрутом Швейцарія – Канада – США – Швейцарія.

Своє навчання Вірт продовжив у Лавальском університеті міста Квебек (Канада), де у 1960 році отримав ступінь магістра. Потім його запросили в університет Каліфорнії в Берклі (США) – майбутню перлину Кремнієвої долини. Там під керівництвом професора Хаскі в 1963 році Ніклаус Вірт захистив дисертацію, присвячену розвитку Algol'у засобами Лиспа (Euler).

Путівка в життя

Ця робота в буквальному сенсі дала йому путівку в життя: Вірта примітили метри програмування і запросили в Комітет IFIP по стандартизації Algol'у.

Разом з Чарльзом Хоаром Вірт відстоював у комітеті лінію на розробку помірно модифікованої версії Algol'у, вільної від недоліків вихідного мови та доповненої мінімумом дійсно необхідних коштів. Вірт і Хоар представили комітету мову Алгол-W (W — від Wirth), що представляв собою саме таку переробку Algol'у, але підтримки не зустріли. По завершенні роботи комітету у 1968 році Вірт увійшов в число тих, хто критикував Алгол-68, говорячи про його недостатню надійність і надзвичайної надмірності.

Та школа не пройшла дарма: на все життя Вірт запам'ятав, що доводити свою правоту потрібно справою, особливо коли тебе не хочуть чути. У розробці мов він назавжди відмовився від абстрактно-наукового підходу в користь математично інженерного. За його словами, краще спочатку реалізувати мову і лише потім слід писати про нього.

Великі однодумці

Романтичні 1960-ті роки започаткували дружбу трьох патріархів структурного програмування – голландця Эдсгера Дейкстри, англійця Чарьза Ентоні Хоара та швейцарця Ніклауса Вірта.

image
Зліва направо: Ніклаус Вірт, Эдсгер Дейкстра, Чарльз Хоар

Цих «нобелівських» лауреатів (премія Тюрінга, що присуджується асоціацією ACM, вручається раз в житті і прирівнюється в комп'ютерних науках до Нобелівської) зблизили не стільки абстракції комп'ютерних наук, скільки чітка професійна позиція.

Паскаль

Найвідомішим досягненням професора Вірта вважається мову Паскаль (1970). Паскаль зіграв величезну роль в області формування світогляду кількох поколінь програмістів. Головна його перевага в простоті і елегантності: він побудований на чітких принципах структурного програмування, сформульованих Эдсгером Дейкстрой, на красивій математичної базі, закладеної Ентоні Хоаром, і на блискучому архітектурному втіленні ідей Algol-W, реалізованих Никлаусом Віртом.

З технологічної точки зору, Паскаль був цікавий не тільки тим, що його інтерпретатор, створений в ETH, став однією з перших реалізацій мов високого рівня на самому собі, приблизно на два роки випередивши компілятор Сі. У ході робіт над ним у 1973 році була придумана абстрактна Pascal-машина (P-машина), виконуюча спеціальний P-код. Щоб вирішити проблему перенесення компілятор Паскаля на різні платформи, Вірт вирішив скористатися випробуваними часом " методами інтерпретації.

Мова Паскаль багатьма сприймався, насамперед, як мову викладання комп'ютерних наук. Але сам Вірт не згоден з таким явним звуженням його потенціалу (1984): «Паскаль був розроблений в якості мови для навчання. Хоча це твердження справедливо, але його використання при навчанні не було єдиною метою. Насправді я не вірю в успішність застосування під час навчання таких інструментів і методик, які можна використовувати при вирішенні практичних завдань. За сьогоднішніми мірками Паскаль володів явними недоліками при програмуванні великих систем, але 15 років тому він представляв собою розумний компроміс між тим, що було бажано, і тим, що було ефективно».

«П'ятий елемент»

У період з 1978 по 1980 рік у Швейцарському федеральному технологічному інституті, куди Вірт повернувся ще в кінці 60-х, він розробив одну з перших комп'ютерних станцій з графічним дисплеєм 768 x 592 пікселів і мишею. Для свого комп'ютера він вибрав дещо дивна назва — «Ліліт».

Ліліт в іудейської традиції, злий демон в жіночому образі. Вона опановує чоловіками проти їх волі. До речі, згідно одній з апокрифічних легенд, Ліліт під ім'ям Лілу (як у фільмі «П'ятий елемент») була дружиною Адама до створення Єви. Напевно, Вірт мав на увазі те, що його комп'ютер буде надзвичайно привабливий для чоловіків і викликає пекучу прихильність.

Комп'ютер «Ліліт» мав 64 кбайт оперативної пам'яті і процесор з частотою 7 МГц. 1980 року це було непогано. Все програмне забезпечення для даної машини, включаючи оригінальну операційну систему, Вірт — при підтримці колег — написав мовою «Модула-2», який сам і розробив незадовго до цього.

Modula-2

Свого часу Брайан Керниган, відомий популяризатор мови Сі, співавтор класичного керівництва з Сі (K&R), написав критичну статтю «Чому Паскаль не є моїм улюбленим мовою програмування». Якщо з нею уважно ознайомитися, то можна вирішити, що Ніклаус Вірт зробив з неї правильні висновки і в мові Modula-2 (1980) під впливом статті усунув багато вади канонічного Паскаля.

Однак слід мати на увазі одна важлива обставина. Наробила шуму робота Кернигана була написана 2 квітня 1981 року, тобто через два роки після реалізації групою Вірта в ETH першого компілятора Modula-2 і через рік після випуску апаратної реалізації Modula-2 – персонального комп'ютера Lilith. У квітні 1993 року на Конференції ACM з історії мов програмування Вірт у відповідь на запитання одного з своїх колег поставив мови Modula-2 оцінку «6 балів» (найвища оцінка в школах Швейцарії).

Мова Modula-2 був не тільки компактною і ефективною альтернативою мові Ada, він набагато випереджав ті реалізації ідей модульного програмування, які лише через роки і в набагато менш продумане вигляді знайшли своє відображення в Turbo Pascal і Delphi. Славнозвісна операційна система OS/400 для IBM AS/400 була реалізована на Modula-2. Центр системних досліджень корпорації Digital (DEC Systems Research Center) взяв цю мову в якості основи реалізації своїх внутрішніх проектів, створивши згодом мову Modula-3.

Комп'ютерна індустрія відставала від робіт Вірта як мінімум на 5-7 років. У тому ж 1979 році (коли з'явився перший компілятор Modula-2 на комп'ютер PDP-11 в середовищі RT-11) набагато поступався Lilith легендарний комп'ютер Apple II щойно знайшов компілятор Apple Pascal, орієнтований на UCSD-реалізацію Паскаля. До появи першого скромного Turbo Pascal Андерса Хейльсберга залишалося цілих чотири роки. Що стосується комп'ютера Lilith, то він став першим комп'ютером в Європі, який повноцінно використовував можливості лазерного друку. Згодом Вірт з сумом говорив про те, що з проектом Lilith швейцарська промисловість втратила свій унікальний шанс.

«Школа Вірта»

Олексій Недоря – кандидат фізико-математичних наук (1994) вважає себе послідовником Ніклауса Вірта:
«Школа Вірта» дарувала нам нові горизонти. Читаючи препринти Вірта, ми відкривали світ і відкривалися світу. Що набагато важливіше, у Вірта ми вчилися простоті і мистецтва боротьби зі складністю. Простий приклад. Перші компілятори з мови Модула-2 були двухпроходными, того вимагав мову. Так і наш перший крос-компілятор, зроблений Дмитром Кузнєцовим (Leo) на Burroughs 6700 під керівництвом В. В. Поттосина, був двухпроходным. Потім була історія «Кроноса». Коли у нас запрацював перший «Кронос», ми в терміновому порядку зробили компілятор з урізаною Модулы-2, щоб можна було вести розробку на самому «Кроносе».
image
Олексій Недоря, Ніклаус Вірт і Володимир Філіппов (зліва направо). Москва, Політехнічний музей, 2005 рік
Ми називали цю мову і компілятор Модула-0. Компілятор був однопроходным, для чого довелося внести зміни в мову. А потім прийшла пора робити повний компілятор Модулы-2, і ми у відповідності з описом мови почали робити його двухпроходным. Але тут прийшла звістка, що Вірт підкоригував мова (додав forward-опису процедур), і тепер можна робити однопрохідний компілятор.

У підсумку ми спростили собі життя і прискорили розробку. Головне було в тому, що мова програмування, який до того був «священною коровою», принесеної звідкись згори, став всього лише робочим інструментом, який можна підточити і підправити. Ми отримали урок: дозвіл творчості та розуміння важливості і корисності спрощень.


Ada

У другій половині 1970-х Вірт брав участь у конкурсі міністерства оборони США на розробку нової мови для програмування вбудованих систем, в результаті якого був створений мова Ada.

Міністерство поставило завдання розробити єдиний мову програмування для систем управління автоматизованими комплексами, що функціонують у реальному часі. Малися на увазі, насамперед, бортові системи управління військовими об'єктами. Мова названий на честь математика Ади Лавлейс.

Повторилася історія з Алголом-68 — проект групи, в якій працювали Вірт і Хоар, не був схвалений комітетом з мови. Чарльз Хоар і Ніклаус Вірт вибули з конкурсу після першого етапу. У конкурсі переміг проект, заснований на Паскалі, але набагато більш складний і об'ємний.

Хоар висловив своє співчуття тим, що «брязкальця і брязкальця взяли гору над фундаментальними вимогами надійності і безпеки» і застеріг від «армади ракет, летять не туди з-за не вчасно виявленої помилки в компіляторі Ada».

Ніклаус Вірт висловився стриманіше, але теж негативно. Він сказав: «Занадто багато всього вивалюється на програміста. Я не думаю, що, вивчивши третину Ada, можна нормально працювати. Якщо ви не освоїте всіх деталей мови, то надалі можете спіткнутися на них, і це призведе до неприємних наслідків».

Жан Ишбиа, керівник групи розробників Ada, висловивши свою «повагу і захоплення» Віртом, не погодився з ним, сказавши: «Вірт вірить в прості рішення складних проблем. Я не вірю в такі дива. Складні проблеми вимагають складних рішень».

Оберон

У 1988 році в співдружності з Юргом Гуткнехтом Вірт розробив мову програмування Оберон. Метою розробки було створення мови для реалізації системного проектованої нової робочої станції. Основою для Оберона стала Модула-2, яку істотно спростили, але при цьому доповнили новими можливостями.


Юрг Гуткнехт

Ніклаус Вірт з колегами розробили першу версію системи «Оберон», машину, компілятор мови Оберон і операційну систему System Oberon, яка володіла графічним інтерфейсом користувача, розширеними концепціями використання тексту в інтерфейсі і в цілому являла собою матеріальний доказ застосування концепцій Вірта.

Як вже писали на «Хабре», в Обероне модуль — це не тільки засіб структурування алгоритмів і структур даних, але й одиниця компіляції, завантаження і поширення. Тобто модуль є мінімальною сутністю, яку може скомпілювати компілятор. Залежно одного модуля від інших модулів обчислюються автоматично, але не призводять до включення коду одного модуля до іншого. Включаються тільки ідентифікатори імпортованих сутностей і хэшкод залежності, для контролю версії коду.
Модуль є одиницею завантаження, тобто, крім особливих випадків код модуля являє собою закінчену програму, в якій є точка входу, і який може виконуватися необмежено довго. Тобто, повноцінна програма. Навіть ядро ОС це всього лише перший завантажений в пам'ять модуль. Так само модуль припускає, що його будуть розповсюджувати не тільки у вигляді оригіналу, але і у вигляді бінарника, а так само у вигляді інтерфейсної частини, і для його запуску потрібна лише певна платформа або декілька платформ. В цілому, ці поняття входять у концепцію модульності в Обероне і становлять собою модульно-орієнтоване програмування.
У 1992 році Вірт і Мессенбек випустили повідомлення про нову мову програмування — Оберон-2, — мінімально розширеної версії Оберона. У цьому ж році була утворена дочірня компанія ETH — Oberon microsystems, яка зайнялася розробкою систем Оберон. Вірт став одним із членів її ради директорів. В 1999 році ця компанія випустила наступну версію Оберона — Компонентний Паскаль, більш пристосовану для компонентного програмування.

Оберон послужив прямим предком для мови паралельного програмування (Active Oberon), різних модифікацій мови Оберон під інші середовища виконання (Component Pascal, Zonnon), був реалізований на декількох платформах (JVM, CLR, JS), послужив прообразом мови Java. Сама система Оберон послужила прообразом для проекту Microsoft Singularity.

imageневідомо, поява віртуальної (абстрактної) машини Java підносили її розробниками з Sun Labs чи не фундаментальне відкриття в практиці мов програмування.

Один з учнів Вірта, Міхаель Франц, зауважив з цього приводу наступне: «Переносимість Java заснована на наявності віртуальної машини, що дозволяє легко імітувати велике число архітектур. Ідея віртуальної машини була дуже популярна вже більше двадцяти років тому, хоча згодом про неї забули. Тоді мова йшла про Pascal-P – створеної в ETH реалізації Паскаля, яка зіграла вирішальну роль у поширенні цієї мови. Цікаво, що віртуальні машини Паскаля і Java дуже схожі по архітектурі».

На порозі 2000-х

«А тепер обговоримо характеристики «найсучаснішого, самого об'єктно-орієнтованого і дуже простої» мови Java», писав Сергій Свердлов.
Java не тільки не може вважатися простим, але є одним з найскладніших мов, більш складним, ніж Сі++, і вдвічі більше складним, ніж Оберон.

Але може бути, зіставлення з тим же Обероном некоректно? Адже, напевно, Java все ж багатша мова, ніж цей ваш Оберон? Нічого подібного! В Java є всього дві суттєві речі, яких немає в Обероне: вбудована багатопоточність і обробка виключень. Доцільність включення засобів паралельного програмування безпосередньо в мову піддається сумніву багатьма фахівцями. Це могло б вирішуватися на рівні бібліотек. До того ж той механізм, який реалізований в Java, — рішення аж ніяк не саме вдале.
image
Порівняння обсягу синтаксису мов

Загальна кількість лексем в описі синтаксису мови може служити узагальненою характеристикою розміру цього опису.

Зате в маленькому Обероне є і повноцінні записи (об'єкти), і нормальні багатовимірні масиви, а не лише покажчики на них. Маються на Обероне і звичні рядки з нулем на кінці, які є просто масивами символів, а ніякими не об'єктами, а значить, не вимагають спеціальних засобів для маніпуляцій.
Всупереч пропаганді Java містить мало чогось дійсно нового. Та ж концепція віртуальної машини — перше, що приходить в голову, якщо задуматися про многоплатформности. Років двадцять п'ять тому це було вдалим і свіжим рішенням.
Таку думку було висловлено більше 15 років тому, коли подібні суперечки були актуальні. Питання про те, наскільки тепер Java став краще або гірше в цьому плані, залишимо відкритим.

Педагогічна і громадська діяльність

З 1963 по 1967 роках Вірт працював доцентом (assistant professor) у Стенфордському університеті і в 1967 році повернувся в цьому званні в університеті Цюріха. А в 1968 році він отримав в ETH звання професора комп'ютерних наук і почав зводити на батьківщині свій «швейцарський» Стенфорд.

Двадцятиріччя з 1969 по 1989 рік був, мабуть, найбільш плідним періодом у житті Вірта. Він продовжував будувати свою школу, приділяючи чимало часу організаційної діяльності.


Джерело: oberon2005.oberoncore.ru

З 1982 по 1984 рік (а потім і з 1988 по 1990 рік) Вірт очолював в ETH факультет комп'ютерних наук, а з 1990 року керував Інститутом комп'ютерних систем (Institute of Computer Systems) при ETH.

На пенсію професор Вірт пішов 1 квітня 1999 року по досягненні 65-річного віку.


Джерело: oberon2005.oberoncore.ru

У 2001 році Ніклаус Вірт написав привітання російським студентам і викладачам у зв'язку з введенням курсів з вивчення «Оберона» в МДУ: «Щиро сподіваюся, що «Оберон» допоможе в навчанні висококласних програмістів і науковців в Росії і що його оцінять в країні, де завжди надавали велике значення ґрунтовному освіти».

Життєве кредо

Життєве кредо Ніклауса Вірта, пише Руслан Богатирьов, найкраще передають слова великого Блеза Паскаля: «Все наше гідність укладено в думки. Не простір і час, яких ми не можемо заповнити, підносять нас, а саме вона, наша думка. Будемо ж добре вчитися мислити».

p.s. А тепер читачам пропонується оцінити масштаб особистості за списком основних проектів Ніклауса Вірта:


Джерело: oberon2005.oberoncore.ru
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.