OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 11:29

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




Начать новую тему Ответить на тему  [ Сообщений: 58 ]  На страницу 1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: Среда, 15 Апрель, 2009 23:08 

Зарегистрирован: Вторник, 27 Ноябрь, 2007 20:40
Сообщения: 48

======
Илья Ермаков - ОТ МОДЕРАТОРА

Ниже - весьма интересная и без "флуда" дискуссия. Человек чётко ставит вопросы "а зачем оно мне надо" и получает чёткие ответы. От флуда и вкусовщины в этой ветке следует воздержаться, буду резать.

Вот это сообщение viewtopic.php?p=28238#p28238 - рассказ о базовых схемах циклов. Можно читать сразу.
======



Илья Ермаков писал(а):
sia писал(а):
Ну хорошо, оставили один только WHILE. И что здесь красивого в таком одноообразии?
Серо и однобоко. Ровные заборы вайлов. Хорошенько вложились - и сразу возникнет желание
написать GOTO - ан нельзя, дядя (сами знаете как зовут) - не разрешает...

Никакой алгоритмический процесс (как он есть "в формальной модели") не отображается в GOTO.
Если Вы подгоняете программные конструкции под модель методом тыка, вместо проекции "математики" из головы в код, то, конечно, возникнут... разные желания... Ну шо ж тут поделать.


Почему же не отображается? Стрелка, переход к выполнению следующего блока операторов.
Тот же WHILE это что? Проверка условия и переход за завершающий END...
WHILE x DO
...
END;

10: IF ~x THEN GOTO 100; END;
...
GOTO 10;
100:

Не понял насчёт подгонки чего к чему?
Вроде бы я как раз за то, чтобы в языке было достаточно конструкций
для отображения (в идеале) любого алгоритма. А не наоборот.

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

И ещё такой момент - убогие конструкции неизбежно оказывают обратное влияние на мышление.
Мозг начинает мыслить сразу в терминах кода. Слышал даже высказывание - "программирование
сушит мозг".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Апрель, 2009 00:16 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
sia писал(а):
Тот же WHILE это что? Проверка условия и переход за завершающий END...

У процессора/компьютера? Меня не интересует, что там у процессора компьютера.
С точки зрения "физической", так сказать, WHILE - это описание поведения с обратной связью.
С точки зрения математической WHILE - это итерационный процесс, решающий логическое уравнение (обеспечивающий постусловия), начиная с начальных условий (вектор значений переменных сходится к результату).

Как видите, есть целостная, неделимая конструкция. Сколько ж можно объяснять. Язык отваливается. Всё известно уж почитай сколько годов - только ИТ-шникам всё никак не впрок :)

Касательно ДРАКОНа - ни малейшего намёка на goto там нет. И там математика, совсем "слесарям" места не остаётся, да? :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Апрель, 2009 07:40 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Илья Ермаков писал(а):
"слесарям"
Илья Евгеньевич. Вы квалифицированных слесарей, похоже, не встречали еще. Это люди серьезные. (У нас есть опытное производство.)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Апрель, 2009 10:03 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Info21 писал(а):
Илья Ермаков писал(а):
"слесарям"
Илья Евгеньевич. Вы квалифицированных слесарей, похоже, не встречали еще. Это люди серьезные. (У нас есть опытное производство.)


Не-не, я знаю!! Пардон за нелестное для слесарей сравнение с программёрами. У нас в Технологич. институте в мастерских тоже матёрые мужики :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Апрель, 2009 16:41 

Зарегистрирован: Вторник, 27 Ноябрь, 2007 20:40
Сообщения: 48
Илья Ермаков писал(а):
sia писал(а):
Тот же WHILE это что? Проверка условия и переход за завершающий END...

У процессора/компьютера? Меня не интересует, что там у процессора компьютера.
С точки зрения "физической", так сказать, WHILE - это описание поведения с обратной связью.
С точки зрения математической WHILE - это итерационный процесс, решающий логическое уравнение (обеспечивающий постусловия), начиная с начальных условий (вектор значений переменных сходится к результату).

Как видите, есть целостная, неделимая конструкция. Сколько ж можно объяснять. Язык отваливается. Всё известно уж почитай сколько годов - только ИТ-шникам всё никак не впрок :)

Касательно ДРАКОНа - ни малейшего намёка на goto там нет. И там математика, совсем "слесарям" места не остаётся, да? :)


Илья уверен что это так? У меня есть некоторые возражения против такой трактовки:

У процессора/компьютера? Меня не интересует, что там у процессора компьютера.
-- А зря. Вы из своей, "так сказать", модели - код на чём будете выполнять?

С точки зрения "физической", так сказать, WHILE - это описание поведения с обратной связью.
-- WHILE TRUE DO END; - где здесь обратная связь?
Физика причём? Слово хорошее?

С точки зрения математической WHILE - это итерационный процесс,
решающий логическое уравнение (обеспечивающий постусловия), начиная с начальных условий
(вектор значений переменных сходится к результату).

-- что вы понимаете под "итерационный процесс" ? WHILE - не имеет итерационных переменных,
это не итератор, может с FOR перепутали?

-- нет не решает. Никакой связи с логическими уравнениями.

-- а ПРЕДусловие не обеспечивает? Кто же тогда обеспечивает?

-- что вы понимаете под "начиная с начальных условий" ? (в WHILE нет выделенных
начальных условий)

-- WHILE не оперирует такой сущностью как "вектор значений переменных"

-- "сходится к результату" - это вы о чём? Вы знаете результат WHILE?
Вы не пытаетесь выдать желаемое за действительное?

Как видите, есть целостная, неделимая конструкция. Сколько ж можно объяснять.
Язык отваливается. Всё известно уж почитай сколько годов - только ИТ-шникам всё никак не впрок :)

-- вижу много слов и мало смысла. Вы пытаетесь объяснить простую конструкцию
через сложные умозаключения (причём неверные), называя это математикой...

Касательно ДРАКОНа - ни малейшего намёка на goto там нет.
И там математика, совсем "слесарям" места не остаётся, да? :)

-- Стрелка, соединяющая один блок с другим - в Драконе есть?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Апрель, 2009 16:53 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Ну да, да - "неправильно, Гыви, ос - это такой болшой палка, вокруг который крутицца наш планет". Как всё просто.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Апрель, 2009 17:05 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
sia писал(а):
-- А зря. Вы из своей, "так сказать", модели - код на чём будете выполнять?

-- что вы понимаете под "итерационный процесс" ? WHILE - не имеет итерационных переменных,
это не итератор, может с FOR перепутали?
-- нет не решает. Никакой связи с логическими уравнениями.
-- а ПРЕДусловие не обеспечивает? Кто же тогда обеспечивает?
-- что вы понимаете под "начиная с начальных условий" ? (в WHILE нет выделенных
начальных условий)
-- WHILE не оперирует такой сущностью как "вектор значений переменных"
-- "сходится к результату" - это вы о чём? Вы знаете результат WHILE?
Вы не пытаетесь выдать желаемое за действительное?

Как видите, есть целостная, неделимая конструкция. Сколько ж можно объяснять.
Язык отваливается. Всё известно уж почитай сколько годов - только ИТ-шникам всё никак не впрок :)

-- вижу много слов и мало смысла. Вы пытаетесь объяснить простую конструкцию
через сложные умозаключения (причём неверные), называя это математикой...



1. Исполнитель может быть какой угодно. Даже человек. Главное, чтобы интерпретация этого оператора была в точном соответствии с его семантикой.
2. Итерационный - значит, повторяющийся.
3. Осознание наличия инварианта цикла, а также наличие предусловий и постусловий - сильно облегчает написание ПРАВИЛЬНОГО кода.
4. Для заданного предусловия после выполнения while имеем соответствующее постусловие.

Квалифицированный программер такие весчи должен понимать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Апрель, 2009 17:43 

Зарегистрирован: Вторник, 27 Ноябрь, 2007 20:40
Сообщения: 48
Валерий Лаптев писал(а):
sia писал(а):

1. Исполнитель может быть какой угодно. Даже человек. Главное, чтобы интерпретация этого оператора была в точном соответствии с его семантикой.
2. Итерационный - значит, повторяющийся.
3. Осознание наличия инварианта цикла, а также наличие предусловий и постусловий - сильно облегчает написание ПРАВИЛЬНОГО кода.
4. Для заданного предусловия после выполнения while имеем соответствующее постусловие.

Квалифицированный программер такие весчи должен понимать.


1. именно это и сомнительно при такой интерпретации (если модель сильно отличается
от реального исполнителя)

2. вот на это и намекал: часто считают что умнее когда непонятней или более наукообразно,
объясняют одно через другое, сипулька - см.помещение для сипуляции и наоборот. Цикл это
итерационный процесс... А если нет итерируемой переменной, о чём тогда говорим?

3. может кому-то и облегчает. Зачем облегчать и без того лёгкое? При этом нужно принимать
во внимание, что алгоритм может и не быть конечным, модель вычислений на компьютере
не является детерминированной, хаос и непредсказуемость вносят данные и асинхронный
характер работы ОС, внешние источники данных и т.п.

4. для заданного. Речь шла чисто о WHILE, без привлечения дополнительных условий.
Например цикл, который управляет подачей топлива в двигатель, в зависимости от нагрузки...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Апрель, 2009 18:47 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
sia писал(а):
2. вот на это и намекал: часто считают что умнее когда непонятней или более наукообразно,
объясняют одно через другое, сипулька - см.помещение для сипуляции и наоборот. Цикл это
итерационный процесс... А если нет итерируемой переменной, о чём тогда говорим?

Если речь об алгоритмах управляющего характера, то понимаем в первом варианте, как управление по обратной связи.

Наукообразность не при чём. Речь о грамотности, которая позволяет кристально ясно понимать суть дела. Собачью конуру можно строить "на глазок", мост строить без понимания сопромата нельзя.

Касательно нелюбимого Вами Дейкстры - мало таких деятелей в программировании, которые настолько глубоко и ясно понимали его суть, природу. Чувствовали даже, я бы сказал. А его форм. методы - это как дифф. и интегральное исчисление для физики.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Апрель, 2009 18:50 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Вы даже не знаете, что такое предусловие. Я так понял, что за предусловие Вами принято "условие цикла WHILE".

Ну, конечно, вина дурацких авторов, пообозвавших цикл "циклом с предусловием" и "циклом с постусловием". Но можно ведь и нормальные книжки читать :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Апрель, 2009 20:12 

Зарегистрирован: Вторник, 27 Ноябрь, 2007 20:40
Сообщения: 48
Илья Ермаков писал(а):
sia писал(а):
2. вот на это и намекал: часто считают что умнее когда непонятней или более наукообразно,
объясняют одно через другое, сипулька - см.помещение для сипуляции и наоборот. Цикл это
итерационный процесс... А если нет итерируемой переменной, о чём тогда говорим?

Если речь об алгоритмах управляющего характера, то понимаем в первом варианте, как управление по обратной связи.
-- Илья, я знаю что такое обратная связь. А вы знаете?
-- Какое отношение это имеет к WHILE?

Наукообразность не при чём. Речь о грамотности, которая позволяет кристально ясно понимать суть дела. Собачью конуру можно строить "на глазок", мост строить без понимания сопромата нельзя.
-- Я думал обсуждаем циклы, GOTO... Оказывается собачью конуру и Дейкстру?

Касательно нелюбимого Вами Дейкстры - мало таких деятелей в программировании, которые настолько глубоко и ясно понимали его суть, природу. Чувствовали даже, я бы сказал. А его форм. методы - это как дифф. и интегральное исчисление для физики.

-- Позвольте вопрос. Если бы Декстру допустили к проектированию автомобиля, то каким
-- органом он бы заменил руль?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Апрель, 2009 20:21 

Зарегистрирован: Вторник, 27 Ноябрь, 2007 20:40
Сообщения: 48
Илья Ермаков писал(а):
Вы даже не знаете, что такое предусловие. Я так понял, что за предусловие Вами принято "условие цикла WHILE".

Ну, конечно, вина дурацких авторов, пообозвавших цикл "циклом с предусловием" и "циклом с постусловием". Но можно ведь и нормальные книжки читать :)



Спасибо за науку. Можете поделиться - в каких источниках вы подцепили такие откровения?
Илья Ермаков писал(а):
С точки зрения "физической", так сказать, WHILE - это описание поведения с обратной связью.
С точки зрения математической WHILE - это итерационный процесс, решающий логическое уравнение (обеспечивающий постусловия), начиная с начальных условий (вектор значений переменных сходится к результату).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Апрель, 2009 21:13 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Я ща про себя поматерюсь, что мне вообще не свойственно... А потом скажу, хорошо?
Я не имею привычки что-то "подцеплять". Если я такое сказал, значит именно так я понимаю вопрос, на основе знаний (обычно некоей классики) и опыта (и рабочего, и преподавательского).

Про обратную связь - что Вас не устраивает в совершенно очевидном факте? Я просто не могу понять даже, что я должен отвечать на Вашу строгую претензию :) Может быть, стоит почитать первую главу из учебного курса Дейкстры, где самые азы детишкам на пальцах... Но с такой правильной расстановкой акцентов, которую нигде более я не видел: http://khpi-iip.mipk.kharkiv.edu/librar ... 316_2.html

По поводу итерационного решения. В любом присваивании внутри цикла переменная, стоящая слева, имеет смысл x _ i+1, а справа - x _ i. (а вне цикла вообще такая конструкция с одинаковой переменной и справа, и слева не имеет никакого смысла, она может возникнуть только из-за экономии переменных).

Таким образом, процесс выполнения WHILE порождает по каждой переменной последовательность значений, которые она принимает. Если в цикле изменяются несколько переменных, то можно говорить об одной "составной переменной" - векторе из значений всех переменных цикла. В итоге цикл порождает последовательность векторов. Единственное назначение цикла - достичь цели. Цель обычно осознаётся в виде логического предиката от этого самого вектора значений переменных - постусловие ("пост" - после окончания цикла). Сами значения должны находится между собой в целостном соотношении - инварианте (тоже логич. предикат, понятное дело). Мы можем установить их в такое соотношение для некоторого простейшего случая (например, знаем, что факториал 0 = 1; т.е. i := 0; fi := 1). Далее мы строим такой шаг цикла, чтобы он продвигал вектор от одного состояния, удовлетворяющего инварианту, к другому. Это происходит подобным же образом, как численное решение уравнений методом итераций. Только тут уравнение - это целевой предикат. И, так же как и в методе итераций, самое главное - чтобы процесс сходился, от начального вектора к конечному, который и является нужным нам ответом.

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

Если Вы разрешите произвольные переходы, то начинается веселуха. Постройте такую конструкцию, где Вы имеете второй вход в середину цикла. И поразмыслите над ней на досуге. Увидите, что в ней окажется пара действий, которые при одном маршруте будут идти в одном порядке, при другом - в другом. Т.е. бред, при котором вообще теряется какая-то возможность анализировать "состояния между".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Апрель, 2009 21:31 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
sia писал(а):
-- Илья, я знаю что такое обратная связь. А вы знаете?
-- Какое отношение это имеет к WHILE?

Даже в классическом школьном учебнике Кушниренко, Лебедев, Сворень "Основы информатики и ВТ" (90-й г., авторы - Мехмат МГУ) глава про WHILE называется что-то вроде "Цикл с обратной связью". И очевиднейшие примеры управления роботом.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Апрель, 2009 22:04 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
sia писал(а):
-- Позвольте вопрос. Если бы Декстру допустили к проектированию автомобиля, то каким
-- органом он бы заменил руль?

Ещё раз позвольте ответ. Если бы не Дейкстра, то программирование оставалось бы в том же состоянии, как физика до введения дифференциального исчисления. Собственно, в массе голов оно и остаётся пока в таком виде. Но открытие новой парадигмы сделано, хода назад нет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Апрель, 2009 23:03 

Зарегистрирован: Вторник, 27 Ноябрь, 2007 20:40
Сообщения: 48
Илья Ермаков писал(а):
Если Вы разрешите произвольные переходы, то начинается веселуха. Постройте такую конструкцию, где Вы имеете второй вход в середину цикла. И поразмыслите над ней на досуге. Увидите, что в ней окажется пара действий, которые при одном маршруте будут идти в одном порядке, при другом - в другом. Т.е. бред, при котором вообще теряется какая-то возможность анализировать "состояния между".


Ага, хх уу zz. Извиняюсь за слово, непроизвольно вырвалось...

Говоря о циклах я имел в виду самый общий случай, безотносительно навешиваемого
или подразумеваемого контекста, то есть: WHILE any_func() DO any_action() END;
Где any_func() и any_action() - произвольные функции, которые в общем случае имеют
свой контекст, но он может быть закрыт или неизвестен. Это могут быть системные вызовы,
какие-то библиотечные функции...

Строить какие-то предположения относительно них в общем случае - нельзя. Поэтому все
рассуждения о доказательности или сходимости или конечности - неправомерны в общем случае.

Конечно можно придумать учебный пример, и "доказать" что он в конечном итоге сойдётся
или не сойдётся к ожидаемому результату за ограниченное количество проходов.

Поведение функций может усложняться внешними воздействиями, быть недетерминированным,
ожидаемого (предполагаемого) результата - может не быть, количество повторов - может быть
неограниченным (неизвестным).

По поводу входа в центр цикла? Да, может привести к ошибке. И что?
Практически любой оператор может привести к ошибке и "веселухе".

GOTO start;
WHILE any_func() DO start: any_action(); END;

// если any_action делает контекст для any_func, то так пожалуй лучше, чем

any_action(); //Если код строк 50 и не вынесен в процедуру, то дублирование.
WHILE any_func() DO any_action(); END;

Насчёт разрешить? - компилятор может распознавать такие случаи и предупреждать.
В обшем случае можно запретить вход внутрь FOR, IF, CASE, и разрешать выходы
из вложенных контрукций (можно тоже с некоторыми оганичениями - например только вперёд
за завершающий вложенные конструкции END или на помеченный RETURN).

Насчёт статьи - посмотрел. Одна мысль есть, слышал раньше.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Апрель, 2009 23:10 

Зарегистрирован: Вторник, 27 Ноябрь, 2007 20:40
Сообщения: 48
Илья Ермаков писал(а):
sia писал(а):
-- Илья, я знаю что такое обратная связь. А вы знаете?
-- Какое отношение это имеет к WHILE?

Даже в классическом школьном учебнике Кушниренко, Лебедев, Сворень "Основы информатики и ВТ" (90-й г., авторы - Мехмат МГУ) глава про WHILE называется что-то вроде "Цикл с обратной связью". И очевиднейшие примеры управления роботом.


Не имел удовольствия читать. Преподаватели часто выражаются цветасто, с расчётом на внимание.
Гипотетическим роботом можно управлять хоть чем, даже с помощью гипотетического цикла.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Апрель, 2009 23:21 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Цитата:
Говоря о циклах я имел в виду самый общий случай, безотносительно навешиваемого
или подразумеваемого контекста, то есть: WHILE any_func() DO any_action() END;
Где any_func() и any_action() - произвольные функции, которые в общем случае имеют
свой контекст, но он может быть закрыт или неизвестен. Это могут быть системные вызовы,
какие-то библиотечные функции...

Правильно, тут мы ведём речь об отличиях между вычисляющими и управляющими алгоритмами. Разница большая. Тем не менее, точно также о состоянии системы можно сделать логические суждения до, после и в течении цикла. И только на основе таких суждений можно уверенно его построить. Суждения не обязательно записывать формально - не нужно без нужды "сушить мозги", но они должны быть явно оговорены.


Цитата:
По поводу входа в центр цикла? Да, может привести к ошибке. И что?
Практически любой оператор может привести к ошибке и "веселухе".

Это не просто "может привести к ошибке", это просто не имеет смысла.

Цитата:
GOTO start;
WHILE any_func() DO start: any_action(); END;

// если any_action делает контекст для any_func, то так пожалуй лучше, чем

any_action(); //Если код строк 50 и не вынесен в процедуру, то дублирование.
WHILE any_func() DO any_action(); END;

Второй вариант правильный. Ситуация является частным случаем полного прохода:
взять_первую_ситуацию;
WHILE не_конец_процесса DO
полезное_действие;
перейти_к_следующей_ситуации
END.

Из того, что в частном случае взятие первой ситуации и переход к следующей могут совпадать, ещё не значит, что нужно пытаться это дело сокращать... По смыслу это разные действия.

Рассмотрите спецификацию поведения системы как множество допустимых цепей событий (бесконечное дерево). Затем очевидным образом повторяющиеся сектора свёртываются в WHILE-ы, а идентичные "хвосты" объединяются в один путь (переход от дерева к DAG-у, правда, с обратными дугами для WHILE-ов) (в ДРАКОНе это, конечно, повыразительнее, чем в линейном структурном пр-и). Таким образом, эти конструкции - естественны. Они возникают как "упаковка", так сказать, генератор поведения системы (цепей событий). Ваш GOTO просто не возникает. Его нет в наборе конструкций, он сам остался за бортом.
Если попробовать дополнять правила "свёртки" типа до вашего первого варианта, то это избыточная сложность. Лишний мусорный шаг как раз. С потерей ясности.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Апрель, 2009 05:39 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
2 sia:
Я мог бы поспорить с Вами по поводу WHILE и GOTO, но видя безрезультатные попытки своих более опытных коллег, решил зайти с другой стороны. Судя по Вашим сообщениям в этой ветке, я делаю осторожный вывод, что Вы новичок в программировании. Или, по крайней мере, не реализовали пока достаточно сложные проекты. Конечно, я могу ошибаться, но думаю, что в любом случае Вам интересно будет меня послушать.

Ситуация может развиваться таким образом:
1. Вы начинаете разрабатывать по настоящему крупные и сложные программные проекты, ничем не ограничивая полёт своей алгоритмической мысли.
2. Постепенно Вы сталкиваетесь с "кризисом жанра", который выражается в том, что новые ошибки появляются быстрее, чем обнаруживаются и исправляются старые.
3. Вы пытаетесь найти выход из кризиса и "открываете" для себя структурное программирование.

Вот тут СТОП. Путь, который я нарисовал, человечество уже давно прошло. Если каждый будет снова и снова наступать на одни и те же грабли, то прогресс остановится. Хотелось бы Вам посоветовать поизучать ошибки и достижения прошлых лет и учесть их когда будете выстраивать свои собственные представления о грамотной алгоритмизации. И я искренне желаю Вам в этом успехов!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Апрель, 2009 07:29 

Зарегистрирован: Воскресенье, 08 Март, 2009 17:54
Сообщения: 372
Ох уж этот могучий и не убиваемый GOTO! (Он сказал "I'll be back")
Даже если смотреть с позиций чисто практического удобства (некоторые ставят его превыше всего), и малые и большие программы легко пишутся без goto, ЛЕГКО!!! Если совсем чуть чуть напрячься, или сразу изучать и использовать правильные шаблоны и даже не знать break и continue, то и без них можно легко обойтись.

ИМХО, пока учебники, построенныех по принципу "от конструкции яззыка к задаче" будут существовать в природе, будет воскресать и Goto :(.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 58 ]  На страницу 1, 2, 3  След.

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


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

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


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

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