DRAKON.SU
https://forum.drakon.su/

О "свободе" программирования, goto и т.п.
https://forum.drakon.su/viewtopic.php?f=166&t=1645
Страница 6 из 9

Автор:  Александр Ильин [ Суббота, 13 Июнь, 2009 05:29 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

dvuugl писал(а):
...есть GOTO во всей своей варварской красе...
...вопиющим GOTO...
...GOTO... играет... роль...
...GOTO работает...
Чуть ли не дифирамбы этому скромному труженику. Мы и правда привыкли не замечать, какую важную роль играет GOTO в структурировании и восприятии информации. Например, ";" в КП - это не какой-то там "разделитель" операторов, это тоже GOTO от одного оператора к последующему. Если бы не этот скрытый GOTO, мы бы не смогли выполнить подряд несколько простейших действий, не обернув их предварительно более сложными конструкциями. Мудрые авторы ЯВУ предвидели, что нам это потребуется, и позаботились о включении этой разновидности GOTO в язык.

Автор:  dvuugl [ Суббота, 13 Июнь, 2009 10:26 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

Ну, иногда чтобы выпрямить палку её следует перегнуть в другую сторону (дифирамбы). :)

Автор:  ==== [ Суббота, 13 Июнь, 2009 13:06 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

В сообщении здесь к примеру добавлено примечание (очень важное).

Автор:  Евгений Темиргалеев [ Суббота, 13 Июнь, 2009 17:16 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

dvuugl писал(а):
Евгений Темиргалеев писал(а):
Мне кажется Вы пытаетесь противопоставить не сопоставимые вещи (визуальный ЯП и текстовый)....
Прежде всего: визуальный ЯП "против" текстовый ЯП - это ложное противопоставление, иллюзорное. Это интеллектуальная иллюзия. Происходит она из выработанного с детства автоматизма: текст мы практически уже не видим, а сразу слышим звуки речи или вообще сразу воспринимаем смысл до речевой реставрации. Реально же текст есть ВИЗУАЛЬНЫЙ набор знаков и, соответственно, есть визуальное явление...
Делаем интересный вывод: все ЯП визуальные. Можно сделать и более интересные выводы, если продолжить разбираться чем реально является визуальный набор знаков и т.д...

А речь идёт о воспринимаемом человеком смысле.

Автор:  Tomba [ Суббота, 13 Июнь, 2009 23:19 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

Геннадий Тышов писал(а):
Что такое понятность программного кода?
1. Минимум программного кода. Меньше коде - меньше в нем ошибок и меньше надо воспринимать.

- в этом случае говорим о понятности кода ДЛЯ КОГО?
возвращаясь к ранее сказанному примеру:
Код:
Если        а=2 Тогда  а=1;
ИначеЕсли  а=1 Тогда  а=2;
Иначе //некорректные входные данные
КонецЕсли;

и

Код:
а=3-а


- где понятнее и почему? понятно, что вопрос утрирован путем выдергивания именно первого правила из совокупности РЕКОМЕНДУЕМЫХ(?) примеров...?

Автор:  Евгений Темиргалеев [ Воскресенье, 14 Июнь, 2009 00:58 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

Отделены обсуждения:
- оформление кода: viewtopic.php?f=27&t=1654
- изображение исключений: viewtopic.php?f=62&t=1653

Автор:  dvuugl [ Воскресенье, 14 Июнь, 2009 14:13 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

Евгений Темиргалеев писал(а):
Делаем интересный вывод: все ЯП визуальные... А речь идёт о воспринимаемом человеком смысле.
Да, на сегодняшний день это именно так, без всякой иронии, все. Полноценное невизуальное общение с машиной, голосом например, пока только в фантастике, здесь есть только отдельные реальные программки-попытки по эффективности на стадии игрушек-демонстрашек и/или экспериментов. Материальный носитель воспринимаемого человеком смысла сейчас это либо визуальный знак либо членораздельный звук (исключая экзотические тактильные системы для слепых). Непосредственная передача в мозг совсем уж далеко. И не только все ЯП визуальные, даже вся математика визуальна. Об этом (то есть об "искусственной наглядности") есть в трудах Паронджанова. Проблема в адекватных задачам (и новым типам носителей) техниках, типах визуальности. Это и есть проблема ДРАКОНА, UML, других ВИЗУАЛЬНЫХ ФОРМ записи кода в том числе в т.н. "невизуальных" ЯП: ступеньки, пробелы, подсветка, выделение участков комментариями, блоками, деревьями (свёртка кода), поиск визуально ярких имен ключевых слов и пользовательских идентификаторов и проч., и проч.

Об иллюзии "невизуальности" текста я писал, дело здесь в звуковом опосредовании:
смысл-> звуковая речь-> её отображение в виде текста. Поэтому текст может восприниматься не изображением смысла, а изображением речи - то есть звука, то есть чем-то невизуальным. Это наследие обычной, непрограммистской письменности. ЯП стремятся исключить хотя бы этого (звукового) посредника, раз уж невозможно (пока) полностью непосредственное общение мозг-процессор. А всякое исключение посредника, если оно возможно, даёт прирост эффективности в любом деле- хоть в экономике, хоть в политике, хоть в программировании. На это исключение и работают технологии "визуализации". "Вижу- значит понимаю". Без речи.

Автор:  Евгений Темиргалеев [ Воскресенье, 14 Июнь, 2009 17:27 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

Обсуждение ДРАКОН-схем в учебниках отделено: viewtopic.php?f=62&t=1655

Автор:  Valery Solovey [ Воскресенье, 14 Июнь, 2009 23:22 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

dvuugl писал(а):
В "силуэте" же ДРАКОНА именно метка (имя ветки) и переход на неё (адрес), то есть GOTO во всей своей варварской красе... Это одно и то же явление на разных этапах (и в разных точках приложения) развития.
Явление-то может одно, но реализация заставляет к goto подходить с осторожностью.

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

Автор:  Tomba [ Понедельник, 15 Июнь, 2009 01:14 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

Valery Solovey писал(а):
Место, куда он указывает, нужно искать, что приводит к опасности потери фокуса внимания с последующим неправильным его восстановлением.

.. мдя.. ну почему вот адресацию посредством вызова процедуры - ее что, искать не надо? а потом назад возвращаться???
.. любая нормальная оболочка программирования предоставляет переход к выделенной процедуре с возможностью возврата опять на то же место, откуда "прыгнул" - нет никаких принципиальных проблем точно так же работать и с гото (когда он присутсвует в программе!).
.. мне кажется, многие тупят не падеццки и забывают для чего ИЗНАЧАЛЬНО делался комп: "куда он указывает, нужно искать," - ТУПУЮ работу по поиску пусть делает КОМП, у него это лучше получиться... сил просто уже нет.. прямо как на терминале у меня "а как я товар найду?" - а никак!!! нехрен тебе ИСКАТЬ, написано пойди в 5-ый проход, 48 ячейка - не надо строить из себя умного - сделай ножками куда написано - и все.. проблем не будет...
.. как дети, чессслово...

Автор:  Александр Ильин [ Понедельник, 15 Июнь, 2009 07:07 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

Tomba; Зарегистрирован: Ср май 27, 2009 4:41 am; Сообщения: 17 писал(а):
.. мне кажется, многие тупят не падеццки.. как дети, чессслово...
Мне кажется, совершенно очевидно, что на данном форуме собрались исключительно тупые и невежественные (если сравнивать с Вами) люди. Своими идиотскими вопросами и придирками они способны лишь вызвать Ваше крайнее раздражение в кратчайшие сроки, так ничему и не научившись и ничего не поняв. Предлагаю Вам не тратить свои нервы и время на этих простофиль, у Вас в жизни наверняка есть более интересные и продуктивные занятия.

Автор:  Иван Кузьмицкий [ Понедельник, 15 Июнь, 2009 09:03 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

Tomba писал(а):
.. мдя.. ну почему вот адресацию посредством вызова процедуры - ее что, искать не надо? а потом назад возвращаться???


Вы прикалываетесь или серьёзно?

Процедура, сказать по простонародному, есть обобщение действия. Действие - одно, выполняется в разных местах. Вызов процедуры сопровождается возвратом в точку вызова. Вызовите процедуру из 10 разных точек и она каждый раз вернётся в ту же точку. Оператор go to такое просто не даст сделать, из-за своей крайней примитивности.

Кто ж Вас на работу принимал, с такими-то познаниями...

Автор:  Tomba [ Вторник, 16 Июнь, 2009 00:41 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

Иван Кузьмицкий писал(а):
Вы прикалываетесь или серьёзно?

Цитата:
Процедура, сказать по простонародному, есть обобщение действия. Действие - одно, выполняется в разных местах. Вызов процедуры сопровождается возвратом в точку вызова. Вызовите процедуру из 10 разных точек и она каждый раз вернётся в ту же точку. Оператор go to такое просто не даст сделать, из-за своей крайней примитивности.

- как говорится: не надо лохматить бабушку. Просьба высказываться по существу: все что написали - никакого отношения к сути вопроса не имеет. Был высказан "упрек" в сторону гото, что использование гото приводит к прыжку по коду и из-за этого плохо действует на "эргономику" программы. Однако, использование гото редко приводит к прыжку на пару тысяч строк - что сплошь и рядом наблюдается при использовании процедур. Читая код, натыкаешься на адресацию к процедуре, которая по коду может быть определена очень далеко от точки "прыжка" - на десятки тысяч строк... И это никого не беспокоит... А прыжок гото на 20-30 строк - он, понимаете ли, существенно ломает восприятие программы... - Вот и весь вопрос, который обсуждался и рассуждения о возвратах и прочих - это уже продолжение дискуссии немного в новом ключе.[/quote]

Цитата:
из-за своей крайней примитивности.

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

Я успел забыть больше, чем вы знали. И на РАБОТУ берут не тех, кто обладает познаниями, а тех кто ЭФФЕКТИВНО РЕШАЕТ ПРОБЛЕМЫ.
Пока что в огромной массе ваших познаний я, например, вижу только предвзятую однобокость и махровый консерватизм в обсуждаемом вопросе.

Автор:  Tomba [ Вторник, 16 Июнь, 2009 00:48 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

Александр Ильин писал(а):
Tomba; Зарегистрирован: Ср май 27, 2009 4:41 am; Сообщения: 17 писал(а):
.. мне кажется, многие тупят не падеццки.. как дети, чессслово...
Мне кажется, совершенно очевидно, что на данном форуме собрались исключительно тупые и невежественные (если сравнивать с Вами) люди.

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

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

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

Автор:  Info21 [ Вторник, 16 Июнь, 2009 07:00 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

Tomba писал(а):
А при мнении своем я так и остался: нет никаких принципиальных запретов к использованию гото. Запрет использования гото - это как скрижали, которые бог дал Моисею...
Никак не пойму: как можно настолько не понять вот эти тексты:
http://www.inr.ac.ru/~info21/blackbox/disciplina/
чтобы вспоминать Моисея?

Может, займетесь критикой? Что там непонятно?

Автор:  Александр Ильин [ Вторник, 16 Июнь, 2009 07:33 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

Tomba писал(а):
Цитата:
Предлагаю Вам не тратить свои нервы и время на этих простофиль, у Вас в жизни наверняка есть более интересные и продуктивные занятия.
Не надо мне говорить куда мне идти и что делать и я не буду говорить кто вы такой. Не вы приглашали меня на этот форум и не вам меня отсюда выгонять.
Разве ж я Вас выгоняю? Наоборот, я вежливо предлагаю, ради Вашей же пользы.
Tomba писал(а):
А при мнении своем я так и остался: нет никаких принципиальных запретов к использованию гото. Запрет использования гото - это как скрижали, которые бог дал Моисею...
Вы так и останетесь при своём мнении, поэтому и предлагаю не тратить время впустую. : )
Tomba писал(а):
Все, впрочем, как обычно. Когда нет веских доводов - переходят на личнсоти...
Переход на личности - это совсем другое, учите матчасть. Я вообще с Вами не спорю. Если не хотите покинуть обсуждение, пожалуйста, смените тон на уважительный.

Автор:  Иван Кузьмицкий [ Вторник, 16 Июнь, 2009 10:05 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

Tomba писал(а):
- как говорится: не надо лохматить бабушку. Просьба высказываться по существу: все что написали - никакого отношения к сути вопроса не имеет. Был высказан "упрек" в сторону гото, что использование гото приводит к прыжку по коду и из-за этого плохо действует на "эргономику" программы. Однако, использование гото редко приводит к прыжку на пару тысяч строк - что сплошь и рядом наблюдается при использовании процедур. Читая код, натыкаешься на адресацию к процедуре, которая по коду может быть определена очень далеко от точки "прыжка" - на десятки тысяч строк... И это никого не беспокоит... А прыжок гото на 20-30 строк - он, понимаете ли, существенно ломает восприятие программы... - Вот и весь вопрос, который обсуждался и рассуждения о возвратах и прочих - это уже продолжение дискуссии немного в новом ключе.


У меня процедуры все близко, а которые далеко - те вообще в других модулях лежат. Бегать по процедурам приходится не так уж часто, потому что процедура - это обобщение действия, написал один раз - используешь везде. А если и надо посмотреть, то в среде есть навигатор по коду или гиперссылка на другой модуль.
Ну а из Ваших рассуждений я понял, что Вы используете процедуры точно так же, как и go to, поэтому и уточнил - сравнивать процедуры в их полноте с go to просто некорректно. Вам-то без разницы, ясен пень.

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

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

Tomba писал(а):
Я успел забыть больше, чем вы знали.
Бывает :)

Автор:  Valery Solovey [ Вторник, 16 Июнь, 2009 10:41 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

Tomba писал(а):
...вызова процедуры - ее что, искать не надо?
Во-первых, не надо, если название функции и выполняемые ею действия вменяемые (а зачастую так и есть). Во-вторых, речь была не о том.

Автор:  Владимир Паронджанов [ Вторник, 16 Июнь, 2009 12:54 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

dvuugl писал(а):
Даже соблюдая все синтаксические правила ДРАКОНА возможно составлять безобразные по критериям структурированности схемы, чему есть примеры в книгах Паронджанова.

viewtopic.php?p=30699#p30699

Уважаемый dvuugl!

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

Автор:  Alexey_Donskoy [ Вторник, 16 Июнь, 2009 13:31 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

dvuugl писал(а):
Код:
Процедура НекаяПроцедура()
   //некий код
   Если НуженВыход Тогда
      а=1;
   иначе
      //некий код
...
Вложенные Если- Иначе, особенно если их много, запутывают.

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

Каким боком проблема "структурность vs. goto" помогает или мешает решению подобных вопросов?
На мой взгляд, только таким, что иногда важный инвариант нагляднее изобразить таким способом, а иногда - этаким. От задачи зависит.

А можно ли сформулировать правила "на все случаи жизни"?

Ой, я, кажется, поставил под сомнение незыблемость тезиса о "структурности"! :o

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

Вот интересно, где именно я ошибаюсь? :) Или здесь - порог великого открытия? :D

Страница 6 из 9 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/