OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 08:05

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 259 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9, 10 ... 13  След.
Автор Сообщение
СообщениеДобавлено: Вторник, 03 Декабрь, 2013 12:37 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Геннадий Тышов писал(а):
http://forum.oberoncore.ru/viewtopic.php?p=13427#p13427 Четверг, 28 Февраль, 2008 20:10 Владимир Паронджанов
Цитата:
... Сегодня тюрьма имени Эдсгера Дейкстры тормозит повышение производительности труда программистов....

Кто-кто тормозит?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Декабрь, 2013 12:56 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
albobin писал(а):
Извините, если ненароком всё-таки обидел, видимо неудачно подшутил.
Нет проблем. Ваша шутка, высказанная в форме предположения, для меня безобидна. Мотивация, которую Вы озвучили, весьма популярна в народе, и вполне ожидаема, хоть ко мне и не относится.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Декабрь, 2013 13:16 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Геннадий Тышов писал(а):
http://forum.oberoncore.ru/viewtopic.php?p=13427#p13427 Четверг, 28 Февраль, 2008 20:10 Владимир Паронджанов
Цитата:
Дейкстрианская революция состоит в том, что Дейкстра ввел строгую дисциплину в анархическом царстве процедурного программирования. Но любая дисциплина — это ограничение свободы. Недостаток в том, что Дейкстра ввел неоправданно жесткие ограничения. Фактически Дейкстра добился успеха за счет того, что ввел интеллектуальное рабство и заковал программистов в кандалы.
...
Сегодня тюрьма имени Эдсгера Дейкстры тормозит повышение производительности труда программистов.
...
Данное высказывание Владимира Паронджанова - поразительный пример того, как можно вывернуть факты наизнанку. Даст фору любому политику. Что характерно, зародыш рационального зерна в этом изречении есть, но нет никакой меры, и выводы доведены до абсурда.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Декабрь, 2013 13:33 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Геннадий Тышов писал(а):
igor писал(а):
Никаких exit'ов, брейков и прочей нечисти!

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

Геннадий Тышов писал(а):
Средства предоставлены Вам создателями языка и среды программирования.
Спасибо, что напомнили.

Геннадий Тышов писал(а):
Если не можете или боитесь, то Вам мешает Ваша зашоренность, возможно Вас так учили и напугали.
Пусть моя зашоренность, моя недоученность и мой испуг Вас не беспокоят.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Декабрь, 2013 13:41 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
igor писал(а):
Я программирую головой
"А ещё я в неё ем" (С) Из анекдота про Тайсона :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Декабрь, 2013 20:06 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
albobin писал(а):
Для внешнего наблюдателя (по отношению к макаронам) это выглядит так:

Код:
  [ операторы ]
  [ макароны ]
  [ операторы ]


т.е. даже нет нарушения линейности.

:)

Причём здесь это ?
когда я писал
Код:
...
[ цикл с выходом внутри ]
..

то опирался на то, что цикл, в данном случае, является структурной единицей программы.

Конкретизируя, считаю что Вирту нужно вернуться к паскалевским традициям:
Код:
IF условие THEN оператор [ ELSIF условие THEN оператор ] [ ELSE оператор ] ;
WHILE условие DO оператор;
FOR i = нач TO кон BY шаг DO оператор;
REPEAT оператор UNTIL условие;

то есть уйти от порочного END, который позволяет лепить последовательность операторов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Декабрь, 2013 22:43 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 710
Откуда: Псков
Не проще ли обойтись без BREAK, чем отказываться от последовательностей операторов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 04 Декабрь, 2013 06:26 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Madzi писал(а):
то есть уйти от порочного END, который позволяет лепить последовательность операторов.
А как быть с проблемой "висящего ELSE"? Да к тому же код станет густо усыпан операторными скобками.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 04 Декабрь, 2013 13:15 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
albobin писал(а):
Не проще ли обойтись без BREAK, чем отказываться от последовательностей операторов.

Как показывает практика, а не абстрактные размышления о конях в вакууме, чаще всего более понятен код с BREAK.
Под "более понятен" я понимаю меньшее количество времени, затрачиваемое на анализ чужого кода. При этом, естественно, речь не идёт о "индусском коде" и ему подобных. Т.е. о коде, написанном профессионалом (пусть и адептом структурного программирования).

С другой стороны, BREAK встречается в циклах примерно в 3 случаях из 100.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 04 Декабрь, 2013 13:17 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
igor писал(а):
Madzi писал(а):
то есть уйти от порочного END, который позволяет лепить последовательность операторов.
А как быть с проблемой "висящего ELSE"? Да к тому же код станет густо усыпан операторными скобками.

Не вижу проблем с висящим ELSE.
Если вы о
Код:
  IF условие THEN
    IF условие THEN оператор
  ELSE оператор;

и
Код:
  IF условие THEN
    IF условие THEN оператор;
  ELSE оператор;

то тут не проблема языка, а проблема оформления кода :)

Простите, а где в Обероне фигурные скобки ? :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 04 Декабрь, 2013 13:21 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Madzi писал(а):
Как показывает практика, а не абстрактные размышления о конях в вакууме, чаще всего более понятен код с BREAK


Вот те раз. А примеры можно?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 04 Декабрь, 2013 13:23 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
К предыдущему сообщению.
По моему мнению, оператор IF следует оформлять следующим образом.
Код:
    IF условие THEN оператор ELSE оператор;
    ...
    IF условие THEN IF условие THEN оператор; ELSE оператор; (** => IF условие AND условие THEN оператор ELSE оператор; *)
    (** Кстати такая конструкция будет не допустима в силу ";" перед ELSE *)
    ...
    IF условие THEN IF условие THEN оператор ELSE оператор; (** останется без изменений *)


Предвосхищая вопросы по поводу операторных скобок - оформляйте требуемый код процедурами.
Код станет лаконичнее и нагляднее. Удобнее к чтению и анализу.
Своеобразное прокрустово ложе для нерадивых программистов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 04 Декабрь, 2013 13:50 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
ilovb писал(а):
Madzi писал(а):
Как показывает практика, а не абстрактные размышления о конях в вакууме, чаще всего более понятен код с BREAK


Вот те раз. А примеры можно?

Код:
PROCEDURE Proc1(x, y, epsion : REAL);
VAR
    x : REAL;
    i : INTEGER;
BEGIN
    i := 0;
    WHILE i < 100 DO
        x := x * Fn1(i) * y;
        IF (x > epsilon) THEN
            x := Fn2(y);
            IF (x > y) THEN EXIT; END;
            y := y - epsion / 2;
        END;
        y := (y + x - i) / epsion;
       INC(i);
    END;
    RETURN y;
END Proc1;


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 04 Декабрь, 2013 14:13 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 710
Откуда: Псков
Madzi писал(а):
оформляйте требуемый код процедурами.
Код станет лаконичнее и нагляднее. Удобнее к чтению и анализу.

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

PS.
Концу - не END!
Тьфу, не так.
ENDу -не конец!
Я - за последовательность (операторов).


Последний раз редактировалось albobin Среда, 04 Декабрь, 2013 15:03, всего редактировалось 3 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 04 Декабрь, 2013 14:19 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Madzi: Просьба еще запостить код функций Fn1, Fn2, ибо по вашему "понятному" коду совершенно непонятно что он делает.

ps И еще хотелось бы услышать формулировку задачи и доказательство правильности вашего цикла.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 04 Декабрь, 2013 14:50 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
ilovb писал(а):
Madzi: Просьба еще запостить код функций Fn1, Fn2, ибо по вашему "понятному" коду совершенно непонятно что он делает.

ps И еще хотелось бы услышать формулировку задачи и доказательство правильности вашего цикла.

Считайте Fn1 и Fn2 некоторыми функциями, определёнными на всей числовой прямой.

Нужно найти определённое значение, которое... в коде всё описано :), неужели не понятно ?
Выполняем 100 шагов, если нашли раньше, то молодцы, если нет, то после 100 шага возвращаем то на чём остановились.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 04 Декабрь, 2013 14:59 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Вы верно шутите? Думаете что нет никакого значения что делают процедуры и функции внутри цикла?
ОК.
Ну вот пусть Fn1 возвращает всегда 0. А INC до кучи уменьшает i на единицу (нам ведь пофиг, код и так понятный)

ps Вы всегда так код пишете?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 04 Декабрь, 2013 15:36 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Madzi писал(а):
igor писал(а):
Да к тому же код станет густо усыпан операторными скобками.
Простите, а где в Обероне фигурные скобки ? :)
В "паскалевских традициях", к которым Вы призвали, в качестве операторных скобок используются BEGIN и END.
Кстати, ортодоксальные сишники за одно только это люто ненавидят Паскаль, а за одно и тех, кто пишет на Паскале (видимо, чтоб два раза не бегать) :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 04 Декабрь, 2013 15:46 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
По коду у меня сразу возникает вопросы.
А если передаваемые в качестве параметров x, y, epsilon сразу удовлетворяют условиям выхода?
Это же никак не проверяется перед циклом.

Или если x постоянно (при входе) < epsilon, то х и у в цикле вычисляются 100 раз?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 04 Декабрь, 2013 19:02 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
ilovb писал(а):
Вы верно шутите? Думаете что нет никакого значения что делают процедуры и функции внутри цикла?
ОК.
Ну вот пусть Fn1 возвращает всегда 0. А INC до кучи уменьшает i на единицу (нам ведь пофиг, код и так понятный)

ps Вы всегда так код пишете?

Fn1 и Fn2 принимают значения от $-\inf$ до $+\inf$ и возвращают значения в таких же пределах (естественно, что значение ограничено разрешающей способностью чисел с плавающей запятой).
Значения функций (Fn1 и Fn2) вычисляются на основе наблюдений внешнего объекта и фиксируются перед каждым вызовом процедуры Proc1 (т.е. внутри процедуры (y = Fn1(x)) === (z = Fn1(x)) бесконечное число вызовов функции с одним и тем же параметром, даст один и тот же результат).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 259 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9, 10 ... 13  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB