Ніклаус Вірт

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
Ніклаус Вірт (15.02.1934)

Закон Вірта

"Програми стають повільними швидше, ніж комп'ютери стають швидшими"

Це напівжартівливий вираз, який популяризував Н.Вірт.

Мається на увазі, що збільшення продуктивності роботи апаратної частини, не означає збільшення швидкодії програм.

Біографія

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

У 1954 р. Вірт вступив на факультет електроніки в цюрихський ЕТН (Швейцарський Федеральний Технологічний Інститут). Після чотирьох років навчання, отримав ступінь бакалавра в області електротехніки.

Своє навчання Вірт продовжив у Лавальскому Університеті (місто Квебек, Канада), де у 1960 р. отримав ступінь магістра.

Найвідомішим досягненням професора Вірта вважається мова Паскаль (1970).

У 1984 р. став лауреатом "Премії Тюринга" (присуджується асоціацією АСМ, вручається один раз у житті і прирівнюється в комп'ютерних науках до Нобелівської)

Вклад Вірта у розвиток комп'ютерних наук можна виразити за допомогою афоризма Альберта Ейнштейна, котрий Вірт розмістив на початку опису мови Оберон(розробник Н.Вірт): «Make it as simple as possible, but not simpler» («Роби все максимально просто, а не лише спрощуй»).

Мови програмування

Algol-W

У 1963 р. Вірта запросили до Комітету стандартизації Алгола IFIP(Міжнародна федерація інформатики), котрий розробляв новий стандарт мови Алгол, згодом ним стала мова Алгол-68.

Разом з Чарльзом Хоаром Вірт відстоював у комітеті напрям на розробку помірно модифікованої версії Алголу, вільної від недоліків вихідної мови і доповненої мінімум необхідних засобів.

Вірт і Хоар представили комітету мову Algol-W(W від Wirth), яка була саме такою модифікацією Алголу, але не зустріли підтримки.

Після закінчення роботи комітету у 1968 р. Вірт критикував Алгол-68, кажучи про те, що він недостатньо надійний і надлишковий.

Pascal
Hello World на мові Pascal

Наприкінці 60-х рр. було висунуто декілька пропозицій щодо еволюційного розвитку Алгола. Найуспішнішим виявився Паскаль, створений у 1970 р. Разом з очищенням мови від деяких непрозорих засобів Алголу, в Паскалі була додана можливість об'явлення нових структур даних, побудованих із вже існуючих, більш простих. Паскаль також підтримував динамічні структури даних, тобто такі, які можуть зростати або зменшуватись під час виконання програми.

Мова Паскаль вимагає від програміста опису всіх змінних у спеціальному розділі на початку програми. Існування такого розділу обмежує свободу програміста, але водночас Паскаль вимагає строгого стилю програмування, що сприяє зменшенню кількості помилок. Як і будь-який наступник, Паскаль має багато схожих рис із попередником; наприклад, Паскаль, як і Алгол-60, передбачає блочну структуру програм (операторні дужки).

Структура програми на Паскалі дозволяє навіть спеціалісту, який не є автором програми, знаходити і виправляти зроблені помилки під час розробки. Саме тому вважається, що Паскаль один із кращих мов для ознайомлення і вивчення програмування.(Це була одна із цілей Вірта, під час створення Паскаля)

Успіх Паскаля перевершив очікування. Можливо, головною причиною такої популярності мови було те, що він сприяв розвитку напряму за "структурне програмування"

Паскаль сильно вплинув на дизайн та еволюцію багатьох інших мов, від Ади до Visual Basic.

Сильним імпульсом для розповсюдження Паскаля стало створення компілятора, який створював простий проміжний код для віртуальної машини(Р-код), а не для конкретного процесора. Це значно спростило перенос Паскаля на інші процесорні архітектури, так як для цього потрібно було лише написати інтерпретатор для Р-коду, а не для всього нового компілятора.

Зараз ідею Р-коду можна побачити у коді мови Java корпорації Sun і у аналогічному проекті .NET корпорації Microsoft.

Modula-2
Hello World на мові Modula-2

У середині 70-х рр., Вірт розпочав проект по створенню нового комп'ютера класу робоча станція(проект Lilith). Комп'ютер повинен був програмуватися на мові високого рівня і забезпечити прямий доступ до апаратного рівня. Також, мав підтримувати колективне програмування і сучасні принципи розробки програмного забезпечення, такі як абстрактні типи даних.

Ці вимоги були реалізовані у 1979 р. у мові Модула-2(Modula 2, від MODUlar LAnguage — модульна мова). Модула-2 зберегла добре зарекомендовані засоби середи Паскаля і додала систему модулів.

Успіх Модули-2 був найбільш вагомим у задачах із високими вимогами надійності, таких як системи управлінням руху.

Як і більшість інших мов програмування, Модула піддалась еволюції, під час якої її початкову назву переробили у Модула-2.

Розвитком стала мова Модула-3, розроблена фірмами DEC i Olivetti

Oberon

Проект Оберон розпочався у 1985 р. в ЕТН Віртом і його колегою Юргом Гуткнехтом. Це була спроба виділити найсутевіще із системи Cedar у вигляді універсальної, але все ж осяжноъ операційної системи для робочих станцій. Система яка отрималась, здавалась дуже маленькою і ефективною, чудово працювала в операційній пам'яті розміром всього 2 МВ і вимагала при цьому лише 10 МВ простору на диску.Важливою причиною маленького розміру системи Оберон був її компонентний дизайн: замість інтеграції усіх бажаних засобів у один монолітний програмний колос, програмні компоненти(модулі), які використовувались рідше, реалізовувались як розширення ядра системи. Такі компоненти завантажувались, тільки тоді, коли вони були дійсно необхідні, і вони могли спільно використовуватись усіма додатками.

Вірт зрозумів, що компонентно-орієнтоване програмування вимагає деяких засобів об'єктно-орієнтованого програмування, таких як ховання інформації, пізніше зв'язування і поліморфізм. Ховання інформації було сильною рисою Модули-2. Пізніше зв'язування підтримувалось у Модулі-2 за рахунок процедурних змінних. Але там не було поліморфізму.

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

Системний сервіс, який виконує таку автоматичну утилізацію пам'яті, називається "збирач сміття". Збирання сміття запобігає двом із списку найбільш важно знаходжуванних і небезпечних помилок у програмах: витоку пам'яті(коли не використовувана пам'ять не звільнюється) і повислі покажчики (передчасне звільнення пам'яті).

Хоча алголоподібні мови завжди мали високу репутацію по відношенню безпеки, введення повного захисту типів (збирач сміття) було квантовим стрибком. Саме з цієї причини повна сумісність з Модулою-2 виявилась неможливою. Отримана модифікація Модули-2 була названа, як і вся система - Оберон.

Система модулів у Обероні, як і в Модулі-2, забезпечувала ховання інформації для цілих сімейств типів, а не тільки для окремих об'єктів. Це дозволило визначати і гарантувати інваріанти для кількох взаємодійних об'єктів. Інакше кажучи, розробники отримали можливість розробляти механізми захисту більш високого рівня, відштовхуючись від базових засобів захисту на рівні модулів і захисту по типам, забезпеченої хорошою реалізацією Оберона.

Остання вимога компонентно-орієнтованого програмування - можливість динамічно завантажувати нові компоненти. В Обероні одиниця завантаження така ж сама, що і одиниця компіляції - модуль.

Проекти

РікПроектКоментар
1963Мова EulerДисертація Вірта, діалект Алгола, реалізація прообразу Р-коду
1966Мова Algol-WРевізія мови Algol-60; реалізован у Стенфорді на ІВМ/360
1970Система VenusОпераційна система розділу часу для CDC Cyber
1970Мова ПаскальКонцепції структурного програмування
1973Система Pascal-PІнструментальна система, віртуальна машина, переносний Р-код
1976Мова ModulaРеалізації концепції моніторів Хоара, мультипрограмування
1976Система HexapusПрограмне забезпечення для локальної мережі в ЕТН
1979Мова Modula-2Концепція модуля, переносний М-код, ідеї мови Mesa(Xerox PARC)
1980Комп'ютер Lilith16-розрядна апаратна підтримка мови Modula-2
1986-90Комп'ютер Ceres32-розрядна апаратна підтримка мови Oberon(станції Ceres-1, Ceres-2, Ceres-3)
1988Мова OberonКонцепція розширення типу, альтернатива ООП, ідея мови Cedar(Xerox PARC). Мова названа на честь супутника Урана, котрий був відкритий апаратом "Вояджер"
1988Система Oberon SystemКонцепція активного документа, прообраз браузера(з Ю.Гуткнехтом)
1995Мова Oberon-2Типизовані процедури-методи(з Х.Мессенбоком)
1996Мова LolaМова для специфікації програмних пристроїв(FPGA)
1998Система OlgaСистема управління бортовим ПЗ для гелікоптера, апаратне забезпечення на основі StrongARM, FPGA i PLD. Використовується у легких безпілотних літаючих апаратах фірми weControl
1998Мова Oberon-SAПідмножина мови Oberon для програмування систем реального часу і з орієнтацією на процесор StrongARM

Посилання

  1. Summary of projects by N. Wirth, 1962 - 1999
  2. Никлаус Вирт: 80-летие классика программирования
  3. Никлаус Вирт — патриарх надежного программирования
  4. Никлаус Вирт: путь к истине
  5. Никлаус Вирт (Niklaus Wirth)
  6. Никлаус Вирт и языки
  7. Краткая история Паскаля
  8. Персональний сайт Ніклауса Вірта
  9. Презентація до статті