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

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

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

Вот почему-то я практически уверен, что Степанов всё в той же категории людей, "не умеющих написать грамотно даже цикл линейного поиска" :)

Осваивать строгие техники проектирования - это ведь обычно так низко для "творческого ума свободного художника" :)

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

Илья

Цитата:
что Степанов всё в той же категории людей, "не умеющих написать грамотно даже цикл линейного поиска"


Для Степанова цикл линейного поиска, навряд ли актуальная проблема.

Вы плохо думаете о людях. Вы сами надумали повод, без основания приписали Степанову и Вы же ставите ему в вину.

Похоже, Вы не адекватный человек, зациклились на надуманном.

Степанов хорошо знаком с такой категорией людей, как Вы, он же пытался предупредить выпад в свою сторону по поводу GoTo.

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

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


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

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

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


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

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

Какое бы, не было отношение к оператору GoTo - он является фундаментальным (основополагающим) оператором в программировании.

И к этому можно относится спокойно.

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

Он не может быть фундаментальным, т.к. на уровне алгоритма - т.е. уровне системного анализа и описания поведения чего бы то ни было - его просто нет.

Соответственно, это некий "шум", "мусор" с уровня некоторых частных реализаций вычислительной техники.

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

В некоторых же случаях поведение действительно не вписывается в обычное структурное программирование. Например, требуется конечный автомат.
Но это - не goto.

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

Илья Ермаков писал(а):
Вот почему-то я практически уверен, что Степанов всё в той же категории людей, "не умеющих написать грамотно даже цикл линейного поиска" :)

Вполне возможно. Наверное, именно поэтому он и начал делать STL, что бы не писать всё время эти дурацкие бессмысленные циклы, когда можно пользоваться проверенной и отлаженной стандартной шаблонной функцией.

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

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

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

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

Илья Ермаков писал(а):
очевидно, насколько сильно народ боится собственных ошибок.
Или, попросту говоря, не умеет программировать.

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

Info21 писал(а):
Илья Ермаков писал(а):
очевидно, насколько сильно народ боится собственных ошибок.
Или, попросту говоря, не умеет программировать.

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

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

Геннадий Николаевич, Вы, если не ошибаюсь, инженер-электронщик по профилю?

Припоминаете - был такой "язык релейных схем"?
Он поддержан стандартами МЭК до сих пор; и любой пакет программирования микроконтроллеров его до сих пор поддерживает.
Просто потому, что когда-то было много старых специалистов, которым так было привычнее, и проще было терпеть этот язык релейных схем и их работу на нём, нежели пытаться передвинуть их на что-то адекватное современной технике (программируемым микроконтроллерам).
Это объективно и, в общем-то, понятно. Но разве от этого сам язык релейных схем становится мощным, современным инструментом, разве на нём кто-нибудь будет учить студентов программировать контроллеры?

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

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

Илья Ермаков писал(а):
Геннадий Николаевич, Вы, если не ошибаюсь, инженер-электронщик по профилю?
Если о себе, то за 45 лет был:
- Был на Чукотке, тогда там разница в времени была в 9 часов, и наша радиовещательная станция начинала вещание раньше всех в Союзе.
- Был инженером по наладке и испытаниям на АПЛ, тогда в городе их сдавали до 5 заказов в год. АПЛ это не космический корабль или ракета, она даже в первое плавание и погружение идет с людьми.
- Был конструктором на производстве, отпустили из конструкторов после сдачи АПЛ Акула. Здесь. Конструктор на производстве - это последнее звено в многолетней и длинной цепи главных и рядовых конструкторов до сдачи АПЛ флоту.
- Был электронщиком, обеспечивал работу 4-х комплектов ЕС ЭВМ, в частности процессоров.
- Теперь программист.

И везде требуется надежный результат.

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

Чтобы быть при деле в завтрашнем дне, надо сегодня быть востребованным и быть хорошим специалистом. У хорошего специалиста безусловно методы хороши и современны. Хороший специалист всегда развивается, этому и производство способствует, и будет готов для решения задач завтрашнего дня.

Илья, приходится здесь призывать Вас и Федора Васильевича к толерантности.

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

Геннадий Тышов писал(а):
к толерантности.
Толерантность тут ни при чем.

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

Геннадий Тышов писал(а):
У хорошего специалиста безусловно методы хороши и современны.


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

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

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

Info21 писал(а):
Геннадий Тышов писал(а):
к толерантности.
Толерантность тут ни при чем.

Илья Ермаков писал(а):
программирование без строгого проектирование циклов, например

Вы, имеете проблемы с преподаванием студентам темы цикла.

Ну зачем без основания навешивать ярлыки остальным окружающим?
Здесь Степанову без основания предъявляются претензии - "не умеющих написать грамотно даже цикл линейного поиска" :)
Поводом послужило заявление Степанова "goto - красивый оператор", при этом Степанов сказал, что это его убеждение, а не желание говорить дерзость. Отсюда видно, что он остерегается таких воинствующих противников "goto".

Вполне можно не знать шаблона цикла линейного поиска, при необходимости составляется алгоритм и реализуется программно.

У Вас, как у преподавателей студентам программирования, на первом месте стоит программирование, а алгоритмизация игнорируется. Отсюда алгоритмизация подменяется шаблонами, паттернами, и как следствие студент не может перейти от проблемной цели к программной реализации. Кроме того, умение алгоритмизации - это общая культура человека, его готовность к деятельности, самоорганизованности. Ваше игнорирование алгоритмизации лишает студента на начальном этапе обучения выработке важнейшего навыка, снижает его способности к самообразованию, к исследовательской работе.

Автор:  Илья Ермаков [ Воскресенье, 01 Август, 2010 10:37 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

Дальнейшее обсуждение отделено:
"Снова о важности базовых техник"
viewtopic.php?f=7&t=2762

Автор:  Владислав Жаринов [ Понедельник, 02 Август, 2010 04:29 ]
Заголовок сообщения:  goto - противоречит ли структурной алгоритмизации?

По поводу этой дискуссии:
Илья Ермаков в viewtopic.php?p=49988#p49988 писал(а):
Я хорошо знаю главное детище Степанова - STL, чтобы делать выводы о его складе как программиста.
Достаточно ясно, что он из категории убеждённых, что "программисту можно всё", и что "сила интеллекта" переломит любые законы объективной реальности.

Геннадий Тышов писал(а):
Какое бы, не было отношение к оператору GoTo - он является фундаментальным (основополагающим) оператором в программировании.
И к этому можно относится спокойно.

Илья Ермаков в viewtopic.php?p=49992#p49992 писал(а):
Он не может быть фундаментальным, т.к. на уровне алгоритма - т.е. уровне системного анализа и описания поведения чего бы то ни было - его просто нет.
Соответственно, это некий "шум", "мусор" с уровня некоторых частных реализаций вычислительной техники.

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

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

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

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

Автор:  dvuugl [ Понедельник, 02 Август, 2010 11:00 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

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

Автор:  Илья Ермаков [ Понедельник, 02 Август, 2010 11:23 ]
Заголовок сообщения:  Re: О "свободе" программирования, goto и т.п.

Вы говорите не о GOTO, а понятиях индукции и рекурсии.
Которые соответствуют конструкциям либо функционально выраженным, либо циклам.

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