OberonCore

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

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




Начать новую тему Ответить на тему  [ Сообщений: 259 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13  След.
Автор Сообщение
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 17:34 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
ilovb писал(а):
Лично я предпочитаю иметь контроль сразу.
...
Кроме случая, когда приходится работать с унаследованным кодом. :wink:
В остальном солидарен с Вами.


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

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
С унаследованным кодом я матерюсь при погружении, правлю баги, но переписыванием занимаюсь только в крайнем случае.
Умение подавлять в себе перфекциониста считаю главным своим проф. достижением :D
Единственное, что так и не смог побороть в себе - это щепетильность в отношении оформления кода. Например, в 1С принято ключевые слова писать с большой буквы:
Код:
Пока ... Цикл
...
КонецЦикла;

И если я вижу такое:
Код:
Пока ... цикл
...
КонецЦикла;

у меня начинает дергаться глаз :D


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

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Да, перфекционизм - это страшная вещь. По себе знаю. :)
Это другая крайность философии "Работает - не лезь!". А все крайности вредны (может за редким исключением).


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

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Валерий Лаптев в viewtopic.php?p=84370#p84370 писал(а):
Наваяли... :)
Ветка-то - о школьном обучении.
Поэтому пока резюме такое.
Начинающих шахматистов учат, что конь на краю доски - плохо.
И это так и есть на самом деле.
Но гроссмейстеры запросто ставят коня на край доски.
Гроссмейстеры знают, когда это не только не плохо, но и очень хорошо!
...
Вот примерно об этом, думается, подкину одну штуку. В "Кроликах и удавах" у Фазиля Искандера был такой эпизод перевыборов руководителя кроликов (забыл уж, как он там титуловался :)) в ситуации... скажем так, неустойчивости общественного мнения. Если кто помнит, действующий руководитель придумал провести перед голосованием традиционную у них там "производственную гимнастику". В результате паттерн ситуации в той форме записи, какую принял Борис, получился такой (операторы пишу примерно как в SL, только с обратным, "уставным", порядком имён объекта и действия):
кодер писал(а):
    Кролики сесть;
    1{Кролики встать; Кролики сесть;}n
    Кролики голосовать (*При голосовании у кроликов принято, что встать - это "за", сидеть - "против".*)
- ну и читателю не нужно объяснять, что получилось (или нужно?)... :wink:
Ну, понятно, что расчёт у "социального программного инженера" был на психологическую инерцию. Правда, это можно описать и без всякой психологии, полагаю - в терминах самообучающихся автоматов "с памятью на один ход" (прям как в стратегии кодинга на одном известном языке в одной известной среде :wink:). В данном случае ход - это одна повторяющаяся цепочка операторов, и наш автомат умеет только выделять её за число ходов m<<n и далее выполнять ожидаемый оператор по началу его кода (голосового в данном случае), пока не столкнётся с изменением, после чего начинает обучаться заново.
Цель всей конструкции - подменить в коде на (n+1)-м ходу второй оператор в цепочке, чтобы с учётом свойств исполнителя возникла новая интерпретация реального исполнения.
Но. Паттерн можно записать и так:
Код:
1{Кролики сесть; Кролики встать;}n
Кролики сесть;
Кролики голосовать
- и здесь порядки и в теле цикла, и в конструкции уже другие. А цель-то та же самая... Только достигается уже другой структурой управления...
Это к тому, что как раз рассуждения Бориса:
ilovb в viewtopic.php?p=84262#p84262 писал(а):
...
А у меня вся соль в том, что нет по сути никаких управляющих конструкций. Есть только последовательности, с которыми связанны охранники (всегда) viewtopic.php?f=88&t=2008&start=40#p84045

Программа это:
Sequence = Operation; {Sequence}

С каждой Sequence связаны охранники.
PrimaryGuard = [True | Condition]
SecondaryGuard = [False | Condition]

Охранники - это не управляющие конструкции.

Скорее это свойство самих Sequence.

Еще раз внимательно:
Цитата:
С каждой Sequence связаны охранники.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 14 Сентябрь, 2017 22:06 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
ilovb писал(а):
Хотите формализм где loop + exit корректен? Так никто ведь не препятствует. :)
Только к структурному программированию это уже не имеет отношения (по определению)

ps Можете попробовать изобрести "Структурное программирование 2" с бряком и свистульками. :wink:


Прошли годы, и я теперь поддерживаю формализм loop + exit (но только один exit)
Без наличия такого цикла в языке порой просто неудобно. Т.е. тупо лень этот хвост вытаскивать из цикла.
И к такому формализму в общем то довольно легко привыкнуть и распознавать его без напряга.
Но только не в языке для обучения!
В профессиональном инструменте, имхо, должно быть обязательно

зы Ну и наличие такого формализма делает цикл дейкстры в языке лишним


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 14 Сентябрь, 2017 23:36 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
А еще я возжелал CASE с общей частью для нескольких веток

CASE x OF
| 1 : print("1");
| 2 : print("2");
| 3 : print("3");
THEN print("mm")
| 0: print("zero")
END

Т.е. после нескольких идущих подряд веток может быть THEN в котором общий код для всех этих веток.

Это на замену:
CASE x OF
| 1 : print("1"); print("mm");
| 2 : print("2"); print("mm");
| 3 : print("3"); print("mm");
| 0: print("zero")
END


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 14 Сентябрь, 2017 23:40 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
ilovb писал(а):
Прошли годы, и я теперь поддерживаю формализм loop + exit (но только один exit)
Без наличия такого цикла в языке порой просто неудобно. Т.е. тупо лень этот хвост вытаскивать из цикла.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 14 Сентябрь, 2017 23:42 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
ilovb писал(а):
А еще я возжелал CASE с общей частью для нескольких веток

Опять-таки, сколько случаев это покрывает? А вот напрягает сразу.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 14 Сентябрь, 2017 23:48 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Мало. Примерно 0.1 % от всего кода (от фонаря цифер).
Но лично мне с годами все больше и больше лень писать код.
Хочется писать покороче и без дублирования. На правки дублей опять же нужно мозгоресурсы тратить чтоб не ошибиться.

Я не хочу думать о кодировании. Язык программирования - это хрень, которая больше всего мешает этому самому программированию. Дико раздражает, когда не можешь выразить мысль прямо, без конвертации в примитивы.
Понятно, что весь процесс программирования в этом и заключается. Но слишком простые примитивы тоже выматывают.

Я даже больше скажу. Я хочу не THEN, а BEFORE и AFTER ))


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 14 Сентябрь, 2017 23:54 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Comdiv писал(а):
ilovb писал(а):
Прошли годы, и я теперь поддерживаю формализм loop + exit (но только один exit)
Без наличия такого цикла в языке порой просто неудобно. Т.е. тупо лень этот хвост вытаскивать из цикла.

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


Вы правы. Я не спорю, что оно плохо. Но допускаю. По пятницам вечером можно пару бутылочек ;)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 15 Сентябрь, 2017 08:22 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Если структурное программирование представить как стандартный кирпич, то всякие удобства для разных частных случаев можно представить как кирпичи странной формы, например такие:
Вложение:
3[1].jpg
3[1].jpg [ 32.92 КБ | Просмотров: 12890 ]


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

Зарегистрирован: Вторник, 27 Май, 2008 13:24
Сообщения: 30
Это как раз пример структурности. LEGO - набор структурных элементов. В частности такие кирпичи позволяли бы обходиться без связующего раствора. Неструктурно строительство шалаша в лесу всякий раз из того что подвернулось. Неструктурны только дикорастущие, естественные языки. Все языки программирования структурны и как следствие всё программирование тоже. Противоречия структурность - неструктурность в программировании не существует. Существует процесс разработки и оптимизации структур.


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

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Строительство шалаша -- это создание структуры.


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

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
ilovb писал(а):
Прошли годы, и я теперь поддерживаю формализм loop + exit (но только один exit)


Оставлю тут ссылку-первоисточник про формализм: viewtopic.php?p=57745

Это для тех, кто не в теме и кому лень копать историю вопроса.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Сентябрь, 2017 08:50 

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 563
Откуда: Москва
ilovb писал(а):
Оставлю тут ссылку-первоисточник про формализм: viewtopic.php?p=57745

Там первый пост правильный, но малополезный.
Рассматриваются циклы, у которых есть выход из середины, но нет условия в первой строчке, т.е.
Код:
while true
...

Гораздо чаще бывает условие в начале, и выход из середины нужен.
Этот случай рассматривается в другом месте.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 08 Июль, 2019 23:21 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Прошло еще немного времени. Довелось пообсуждать goto в проф. сообществе.

Удивительный парадокс заключается в том что все против goto но на поверку никто не знает почему вообще goto запрещался.
Одни мифы и легенды.
Обычный ответ на просьбу объяснить что не так с goto: "Слышал где-то от кого-то что это плохо и программы становятся запутанными."

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

Ну а положа руку на сердце: http://hosting.vspu.ac.ru/~chul/dijkstra/goto/goto.htm
Разве это не хрень? Если бы я не знал подоплеки, то не понял бы в этой статье ни слова. Шизофазия какая-то.
И ведь "Дисциплина" тоже далеко не легкое чтение. Там очень своеобразная подача. Сильно далекая от того, что понятно современному программисту. И ссылаться на эту литературу просто неприлично. Это китайская грамота.

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

Размышляя над тем, как мне обосновывают нужность этих самых бряков... я понимаю что опытные программера в общем то мыслят формализмом "формализм loop + exit", даже не зная о нем. Да и сам я его легко воспринимаю.
Тут есть тонкость, что это зависит от опыта кодера. Начинающий скорее всего напишет непонятную лапшу. А опытный расставляет бряки так, что общая логика вполне ясна. И на поверку этот опытный программер скорее всего легко перепишет это без бряков.
А вот начинающий пишет непонятную хрень в любом случае. Хоть с бряками, хоть без.
Получается как бы что "разруха в головах", а бряк вообще ни при чем.

Но меня больше всего озадачило то, что эти же программера категорически против goto.
И тут я задумался, а ведь Дейкстра существовал в совершенно другой реальности.
Вы только вдумайтесь, 1968 год! Да человечество в целом еще только начинало осваивать программирование.
Алгол появился всего за 10 лет до этого. Еще не были наработаны практики. Программирование было в самом начале пути.
Никто нифига не понимал. Конечно программеры писали с goto, так как тупо негде было узнать как писать.
Не у кого подсмотреть, перенять опыт. Да это даже было до интернета. Сейчас просто невозможно представить себе ту реальность.
Статья Дейкстры просто не могла не появиться.

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

Ну а дальше внезапный вывод. Вот мы тут обсуждали годами что писать да как. Как вывернуться чтобы было без goto, но при этом красиво.
Выдумывали формализмы и конструкции чтобы было удобно, но без goto.
А по факту я внезапно осознал, что идеалом для меня был бы Oberon 07 + goto.
Это решение совершенно всех проблем и к языку в плане структур управления ничего добавлять больше не надо.
Не нужны ни бряки ни контины, ни циклы дейкстры, ни циклы пауки.
goto - это то самое make it simple.
Я осознал что именно хотел донести до нас Роберту, когда неожиданно для всех добавил goto в Lua.
Это же идеальная минималистичная фича языка для опытного программиста.

goto конечно имеется ввиду культурный. Ну т.е. без прыжков внутрь циклов и подобного.

И, следите за руками: Для обучения мы можем превратить язык в структурный, просто запретив обучаемым всего один оператор.

Вот такое вот грехопадение.

ps Хоспади, какие ужасные тексты я пишу. Меня тоже тошнит, мужики.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 08 Июль, 2019 23:55 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Чур меня! Чур!
(истово крестится, пятится к выходу)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 09 Июль, 2019 00:00 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
:D

Внезапно? Да я сам в шоке от того как у меня крыша течет :lol:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 09 Июль, 2019 00:51 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Тут конечно нужно учитывать что я могу набежать еще через пару лет и сказать что передумал.
Хз, непостоянный я.

Но если у кого-то похожая форма шизофрении, то выскажитесь, плиз. Я хоть буду знать что не один.
Интеллектуальное одиночество пипец неприятная штука. Сложно поймать момент когда ты уже окончательно рехнулся.


ps Вот употребляю слово "шизофрения" к месту и не к месту. Людей тут шизиками обзываю. И при этом ведь вообще без понятия в чем болезнь заключается...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 09 Июль, 2019 07:09 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
На мой взгляд, continue - вредный оператор. Я запрещаю его писать студентам.
break - нормальный.
goto - тоже нормальный, если следовать некоторой определенной дисциплине.


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

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


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

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


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

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