(весь нижеследующий текст будет понятен только программистам и интересующимся)
Итак, если кто не знает, сегодня утром в лектории политехнического музея была лекция "History and perspectives of Oberon language". Читал её Никлаус Вирт самолично.
Не буду здесь выкладывать конспект лекции (кому надо — найдут), расскажу лучше о впечатлениях.
Организация была "на высоте", как и всегда. Российские традиции блюлись со всей строгостью: толпа из примерно пятисот вполне приличных людей — студенты, программисты, институтские преподаватели — честно стояла в очереди за пригласительными, выдававшиеся двумя девушками, неспешно водившими пальчиком по спискам. Ровно половину аудитории (естественно, лучшую) отгородили "для вип-персон". Таковых оказалось десяток или два — однако всех остальных на эти ряды не пускали ещё долго. Перед лекцией какая-то тётка долго и упоно рассказывала, в каких славных стенах проходит действо. А переводчик, который переводил лекцию — это вообще отдельная песня. Но про это — потом.
С горем пополам лекция началась. Собственно, для читавшего флеймы типа "Оберон vs все-все-все" или "синтаксический оверхед", ничего особо нового сказано не было. В основном Вирт рассказывал про историю создания языка, от Паскаля через Модулу до Оберона: про то, что было добавлено, но в основном — про то, что было выкинуто. Не забыл похвастаться пресловутыми шестнадцатью страницами, на которых умещается спецификация языка. Поскольку всё это переводилось на русский, причём медленно и криво, слушать было довольно скучно.
Гораздо интереснее были ответы на вопросы из зала. Очень чётко прорисовались все те идеи, которые сейчас активно продвигают оберономаны: это-таки идеи Вирта, а не кого-то ещё. Если вкратце, то:
1) Хороший язык — это простой язык. Жёстки, чёткий, логичный, с максимально строгой типизацией.
2) Оберон является таким языком. На обероне можно писать всё что угодно, а ещё лучше — всё сразу. Пресловутая Lilith тому примером.
3) Оберон не является промышленным стандартом потому, что ему не учат в университетах. А в университетах не учат оберон, потому что он не является промышленным стандартом. Порочный круг.
4) С/С++ и другие языки, которые сейчас этими стандартами являются, стали таковыми в основном благодаря маркетингу и громадной финансовой мощи тех, кто их продвигал.
5) Open source — это классно.
6) Java и C# позаимствовали из Оберона кой-какие идеи, но они были извращены синтаксисом С (так и сказал — corrupted with C syntax) и потому плохи. Но явно лучше, чем С и С++.
Сам Вирт как человек — очень симпатичен. Классический старенький профессор с седой головой, спокойным и приятным (хотя немного дрожащим) голосом, ясным умом, чистой и аккуратной речью и иногда просыпающимся чувством юмора. Английский у него IMHO очень неплохой, хотя говорил он довольно просто — лично я понимал его речь без проблем — но акцент очень сильный и довольно чудной. Наверное, учиься у него было бы классно.
Но, к сожалению, лекция была ОЧЕНЬ сильно испорчена переводом. Переводил какой-то придурковатый растрёпанный хамоватй мужичок, видимо — штатный переводчик политехнического. Мало того, что он не знал терминов и нёс всякую чушь (tree structures — три-структуры, open source — открытые источники, concurrency — то совместимость, то конкуренция, hard drive — твёрдый диск, 7-pass compiler — семиразрядный компилятор, compilation — исчисление и пр.), так он ещё и обычные фразы переводил совершенно похабно. Похабно не по смыслу, а по тону и подбору слов. Если Вирт говорил в стиле университетской лекции, то переводчик — не то в стиле журнала "Хакер", не то в стиле мартышки из зоопарка. Интересно, Вирт понял, что часто возникавший сдавленный ржач в зале относился не к нему, а к очередным "большим массивам программирования"?
В общем, самые шумные аплодисменты сорвал последний вопрос: "Профессор, а как вы думаете, появятся ли автоматические переводчики, способные полностью заменить человека?.."
Профессор ответил на вторую часть вопроса, потонувшую в гоготе: "И, если говорить шире, появятся ли машины, способные полностью заменить человека?" Ответ был — "Completely? Well, I think I wouldn't like her." Молодец деда
---
Перечитал написанное, и понял, что ничего не сказал о самом главном:
Я очень доволен тем, что сходил туда. Вирта интересно слушать. Он интересно говорит, интересно и по делу отвечает на вопросы. Послушав его — не лекцию, а вообще — понимаешь, почему этот дедушка так уважаем. Есть за что.
Кстати, теперь у меня на последней страничке зачёки примостился скромный и аккуратный "зачёт" от профессора Вирта. Ещё один повод "потерять" её перед выдачей диплома
Здравствуйте, BreQwaS, Вы писали:
BQS>Кстати, теперь у меня на последней страничке зачёки примостился скромный и аккуратный "зачёт" от профессора Вирта. Ещё один повод "потерять" её перед выдачей диплома [/q]
С точки зрения информативности лекция была никакая. Неправильный перевод довершал картину.
Очень хотелось узнать о преимуществах языка Оберон перед другими, но увы, все сказанное относилось к истории его создания, а не к текущему состоянию. Про будущее этого языка тоже ничего сказано не было, как и о положительных/отрицательных сторонах. Вирт явно не хотел сталкивать лбами свой красивый Оберон и коммерческие поделки C++, Java и C#
Здравствуйте, BreQwaS, Вы писали:
BQS>1) Хороший язык — это простой язык.
Сомнительно. Ох, как сомнительно.
BQS>2) Оберон является таким языком. На обероне можно писать всё что угодно, а ещё лучше — всё сразу. Пресловутая Lilith тому примером.
ну естественно
BQS>3) Оберон не является промышленным стандартом потому, что ему не учат в университетах. А в университетах не учат оберон, потому что он не является промышленным стандартом. Порочный круг.
BQS>4) С/С++ и другие языки, которые сейчас этими стандартами являются, стали таковыми в основном благодаря маркетингу и громадной финансовой мощи тех, кто их продвигал.
насколько я помню, первые реализации C были практически наколенной поделкой, и только потом он получил поддержку
BQS>6) Java и C# позаимствовали из Оберона кой-какие идеи, но они были извращены синтаксисом С (так и сказал — corrupted with C syntax) и потому плохи. Но явно лучше, чем С и С++.
ИМХО, куда-то не в ту сторону Вирт идет
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[2]: Лекция Вирта в политехническом - впечатления
Здравствуйте, henson, Вы писали:
H>Вирт явно не хотел сталкивать лбами свой красивый Оберон и коммерческие поделки C++, Java и C#
Я честно попытался спровоцировать его на это вопросом "почему при наличии такого хорошего оберона программы пишутся не на нём". Помните, что он ответил?
Здравствуйте, Дарней, Вы писали:
BQS>>4) С/С++ и другие языки, которые сейчас этими стандартами являются, стали таковыми в основном благодаря маркетингу и громадной финансовой мощи тех, кто их продвигал.
Д>насколько я помню, первые реализации C были практически наколенной поделкой, и только потом он получил поддержку
Имхо, с C++ тоже самое.
А уж про всякие Perl-ы с Python-ами, и Ruby с Tcl/Tk так и говорить не приходится -- только силами энтузиастов. И на них сейчас пишут больше, чем на Oberon.
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, BreQwaS, Вы писали:
BQS>Кросспост отсюда.
BQS>[q]Flying in a blue dream
BQS>(весь нижеследующий текст будет понятен только программистам и интересующимся)
Господа, Я просто "страшно" расстроен . Такую лекцию пропустил ... Эх ...
(если туп как дерево — родишься баобабом ... (с))
Подскажите, плз., те, кто был на лекции. Задавали ли Вирту вопросы относительно
функционального программирования?
Очень интересно мнение такого известного и уважаемого дяденьки!
Re[2]: Лекция Вирта в политехническом - впечатления
G>Подскажите, плз., те, кто был на лекции. Задавали ли Вирту вопросы относительно G>функционального программирования? G>Очень интересно мнение такого известного и уважаемого дяденьки!
Задавали, про пролог. Ответ был примерно такой:
В прологе вы не указываете, как искать решение, а описываете некие предикаты, которым должно соответствовать решение, а всё остальное за вас сделает некий wizard. Но при этом вы можете давать визарду какие-то подсказки насчёт того, как искать решение — но разве это не то, от чего предполагалось избавиться? Если честно, то пролог — это интересная академическая игра, но она не имеет отношения к реальной жизни.
Кто-то рядом добавил: Компилятор пролога можно написать на обероне, но компилятор оберона нельзя написать на прологе. Профессор согласно закивал.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Дарней, Вы писали:
BQS>>>4) С/С++ и другие языки, которые сейчас этими стандартами являются, стали таковыми в основном благодаря маркетингу и громадной финансовой мощи тех, кто их продвигал.
Д>>насколько я помню, первые реализации C были практически наколенной поделкой, и только потом он получил поддержку
E>Имхо, с C++ тоже самое. E>А уж про всякие Perl-ы с Python-ами, и Ruby с Tcl/Tk так и говорить не приходится -- только силами энтузиастов. И на них сейчас пишут больше, чем на Oberon.
Беда Вирта и подобных ему людей в том, что они искренне считают, что то, что им кажется логичным и правильным — лучше и по их мнению именно оно должно развиваться. Ну а жизнь проще и вместе с тем богаче. И народу было положить на "красоту" паскаля с обероном, где надо было писать begin...end вместо {...}. И те, кто помнят или видел набор текста на чудных зелёненьких терминалах IBM/VAX/ЕС-ЭВМ — хорошо поймут почему. В действительности если присмотреться, то сегодняшнее положение дел, когда всё равно, что писать (begin...end или {...}) — так как вставку автоматически обеспечивает среда разработки (а так же рефакторинг, автодокументирование, подсчёт статистики и многое другое) — это следствие многих десятилетий работы и развития наколеночных технологий, решения практических задач и успехов добытых как отдельными интузиастами, так и крупными компаниями.
А если посмотреть чуть шире (в то в философском смысле) оказывается, что наколеночные технологии (C, C++, Java, C#, Perl, Ruby, Tcl/Tk, ...) в целом гораздо успешнее, чем наработки теоретические (ADA, Pascal, Oberon...). По моему это получается в следствие учёта реальных потребностей тех, кому технология нужна и для кого она предназначени, а так же обратной связи от них. В случае же теоретических разработок если потребности чьи-то и учитываются, то только не тех, кому с технологией работать.
Re[2]: Лекция Вирта в политехническом - впечатления
G>Подскажите, плз., те, кто был на лекции. Задавали ли Вирту вопросы относительно G>функционального программирования?
На лекции, которая была 19 сентября, Вирт в своем докладе затронул тему функционального программирования. Его мысли по этому поводу:
1. Реальные программы на ФЯ за редкими исключениями не пишут, т.е. ФЯ скорее чисто академическая вещь.
2. Одна из основных идей ФЯ, сказал Вирт, состоит в том,что программа не пользуется переменными в обычном понимании, и поэтому функции получаются stateless, что круто для анализа и оптимизации, предоставляет дополнительную гибкость в использовании, т.к. нет побочного эффекта. Но! Поскольку state есть основополагающая вещь для существующих компьютеров, та же ячейка памяти хранит состояние, то специально уходить от этого, "обманывая природу" стоит слишком много усилий. Более того, ряд приложений все-таки требуют сохранения состояния / хранение контекста, поэтому почти во все ФЯ введена возможность пользоваться аналогом обычных переменных, доступ к которым идет через специальные языковые/библиотечные средства. А это не спортивно, заметил Вирт.
Re[4]: Лекция Вирта в политехническом - впечатления
Здравствуйте, AndreyFedotov, Вы писали:
AF> А если посмотреть чуть шире (в то в философском смысле) оказывается, что наколеночные технологии (C, C++, Java, C#, Perl, Ruby, Tcl/Tk, ...) в целом гораздо успешнее, чем наработки теоретические (ADA, Pascal, Oberon...). По моему это получается в следствие учёта реальных потребностей тех, кому технология нужна и для кого она предназначени, а так же обратной связи от них. В случае же теоретических разработок если потребности чьи-то и учитываются, то только не тех, кому с технологией работать.
Мне вот тоже интересно, почему весьма неглупый дедушка Вирт удивляется, что лаконичный и строгий Oberon не пользуется популярностью. И главную причину видит в мощном маркетинге тяжелых конкурентов. Я же вижу аналогию с естественными языками. Например, великий и богатый русский язык. Его овладение весьма тяжело и для носителей языка (я, например, был по русскому языку двоечником в школе), не говоря уж про иностранцев. Его мощь поражает. Говорят, что у Толстова на странице текста можно не найти повторения ни одного слова. В то же время можно совершенно понятно передавать свои впечатления с помошью трех-четырех матерных слов и нескольких предлогов. Но, имхо, гораздо проще и приятнее читать нормальный художественный текст, не замусоренных повторами, односложными предложениями, сокращенниями и прочим. Только вот чтобы научиться так писать нужно не мало труда приложить.
Вернемся к языкам программирования. При знакомстве с Perl и Ruby меня, например, неприятно поразила возможность писать if и while после действий. Т.е. вместо "нормального":
if( something )
do_that()
можно написать:
do_that() if( something )
Поскольку я начинал учится программировать на Паскале, работая затем на C++, то я считал, что все это извращения, которые только ухудшают читабельность программы. Но, попрограммировав на Ruby я пришел к удивительному для себя открытию -- это удобно! Если не терять чувства меры, то такой подход не только сохраняет читабельность, но и упрощает написание кода. И ведь такая возможность в Perl и Ruby появилась не просто так -- она была добавлена туда по реальной необходимости.
Вот мне и кажется, что строгие, лаконичные языки пытаются заставить говорить только "Ручка лежит на столе". В то время как может потребоваться сказать "На столе лежит ручка". Или даже "Лежит ручка на столе". А т.к. программа -- это все таки текст, который должен быть в большей степени ориентирован на удобное восприятие программистом, а не компилятором, то чем больше свободы предоставляет язык программисту, тем более выразительными получаются программы.
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Лекция Вирта в политехническом - впечатления
krasin wrote:
> 1. Реальные программы на ФЯ за редкими исключениями не пишут, т.е. ФЯ > скорее чисто академическая вещь.
Пишут, но не в mainstream'е (хотя O'Caml уже к этому приближается).
Например, софт для телефонных коммутаторов пишут на Эрланге.
> 2. Одна из основных идей ФЯ, сказал Вирт, состоит в том,что программа > не пользуется переменными в обычном понимании, и поэтому функции > получаются stateless, что круто для анализа и оптимизации, > предоставляет дополнительную гибкость в использовании, т.к. нет > побочного эффекта. Но! Поскольку state есть основополагающая вещь для > существующих компьютеров, та же ячейка памяти хранит состояние, то > специально уходить от этого, "обманывая природу" стоит слишком много > усилий.
Вирт не понимает функционального программирования В ФЯ функция обрабатывает данные, которые ей передали в качестве параметров.
Ну а модификация глобальных ресурсов как чистый side-эффект функции
считается моветоном и в обычных императивных языках, и этого надо
избегать — особенно хорошо это проявляется, когда надо добавить
многопоточность . Но все мы знаем, что Оберон не приспособлен для
многопоточных приложений....
> Более того, ряд приложений все-таки требуют сохранения состояния / > хранение контекста, поэтому почти во все ФЯ введена возможность > пользоваться аналогом обычных переменных, доступ к которым идет через > специальные языковые/библиотечные средства.
Эээ... Haskell, например, чисто функционален. Там есть, конечно, функции
прямой манипуляции переменными, но они предназначены для специальных
хаков (как модуль System в Обероне ) — при нормальном использовании
они не нужны.
--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0 beta
Sapienti sat!
Re[3]: Лекция Вирта в политехническом - впечатления
Здравствуйте, BreQwaS, Вы писали:
G>>Подскажите, плз., те, кто был на лекции. Задавали ли Вирту вопросы относительно G>>функционального программирования? BQS>Задавали, про пролог. Ответ был примерно такой:
Пролог — не совсем ФЯ, это язык логического программирования.
BQS>В прологе вы не указываете, как искать решение, а описываете некие предикаты, которым должно соответствовать решение, а всё остальное за вас сделает некий wizard. Но при этом вы можете давать визарду какие-то подсказки насчёт того, как искать решение — но разве это не то, от чего предполагалось избавиться? Если честно, то пролог — это интересная академическая игра, но она не имеет отношения к реальной жизни.
Cyberax в соседней ветке очень хорошо на эту тему высказался.
У меня складывается впечатление, у что у Вирта (при всем моем к нему уважении) нездоровая ревность к "академическим играм, не имеющим отношения к реальной жизни", если эти игрища вышли не из под его пера .
Академические игры может и сложны для применения здесь и сразу, но если они стоящие, рано или поздно признание получают, например, мэйнстримовый C# уверенно дрейфует в сторону ФП.
Мощная парадигма важнее чистоты синтаксиса.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Лекция Вирта в политехническом - впечатления
Здравствуйте, eao197, Вы писали:
E>Я же вижу аналогию с естественными языками. Например, великий и богатый русский язык. Его овладение весьма тяжело и для носителей языка (я, например, был по русскому языку двоечником в школе), не говоря уж про иностранцев. Его мощь поражает. Говорят, что у Толстова на странице текста можно не найти повторения ни одного слова. В то же время можно совершенно понятно передавать свои впечатления с помошью трех-четырех матерных слов и нескольких предлогов. Но, имхо, гораздо проще и приятнее читать нормальный художественный текст, не замусоренных повторами, односложными предложениями, сокращенниями и прочим. Только вот чтобы научиться так писать нужно не мало труда приложить.
[клац]
Аналогия, ИМХО, совершенно неудачная. Исходный текст должен понятным любому, кто хоть чуть-чуть знаком с данным языком. Именно поэтому когда-то появилась возможность документирования программы в самом исходном тексте, поэтому отошли от асма и методы программирования всё более приближаются к таким понятиям, которыми человек привык оперировать в обычном мире (ООП, например). Также надо учитывать, что Толстой один, сколько людей может написать как он? Ты предлагаешь настолько усложнить языки программирования, чтобы на них могли ваять исключительно гении, а для понимания написанного человеку требовался пятилетний курс языка? Такое уже было, и от этого избавлялись как могли.
Мне совершенно не хочется, чтобы if можно было написать двумястами разными способами.
Насчёт Perl'а и Ruby. Ужас синтаксиса первого, по-моему, признают все. А второй просто непопулярен. Плохой пример, в общем.
Re[4]: Лекция Вирта в политехническом - впечатления
Здравствуйте, Глеб Алексеев, Вы писали:
BQS>>В прологе вы не указываете, как искать решение, а описываете некие предикаты, которым должно соответствовать решение, а всё остальное за вас сделает некий wizard. Но при этом вы можете давать визарду какие-то подсказки насчёт того, как искать решение — но разве это не то, от чего предполагалось избавиться? Если честно, то пролог — это интересная академическая игра, но она не имеет отношения к реальной жизни. ГА>Cyberax в соседней ветке очень хорошо на эту тему высказался. ГА>У меня складывается впечатление, у что у Вирта (при всем моем к нему уважении) нездоровая ревность к "академическим играм, не имеющим отношения к реальной жизни", если эти игрища вышли не из под его пера .
ГА>Академические игры может и сложны для применения здесь и сразу, но если они стоящие, рано или поздно признание получают, например, мэйнстримовый C# уверенно дрейфует в сторону ФП.
И при нелюбви его к ак. играм, тот же оберон ничем кроме как академической игрой у меня язык не поворачивается назвать...
4) С/С++ и другие языки, которые сейчас этими стандартами являются, стали таковыми в основном благодаря маркетингу и громадной финансовой мощи тех, кто их продвигал.
Это Ваши слова и Вирта? Могу порекомендовать Страуструп "Дизайн и эволюция С++". Совсем это не так.
Re[3]: Лекция Вирта в политехническом - впечатления
Здравствуйте, BreQwaS, Вы писали:
BQS>Здравствуйте, henson, Вы писали: H>>Вирт явно не хотел сталкивать лбами свой красивый Оберон и коммерческие поделки C++, Java и C# BQS>Я честно попытался спровоцировать его на это вопросом "почему при наличии такого хорошего оберона программы пишутся не на нём". Помните, что он ответил?
Не все там были. Можно не говоииь загадками?