OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 14 Декабрь, 2017 13:04

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




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

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


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

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1427
С унаследованным кодом я матерюсь при погружении, правлю баги, но переписыванием занимаюсь только в крайнем случае.
Умение подавлять в себе перфекциониста считаю главным своим проф. достижением :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
Сообщения: 1427
ilovb писал(а):
Хотите формализм где loop + exit корректен? Так никто ведь не препятствует. :)
Только к структурному программированию это уже не имеет отношения (по определению)

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


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

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


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

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1427
А еще я возжелал 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
Сообщения: 500
Откуда: Киев
ilovb писал(а):
Прошли годы, и я теперь поддерживаю формализм loop + exit (но только один exit)
Без наличия такого цикла в языке порой просто неудобно. Т.е. тупо лень этот хвост вытаскивать из цикла.

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


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

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

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


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

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

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

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


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

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

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


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


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

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


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

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


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

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


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

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


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

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


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

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

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

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


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

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


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

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


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

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