Оберон-технология: особенности и перспективы |
Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение.
Всего в теме 6256 сообщений
Добавить свое сообщение
Отслеживать это обсуждение  Обсуждение из раздела Школа ОБЕРОНА
№ 5616 20-10-2007 02:27 |  |
Ответ на »сообщение 5612« (Илья Ермаков)
___________________________
>>> Потому что грамотно :-)
>>> А не партизанщина голым фором против танков :-)
А где доказательство того, что грамотно? Вот я привел контраргумент:
WHILE (i < len) & Condition(i) DO ... END;
В котором явно видно, что при определенных условиях появляется зависимость от порядка операндов в условном выражении цикла. Это что, грамотно по-вашему?
Вообщем, это как раз та ситуация, в которой появляется разница между теорией и практикой - теоритически порядок операндов не важен, а практически...
№ 5615 19-10-2007 18:30 |  |
Ответ на »сообщение 5614« (Илья Ермаков)
___________________________
___________________________
А конструкции навроде for-break - это вообще не высокоуровневый цикл. А просто несколько более красивая замена машинному коду с jmp.
И чтобы доказать обратное, нужно как минимум описать метод формального построения алгоритмов на основе циклов с break. А затем ещё хорошо бы показать, будет ли он хотя бы также прост, как для просто циклов.
№ 5614 19-10-2007 18:24 |  |
Ответ на »сообщение 5613« (Jack Of Shadows)
___________________________
Ответ на »сообщение 5612« (Илья Ермаков)
___________________________
Потому что грамотно :-)
"Самый правильный цикл" - это чушь собачья, нонсенс.
Правильно. Нет менее и более правильных циклов. Как нет "рыбы второй свежести".
Есть цикл - это формальная конструкция с одним входом и одним выходом, которая выполняется многократно до тех пор, пока истинна её охрана (или счётчик for соответствует определённым до начала выполнения ограничениям).
А конструкции навроде for-break - это вообще не высокоуровневый цикл. А просто несколько более красивая замена машинному коду с jmp.
№ 5613 19-10-2007 18:15 |  |
Ответ на »сообщение 5612« (Илья Ермаков)
___________________________
Потому что грамотно :-)
Илья, перебирать элементы списка при помощи while - это самая большая безграмотность по отношению к циклам, которую только можно себе представить.
"Самый правильный цикл" - это чушь собачья, нонсенс. Так же как и "самый правильный условный оператор"
Поразительно как можно любую идею довести до абсурда. Это я об идее минимализма оберона.
Добредили до "самого правильного цикла". Следующий шаг - выкинуть все "неправильные".
Затем приняться за case
№ 5612 19-10-2007 18:09 |  |
Ответ на »сообщение 5609« (Стэн)
___________________________
Ответ на »сообщение 5607« (Geniepro)
___________________________
Поэтому вопрос не снимается - возможно ли это там, и если да, то почему это WHILE лучше, чем FOR с break
Потому что грамотно :-)
А не партизанщина голым фором против танков :-)
№ 5611 19-10-2007 17:33 |  |
Ответ на »сообщение 5608« (AVC)
___________________________
>>> Будет время, загляните в начало "Дисциплины программирования" Дейкстры ("От автора").
>>> Там кое-что любопытное написано о циклах и рекурсии.
А можно пояснить, что же там такого интересного?... А то я не проникся...
Нам еще на первом курсе университета преподаватель математики говорил - "Математика не занимается вычислениями!"...
Дейкстра также подчеркивает, что есть разница между описанием алгоритма и его реализацией, но далее приводит пример с повторением и рекурсией. А не получается ли так же? В теории действительно здорово и просто:
while B do S;
Но кто может доказать, что реализация этого выражения будет гарантировать отсутствие side-effect'ов, подобно тем, что я приводил в »сообщение 5606«?
№ 5610 19-10-2007 17:24 |  |
№ 5609 19-10-2007 16:36 |  |
Ответ на »сообщение 5607« (Geniepro)
___________________________
>>> А в нормальном языке функция просто не имеет права изменять значения своих параметров, так что там этой проблемы просто не возникает...
Неплохо было бы озвучить список "нормальных" языков... ;-) Это во-первых.
А во-вторых, вопросы о видах циклов относились к императивным языкам вообще, и к Оберону, в частности... Поэтому вопрос не снимается - возможно ли это там, и если да, то почему это WHILE лучше, чем FOR с break, или FOREACH...
И еще раз подчеркну, что речь не об изменении параметра, а о "Ведь в спецификации не указано, что i для WHILE может быть только локальной переменной, на которую нельзя получать ссылки или указатели..."
№ 5608 19-10-2007 16:35 |  |
Ответ на »сообщение 5602« (Geniepro)
___________________________
Ну вот видите, как всё запущенно... На все машинные команды инвариантов прям не напасёшься... Так и стоит ли ими заморачиваться вообще? :о))
Конечно, не стоит.
Не зря же существуют ЯВУ и структурное программирование.
Прав Jack of Shadows: хороший цикл -- мёртвый (в смысле - отсутствующий) цикл! :о))
Новая задорная кричалка для поднятия боевого духа функциональщиков на морозе? ;)
Будет время, загляните в начало "Дисциплины программирования" Дейкстры ("От автора").
Там кое-что любопытное написано о циклах и рекурсии.
Отдельные главы из книги можно найти здесь:
http://oberon2005.ru/classics/ed1976.pdf
№ 5607 19-10-2007 16:27 |  |
Ответ на »сообщение 5606« (Стэн)
___________________________
А что это мы все о видах циклов? А от перестановки слагаемых значение меняется? У тех, кот считает, что WHILE лучше чем FOR, хотелось бы спросить: А это действительно безопасно в общем случае?:
WHILE (i < len) & Condition(i) DO ... END;
Hint: Condition меняет значение i так, что оно становится > len, но возвращает TRUE. Ведь в спецификации не указано, что i для WHILE может быть только локальной переменной, на которую нельзя получать ссылки или указатели...
А в нормальном языке функция просто не имеет права изменять значения своих параметров, так что там этой проблемы просто не возникает...
Добавить свое сообщение
Отслеживать это обсуждение 
Дополнительная навигация: |
|