AVC wrote:
> Как бы то ни было, из "великой троицы" (Дейкстра, Хоар и Вирт) > неизменно атакуют именно Вирта. > То Керниган напишет запоздавшую на несколько лет статью "Why Pascal is > not my favourite programming language". > То Пайк в статье о стиле программирования на Си два раза упомянет > Паскаль, и оба раза в словосочетании "тирания Паскаля".
Так может быть это заслуженная критика?
> То вот Торвальдс выскажется, что goto — это хорошо, а Вирт занимается > "промывкой мозгов", и вообще ничего не понимает. В отличие от него, > Торвальдса. (Я так понял приведенную Cyberax'ом цитату.)
Угу. Причем мнение практика для меня значит намного больше, чем
рассуждения теоретиков.
> 2) начиная с Модулы-2 в виртовских языках действительно нет goto (и > ведь ничего страшного с его исчезновением не случилось).
Угу, там еще нет и break/continue. Только во всех реальных практических
реализациях они неизменно появляются.
> Могу предположить, что Вирта легче критиковать, потому что он > "превращает теорию в практику", создает языки программирования и > операционные системы.
Ну языки я и сам на досуге создаю А с операционными системами у
Торвальдса явно лучше результат.
AVC wrote:
> Я вообще не могу понять, о чем тут талдычит Торвальдс, кроме той > светлой мысли, что вот Дейкстра уже умер, давайте покончим с Виртом. > (Как и в другой его цитате, приведенной еще в первом посте топика.) > В *стандартнон* Паскале есть goto, в Модуле-2 и Обероне EXIT (=break).
and array begin case const div do
downto else end file for function goto
if in label mod nil not of
or packed procedure program record repeat set
then to type until var while with
break/continue здесь нет. Есть goto, но он conisdered harmful (и
вероятно за него студентов били ногами).
> Что вызвало такие "страдания молодого Линуса", что даже отшибло память > о конструкциях языка?
AVC wrote:
> В *стандартнон* Паскале есть goto, в Модуле-2 и Обероне EXIT (=break).
Или вот еще:
The appearance of goto labels as integers might be considered a sort of arcane
plot to punish people for using "goto"s. Many or most implementations allow
goto labels to appear in the same form as identifiers...
C>Угу. Причем мнение практика для меня значит намного больше, чем C>рассуждения теоретиков.
Не касаясь ничего остального просто замечу, что представляя, как это говорит авиаконструктор, я испытываю интересные ощущения.
Или врач, архитектор. Даже электрик :)
Здравствуйте, reductor, Вы писали:
R>Это что, обвинение в чем-то личном чтоли? R>Хоар, Дийкстра и Вирт были принимали участие в создание Алгола (Основная роль была тем не менее все же за Бэкус с Науром) R>Паскаль прямой потомок Алгола.
Немножко неверно. Сначало бы сказал какого Алгола? R>Но это все не имеет никакого значения. Вклад в Computer Science Дийкстры и Хоара несоизмерим с Виртовским. Точнее, Паскаль уже не являлся чем-то особенно заметным в CS. Упрощенный Алгол.
Какой Алгол? R>То, чем занимались Дийкстра, Хоар и Милнер сейчас лежит в основе SML, O'Caml и Haskell.
Насчет Дейкстры и Милнера. Скорее их вклад в данные языки несооизмерим с вкладом Moses Schonfinkel, Alonso Church, Haskell Curry, H. Barendregt, Dana S. Scott, Peter J. Landin, и самое главное John McCarthy. R>Не считая придуманных ими алгоритмов и сделаных открытий. Их влияние _огромно_.
R>А Вирт? Язык Оберон. Даже не смешно. R>То есть реально я вообще затруднюсь сказать что сделал Вирт в CS после своего участия в группе алгола. R>40 лет одна и та же песня.
Не перевирай факты и узнаешь.
AVC>>Я понял, что Милнера (кто это?) и Маккарти Вы ставите выше, чем Вирта. Это Ваше неотъемлимое право. R>Кто такой Милнер? Хороший вопрос на форуме, посвященном программированию. R>Нет, правда. Робин Милнер — это такой человек, который в то время, когда Вирт делал Паскаль, совершил небольшую революцию в CS. R>Создал язык ML и алгоритм вывода типов Хиндли-Милнера. А так же создатель пи-исчисления. Один из самых влиятельных и цитируемых ученых в мире.
Милнер просто реализовал типизацию в комбинаторной логике исследованую Roger Hindley.
AVC>>Но вот насчет оплеух Вирту "по делу", может быть, скажете пару ласковых слов? AVC>>Так сказать, перед смертью. R>А почему перед смертью? Он умирать собрался? R>Хорошего о Вирте могу сказать, конечно — хотел бы я иметь его упорство.
Для начала вы бы посмотрели что же он делал, а потом высказывались бы .
У меня сложилось такое превратное впечатление что любое упоминание о Вирте вызывает неприятие независимо от причины. Мне это не кажется конструктивным.
minorlogic wrote:
> C>Ну так это и есть goto Просто в виде multiple return statement. > Неумесная аналогия, return более безопасен и явно указывает на логику > выполнения, чего не скажешь про goto. Неумесная даже для шутки
reductor wrote:
> C>Угу. Причем мнение *практика* для меня значит намного больше, чем > C>рассуждения теоретиков. > Не касаясь ничего остального просто замечу, что представляя, как это > говорит авиаконструктор, я испытываю интересные ощущения.
У меня отец работал авиаконструктором — они там так примерно и говорят
> Или врач, архитектор. Даже электрик
Уж про врачей я вообще молчу — у них там анекдоты ходят, что на первой
практике студентов отучают лечить по учебникам.
C>No, you've been brainwashed by CS people who thought that Niklaus Wirth C>actually knew what he was talking about. He didn't. He doesn't have a C>frigging clue.
Ну это такое у нас любят. На Вирта собак спускать.
C>Any if-statement is a goto. As are all structured loops. Подмена понятия языка высокого уровня ассемблером до хорошего не доводят.
C>Ans sometimes structure is good. When it's good, you should use it.
C>And sometimes structure is _bad_, and gets into the way, and using a C>"goto" is just much clearer.
C>For example, it is quite common to have conditionals THAT DO NOT NEST.
C>In which case you have two possibilities
C>- use goto, and be happy, since it doesn't enforce nesting
C>This makes the code _more_ readable, since the code just does what C>the algorithm says it should do.
Ага, и его круто будет рефакторить.
C>- duplicate the code, and rewrite it in a nesting form so that you can C>use the structured jumps.
Или оборачивать в функцию.
C>This often makes the code much LESS readable, harder to maintain, C>and bigger.
C>The Pascal language is a prime example of the latter problem. Because it C>doesn't have a "break" statement, loops in (traditional) Pascal end up C>often looking like total shit, because you have to add totally arbitrary C>logic to say "I'm done now".
Я начинал с Паскаля. Скажу честно, после Паскаля еще года два три, вообще ни break ни continue в циклах не использовал. Не потому что не нравилось, конструкции нормальные, просто не нужно было. Как то автоматически рука была набита обходиться без них. Да и сейчас у меня редко встретишь эти инструкции. Хотя только сейчас обратил внимание на данный факт.
C>У меня все больше уважения к этому товарищу!
Зато у меня меньше.
Здравствуйте, reductor, Вы писали:
R>А Вирт? Язык Оберон. Даже не смешно. R>То есть реально я вообще затруднюсь сказать что сделал Вирт в CS после своего участия в группе алгола. R>40 лет одна и та же песня.
Блин, ну как же много желающих кинуть в Вирта камень! Извините за ненормативную лексику, но это просто офигеть можно (с заменой офигеть на соответствующий нецензурный термин по вкусу).
Кто про нас знает за пределами RSDN?А ведь про Вирта знают...
Если кому-то кажется, что Вирт оставил малый след в программировании, то это его личное дело. Но вот смеятся над ним пусть будут те, кто создал что-нибудь аналогичное Паскалю, с выросшими из него Modula-ми, Oberon-ми, и выросшими из всего этого Object/Component Pascal-ями, Delphi-ями и Ada-ми.
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Блин, ну как же много желающих кинуть в Вирта камень! Извините за ненормативную лексику, но это просто офигеть можно (с заменой офигеть на соответствующий нецензурный термин по вкусу).
E>И главное кто?
E>Кто такой reductor? Кто такой AVC? Кто такой eao197?
E>Кто про нас знает за пределами RSDN?А ведь про Вирта знают...
Во-первых, хотел бы заметить, что переход на личности — это дурной тон. Более чем.
Кроме того, кто такой лично я и кто меня знает, во-первых, информация, которую я здесь не указал, а во-вторых не имеет отношения к делу. Или CS это что-то вроде церковной иерархии, где истинность высказывания зависит от того кто сказал, а не от того что?
E>Если кому-то кажется, что Вирт оставил малый след в программировании, то это его личное дело. Но вот смеятся над ним пусть будут те, кто создал что-нибудь аналогичное Паскалю, с выросшими из него Modula-ми, Oberon-ми, и выросшими из всего этого Object/Component Pascal-ями, Delphi-ями и Ada-ми.
Мне ничего не "кажется". Оценить влияние Никлауса Вирта и его вес в научном сообществе можно посмотреть по адресу http://citeseer.ist.psu.edu/
И без истерик и идолопоклонничества.
Если же у вас есть свое мнение (наличие такового всегда вызывает уважение) по поводу того, что сделал Вирт, Паскаля, Оберона и тп — думаю, все бы рады были услышать подробный отчет со сравнениями тех языков, которые были актуальны в CS на тот момент.
Здравствуйте, AVC, Вы писали:
AVC>Видно, Линусу проще добиться уважения критикой Вирта, чем выведением багов из ядра?
Слишком много людей пишут это ядро помимо Линуса. Этот пост, очевидно, адресовался им. И вполне правильно он поставил акцент, что читабельность и простота важднее, чем следование неким догмам.
Я, например, с легкостью использую goto там, где это действительно подходит. Это примерно 1-2 goto на проект из более сотни тысяч строк исходников. И почему меня должно это парить& Только потому, что goto может "привести куда угодно"? Указатели в С++ тоже могут привести куда угодно, при соответствующем отношении к ним. B для многих это повод не писать на С++.
Здравствуйте, Cyberax, Вы писали:
C>Здравствуйте, Cyberax, Вы писали:
>>> Интересно, а что он на Вирта-то наехал? Вирт-то фигура далеко не самая >>> заметная в этом плане. Что не сразу на Дийкстру, Хоара, Кнута и >>> Милнера? Неужели не посмел? >>> Слабак! C>Кстати, Кнут считает, что структурное программирование должно содержать break. Ну а имея break (особенно именованый) уже и goto становится фактически ненужным (за исключением случаев с оптимизацией).
Блин, религия это все. break, continue, return, goto — все они операторы безусловного перехода. Просто первые 3 его версии не позволяют выходить за границы блоков в структурном программировании.
Соответственно, в тех языках, где нет break, continue и return вполне можно можно использовать goto, если использовать ег ос той же "аккуратностью", какую мы получаем в случае break, continue, return.
Здравствуйте, Cyberax, Вы писали:
C>reductor wrote:
>> C>Угу. Причем мнение *практика* для меня значит намного больше, чем >> C>рассуждения теоретиков. >> Не касаясь ничего остального просто замечу, что представляя, как это >> говорит авиаконструктор, я испытываю интересные ощущения.
C>У меня отец работал авиаконструктором — они там так примерно и говорят :)
Я тоже могу так могу сказать про академиков в информатике — особенно, когда речь заходит о юникоде в GHC.
Но перегибать палку все же не стоит :)
>> Или врач, архитектор. Даже электрик :)
C>Уж про врачей я вообще молчу — у них там анекдоты ходят, что на первой C>практике студентов отучают лечить по учебникам.
Да, их учат быть научниками, относиться к учебнику как к последней истине — это одно из самого худшего, что может случиться с медиком.
Их учат опираться прежде всего на результаты исследований или здравый смысл и здоровую интуицию, когда чего-то нет ни в учебнике ни в исследованиях. http://www.pubmed.com — центральная база с последними отчетами.
Но теория играет там огромную роль. Недаром, чтобы стать врачом, нужно учиться 8 лет.
Здравствуйте, reductor, Вы писали:
R>Мне ничего не "кажется". Оценить влияние Никлауса Вирта и его вес в научном сообществе
А мы только про CS говорим или про программирование вообще?
R> можно посмотреть по адресу http://citeseer.ist.psu.edu/ R>И без истерик и идолопоклонничества.
Поиск в citeseer:
Niklaus Wirth:
CiteSeer: 45
Google: 157000
Robin Milner:
CiteSeer: 181
Google: 110000
R>Если же у вас есть свое мнение (наличие такового всегда вызывает уважение) по поводу того, что сделал Вирт, Паскаля, Оберона и тп — думаю, все бы рады были услышать подробный отчет со сравнениями тех языков, которые были актуальны в CS на тот момент.
Я не собираюсь ничего сравнивать. Мне просто интересно, на основании каких достижений ты позволяешь себе смеятся над работами Вирта?
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, GlebZ, Вы писали:
GZ>Я начинал с Паскаля. Скажу честно, после Паскаля еще года два три, вообще ни break ни continue в циклах не использовал. Не потому что не нравилось, конструкции нормальные, просто не нужно было. Как то автоматически рука была набита обходиться без них. Да и сейчас у меня редко встретишь эти инструкции. Хотя только сейчас обратил внимание на данный факт.
А эти инструкции вообще в циклах крайне редки. Их применение — это когда предполагается одновременное изменение внешней среды во время выполнения тела цикла, и по каким-то причинам нецелесообразно на эти изменения реагировать в начале или конце цикла, а нужно именно посередине. У меня чаще всего встречается в некоем низкоуровневом коде.
Часто на всех уровнях можно встретить только break в switch-case.
Действительно, в большинстве случаев можно обойтись без них, вместо:
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, reductor, Вы писали:
R>>Мне ничего не "кажется". Оценить влияние Никлауса Вирта и его вес в научном сообществе
E>А мы только про CS говорим или про программирование вообще?
R>> можно посмотреть по адресу http://citeseer.ist.psu.edu/ R>>И без истерик и идолопоклонничества.
E>Поиск в citeseer: E> Niklaus Wirth: E> CiteSeer: 45 E> Google: 157000 E> Robin Milner: E> CiteSeer: 181 E> Google: 110000
Не совсем правильный подход (хотя даже так вирт уступает в 4 раза).
Идем сюда: http://citeseer.ist.psu.edu/mostcited.html
Там собраны самые цитируемые ученые вообще (суммарно все публикации). Видим, что Милнер там на четвертом месте.
В окружении Ульмана, Кнута, Дийкстры, Хоара, Ривеста, Шамира, Лейзерсона и так далее (Надеюсь, представлять этих товарищей не нужно). Вопрос: на каком месте там Никлаус Вирт? Сколько его работ процитированы и легли в основу других? Сколько работ цитируют его работы? Сколько вообще работ у Вирта и сколько у Милнера?
E>Я не собираюсь ничего сравнивать. Мне просто интересно, на основании каких достижений ты позволяешь себе смеятся над работами Вирта?
А какое это имеет значение?
Если я скажу, что моя фамилия Плоткин — это будет иметь большее значение, чем если я скажу, что моя фамилия Пупкин?
На каком основании? Заслуги Никлауса Вирта зависят от чьей-то фамилии?
Я способен оценить и прочитать то, что пишет Вирт, этого достаточно.