среда, сентября 21, 2005

Сегодня видела Никлауса Вирта

Побывала сегодня на широко разрекламированной лекции профессора Никлауса Вирта (Niklaus Wirth) "История и перспективы языка Оберон" в Политехническом музее (да, это тот самый Вирт, который придумал Паскаль). Не то чтобы я была большой поклонницей Оберона, но Вирт к нам не часто приезжает, такое событие пропускать нельзя.
Начал он разговор с Модулы-2, потом плавно перешел на Оберон. Я не буду подробно пересказывать, что он рассказывал об этих языках. Информацию о них можно найти по ссылкам с сайта www.oberon2005.ru.


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

Вирт несколько раз повторил фразу, что задача преподавателей учить системному мышлению ("Teach clear systematic thinking").
"При обучении язык должен быть на втором плане. Не надо учить на C++."

"Индустрия влияет на программирование. Раньше цена ошибки была велика. А теперь, если что-то не работает, можно поменять. Раз поменял, не работает? Опять поменял. Это грустно."

"Современный программист как бы смотрит через библиотеки. Просто ищет нужную процедуру. Я бы никогда так не учил."

"Я слышал, что Sun купила Оберон. Значит ли это что для создания компилятора Оберона надо покупать лицензию?
Sun не покупала Оберон. Она купила исходники компилятора Оберон. Кстати, очень за дешево. А через 7 лет они выпустили Java, используя идеи Оберона в слегка извращенном виде.
Не нужно лицензии. Мы вообще поклонники open source."

"Что вы думаете о динамических языках?
Типизация должна быть статической. Динамическая медленнее. Ошибки в типизации должны быть пойманы на этапе компиляции."

"Вы рассказываете, что Оберон такой хороший, компактный. Почему бОльшая часть программ написана не на нем?
Я не знаю. Сила привычки. Например, если в компании работает 20 сотрудников и они знают Фортран, они будут писать на Фортране. C получил широкое распространение, потому что UNIX стал популярен. И за C, за PL/1 стоят большие организации с хорошими отделами продаж.
А вообще, я переадресую этот вопрос вам."

Много было просьб высказать отношение к какому-либо языку или технологии.

"Ваше мнение о языке C#.
C# - это реакция Микрософта на Java. Если вы хотите услышать что-либо позитивное, пожалуйста: C# гораздо лучше чем C++."

"Как вы относитесь к UML?
Я не поклонник UML. Эти графики годятся только для выражения небольших идей."

"Smalltalk годится чтобы учить возить черепашку по экрану. В остальном бесполезен."

"Ваше мнение по поводу логического программирования, Пролога.
Пролог - это прекрасная академическая забава."

"Что вы думаете об Object Pascal, о Delphi? Вы принимали участие в этой разработке?
Delphi - это Паскаль с пользовательским интерфейсом. Ничего фундаментально нового. Я никак не участвовал в этом."

"Ада слишком тяжела для преподавания. Но лучше чем C. В 77 году я был приглашен для консультаций по поводу Ады. Она слишком сложная, мы тогда предложили кое-что устранить, но это не было сделано. Военные хотели сложную систему."

Там был переводчик, который пытался переводить то, что говорил Вирт. Я понимаю, что синхронный перевод - это очень и очень непростая задача и переводчик имеет право на ошибку, но все равно, это было ужасно. Переводчик безусловно знал английский, но на этом все. Он постоянно перебивал Вирта, пытался говорить с ним одновременно, поэтому что именно произносит Вирт было не всегда слышно. При этом переводчик явно не понимал о чем вообще идет речь. Англоязычные термины, конечно, не всегда просто перевести на русский. Но это было слишком:
typing system - система печатания
tree structure - три структуры
variable - вариативный
programming language - программирующий язык
После этих и подобных "переводов" в зале раздавался радостный смех, что каждый раз несколько озадачивало Вирта, он явно не понимал, чему народ так радуется. Когда же Вирт говорил о чем-то простом и понятном, переводчик радостно добавлял туда отсебятину. Неудивительно, что последний вопрос из зала был встречен бурными аплодисментами.

"Как вы относитесь к созданию переводчика, который полностью заменит человека? Компьютера, который полностью заменит человека?
Совсем полностью заменит? Мне бы она не понравилась."

Как вы, наверное, заметили, Вирт несколько недолюбливает C и C++, противопоставляет им Оберон. Он создавал очень небольшой, строгий, не громоздкий язык, спецификация Оберона занимает всегдо 16 страниц, что гораздо меньше, чем спецификация C++, и Вирт этим гордится. Вообще поклонники Оберона очень часто противопоставляют Оберон и C++ [Oberon против С++, pdf]. И ставят такие акценты: возможно приведение типов - значит считай, что нет типизации. Можно объявить friend функции - значит считай, что нет инкапсуляции. И т.п. Имхо, неправильно это. Да я теоретически могу использовать приведение типов, но это не значит, что я это делаю постоянно. C++ предоставляет программисту свободу, за что я и люблю этот язык, но этой свободой надо пользоваться аккуратно.

Ссылки, рекомендованные Виртом:
www.Oberon.ethz.ch
www.Oberon.ethz.ch/WirthPubl
www.Oberon.ethz.ch/books.html

Еще мнения об этом событии:
Flying in a blue dream - несмотря на название, все на русском.
Wirth - тоже на русском

Technorati tag:

14 коммент.:

Marduk комментирует...

Спасибо за статью, да еще с такой оперативностью, - меня очень интересовало это событие. Три ссылки в конце можно подправить...

Alena комментирует...

>Спасибо за статью, да еще с такой оперативностью, - меня очень интересовало это событие.

:-)

>Три ссылки в конце можно подправить...

Угу, спасибо, поправила.
Также исправила несколько опечаток и одну ошибку: в ответе на последний вопрос "Мне бы она понравилась" на "Мне бы она не понравилась".
Добавила ссылки на записи других блоггеров, побывавших на этой лекции.

Анонимный комментирует...

Ничего себе у вас события!
Спасибо за статью.

> "Мы вообще поклонники open source."
А кто такие "мы"? Или это перевод не правильный?

Alena комментирует...

>Ничего себе у вас события!
Кстати, выступление Вирта в Москве - это только одно из выступлений в рамках его большого турне по России. От нас он поехал в Нижний Новгород.

>А кто такие "мы"? Или это перевод не правильный?
Вирт не один работает над Обероном, у него есть коллеги, ученики... На этой лекции кроме Вирта был Юрг Гуткнехт, были какие-то российские оберонщики, довольно много.

Marduk комментирует...

divan, в одной Москве перед этим было и другое событие - конференция по IT-образованию МГУ. Наверное, не столь интересно, но все же. Эх, может и к нам заедет как-нибудь :)

Анонимный комментирует...

Эстафета от Москвы принята Нижним Новгородом. Ждём теперь откликов из Екатеринбурга ;))

Marduk комментирует...

Добралась до Cети и статья А.Зубинского о лекции Вирта: http://itc.ua/article.phtml?ID=22221

Alena комментирует...

>Добралась до Cети и статья А.Зубинского о лекции Вирта
Несколько нудновато, имхо. Про нечеткие множества мне больше понравилось.

Анонимный комментирует...

как сказал Старуструп
"Профессор известен нелюбовью к языкам, созданным не им" ;-)

Анонимный комментирует...

По поводу нарушения инкапсуляции с помощью friend'ов. ИМХО, здесь сторонники Вирта совершенно не правы. Как не пародоксально, друзья не нарушают инкапсуляцию, а способствуют ей. Иногда лучше оставить маленькую дырочку, там где это необходимо, чем наглухо отгараживаться стеной. Memento, один из моих самых любимых паттернов проектирования, призванный сохранять состояние объекта не нарушая инкапсуляцию, как раз работает за счёт друзей.

Анонимный комментирует...

Мне кажется, что у Темпла речь шла не о нарушении границ класса нахальными "друзьями".
Ведь в самом Обероне нет классов (в том смысле, что там тип вообще не является единицей инкапсуляции), поэтому вряд ли оберонщик стал бы сильно критиковать Си++ную "дружбу" саму по себе.
Скорее, Темпл критикует отсутствие в Си++ аналога обероновских модулей, полагая Си++ное решение (классы, друзья и пространства имен) одновременно недостаточным и запутанным.
Можно представить, как отсутствие модулей должно не нравиться оберонщику, ведь в Обероне модуль - "наше всё" (единица инкапсуляции, компиляции и загрузки, отдельное пространство имен и т.д.).
Другая, более очевидная претензия оберонщиков к Си++ - его "ненадежность" (небезопасность по типам, неограниченное использование указателей и адресная арифметика).
В отношении же полезности использования в Си++ "друзей" (для реализации паттернов без нарушения инкапсуляции) Вы совершенно правы, как мне кажется.
В Обероне вопрос об инкапсуляции механизма взаимодействия нескольких базовых классов (паттерна) решили бы несколько иначе - просто определили бы их в одном модуле.

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

Анонимный комментирует...

Возможно, лучше это изложено в популярной статье Р.Богатырева о модульном программировании:

http://www.oberon2005.ru/qa191005.html

Анонимный комментирует...

"SmallTalk годится чтобы учить возить черепашку по экрану. В остальном бесполезен." - Смолток пишется с маленькой буквой t.

http://en.wikipedia.org/wiki/Smalltalk

http://squeak.org/

Alena комментирует...

2Анонимный:

"SmallTalk годится чтобы учить возить черепашку по экрану. В остальном бесполезен." - Смолток пишется с маленькой буквой t.

Поправила, спасибо.