DRAKON.SU

Текущее время: Среда, 03 Март, 2021 20:43

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




Начать новую тему Ответить на тему  [ Сообщений: 63 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: Суббота, 20 Февраль, 2021 05:26 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 54
Программа «ДраконКод».
Обсуждение идей участника ibnteo


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

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

Невозможно отобразить схематически switch-case без break/continue (такого кода мало, но всё же).

Невозможно организовать выход из циклов в некоторых случаях, например изнутри основного шампура if (?) {...; if(?) break;} else {...;}, аналогично с continue и return.

Циклы do-while и while можно сделать аналогично циклу for, устранив сложные для реализации запутанные алгоритмы через икону Вопрос с возвратом вверх.
Икона цикла Для взята из ГОСТ, но для циклов гораздо лучше подходят иконы из Силуэта, сам же Силуэт можно разделить на две части:
1) Разбивка длинного алгоритма на куски, для этого поднимаем лиану снизу наверх справа от шампура, при этом стрелка не нужна, циклы выглядят точно так же, как и в Силуэте, но не требуется их помечать закрашенным уголком. Местами разделения в коде могут выступать большие блоки многострочного комментария, используемые для документирования кода, они будут тогда идти сверху, описывая шампуры.
2) Если требуется логика конечного автомата со сложными переходами на разные шампуры, то делаем что-то типа такого:
Код:
int state=1; do {switch state {case 1: ...; state=2; break; case 2: ...; state=0; break;}} while (state>0);

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

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

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

Вот как могут выглядеть циклы с использованием иконы из Силуэта:
Изображение

Для возможности отобразить любой программный код придётся сделать возможность подвешивать в любом месте цикла иконы break и continue, и в любом месте кода икону return.

Так как нельзя подвесить выход на основной шампур, то для иконы if лучше использовать её инверсную форму с отметкой not на основном выходе. Использование else не предполагается, так как в нём нет смысла.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Недостатки языка
СообщениеДобавлено: Суббота, 20 Февраль, 2021 08:20 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5101
Откуда: Москва
ibnteo писал(а):
Вот как могут выглядеть ......

Вы говорите интересные вещи, но ваши предложения нуждаются в иллюстрациях (картинках).
К сожалению, в ваших сообщениях нет ни одной картинки.

Сделайте картинки в формате png и выложите их.
Они сразу будут видны всем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Недостатки языка
СообщениеДобавлено: Суббота, 20 Февраль, 2021 09:56 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1156
http://ibnteo.klava.org/drakon/not
http://ibnteo.klava.org/drakon/for


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Недостатки языка
СообщениеДобавлено: Суббота, 20 Февраль, 2021 11:04 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1096
Откуда: Россия, Чебоксары
ibnteo писал(а):
инверсную икону маркировать внизу кружком "не" из схемотехники
Предлагалось, обсуждалось, было отвергнуто Паронджановым по причине "трудности освоения языка схемотехники".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Недостатки языка
СообщениеДобавлено: Суббота, 20 Февраль, 2021 11:10 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1096
Откуда: Россия, Чебоксары
ibnteo писал(а):
Для возможности отобразить любой программный код придётся сделать возможность подвешивать в любом месте цикла иконы break и continue, и в любом месте кода икону return.
Что создаёт визуальный разрыв и, таким образом, уничтожает все плюсы, достигнутые в этом представлении алгоритма.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Недостатки языка
СообщениеДобавлено: Суббота, 20 Февраль, 2021 16:07 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 54
Alexey_Donskoy писал(а):
Что создаёт визуальный разрыв и, таким образом, уничтожает все плюсы, достигнутые в этом представлении алгоритма.


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Недостатки языка
СообщениеДобавлено: Суббота, 20 Февраль, 2021 16:14 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 54
Alexey_Donskoy писал(а):
Предлагалось, обсуждалось, было отвергнуто Паронджановым по причине "трудности освоения языка схемотехники".

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

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

Или можно выделить по-другому как-то, например стрелкой показать направление "да".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Недостатки языка
СообщениеДобавлено: Суббота, 20 Февраль, 2021 18:37 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1096
Откуда: Россия, Чебоксары
ibnteo писал(а):
Трудности всё равно появляются, тяжело читать схему на другом языке, требуется привыкать в другим "да" и "нет", в русском языке слово "нет" длиннее, боковым зрением привыкаешь его замечать по длине, а в английском уже "yes" длиннее, что может привести к ошибке при чтении схемы, причём фатальной.
Это вы не мне говорите, а Паронджанову! :)

Поищите старые темы. Всё обсуждалось много раз...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Недостатки языка
СообщениеДобавлено: Среда, 24 Февраль, 2021 06:29 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 54
Прочитал две старые темы по поводу надписей вне иконы Вопрос, нашёл такие же идеи с кружком инвертором, аргументы против тоже прочитал.

В итоге придумал новые разные иконы для Вопроса с "да" внизу, и с "да" справа, в виде указателя налево (вниз) и направо.

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


Вложения:
IMG_20210224_044513_142.jpg
IMG_20210224_044513_142.jpg [ 27.6 КБ | Просмотров: 121 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Недостатки языка
СообщениеДобавлено: Среда, 24 Февраль, 2021 14:28 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 54
Если разрешить поднимать линию наверх, то станет возможно делать ИЛИ конструкции ровными. Для скрытия того, что находится внутри if(?), можно использовать нижнюю икону, в данном случае она инверсная (смотрит вправо), так как висящий выход не может лежать на лиане, в коде это будет: if(exit) break;


Вложения:
IMG_20210224_142252_243.jpg
IMG_20210224_142252_243.jpg [ 38.62 КБ | Просмотров: 116 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Недостатки языка
СообщениеДобавлено: Среда, 24 Февраль, 2021 20:39 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1096
Откуда: Россия, Чебоксары
ibnteo писал(а):
в виде указателя налево (вниз) и направо.
Это крайне неудачное решение.
Потому что есть стрелка.
И стрелка эта показывает в никуда!
Это ступор, абсолютное непонимание и психологическое неприятие.
Кружок инверсии - пример достаточно грамотного когнитивно-эргономического решения.
Стрелка, подвешенная в пустоте - антиэргономична.

Цитата:
Ещё обнаружил, что цветовое выделение разных типов икон способствует более лёгкому их чтению
Это очевидно. Уже давно текстовые редакторы раскрашивают формальные тексты, да и средства визуального проектирования используют цвет более-менее успешно.
Однако Паронджанов и здесь был против - под предлогом необходимости ориентироваться на ПЕЧАТЬ, а она пока что чёрно-белая в массе...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Недостатки языка
СообщениеДобавлено: Среда, 24 Февраль, 2021 20:47 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1096
Откуда: Россия, Чебоксары
ibnteo писал(а):
Если разрешить поднимать линию наверх...
Во-первых, наверх - противоречит основным визуальным принципам Дракона.
Во-вторых, я так и не смог проверить правильность приведённой схемы. Что-то в ней сильно не так...
Ну, может, просто не смог себя заставить подумать.
А мы, на минуточку, говорим о создании интуитивно понятного языка, который бы однозначно воспринимался даже неподготовленным человеком...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Недостатки языка
СообщениеДобавлено: Среда, 24 Февраль, 2021 23:38 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 54
Та же формула (A and not B or C and D), стрелки указывают на ДА направление, их прекрасно видно боковым зрением, вход в икону может быть сверху или слева, выход справа и внизу.

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

Чаще всего при множественных условий в if это несколько наборов ИЛИ, в каждом наборе несколько элементов И, поэтому сдвигать каждый набор условий вниз это потребление пространства, если разрешить вход слева и поднимать лиану наверх не только в циклах, то можно экономить пространство.


Вложения:
IMG_20210224_233127_409.jpg
IMG_20210224_233127_409.jpg [ 21.46 КБ | Просмотров: 146 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Недостатки языка
СообщениеДобавлено: Четверг, 25 Февраль, 2021 00:03 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 54
Надписи вне икон это по сути пометки, можно разъяснять схему для тех, кто не умеет её читать. Можно тогда не только пояснить где "да" и "нет", но и логические формулы множества икон Вопрос, пояснить циклы, даже стрелки нарисовать для циклов, да ещё и с пояснением, где параллельное действие, пояснить это ещё и словами, и вот такие схемы будут изучаться даже без учебника.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Недостатки языка
СообщениеДобавлено: Четверг, 25 Февраль, 2021 00:25 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 54
Инверсная функция A and not B or C and D.


Вложения:
IMG_20210225_002350_621.jpg
IMG_20210225_002350_621.jpg [ 24.35 КБ | Просмотров: 144 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Недостатки языка
СообщениеДобавлено: Четверг, 25 Февраль, 2021 02:51 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 54
При возможности входа в икону слева получаем вот такие структуры if-elseif-else и switch-case, причём на схеме будет видно, если после кода в case нет break или continue, что в коде трудно заметить, а это трудноуловимая ошибка..

П.С.: если в switch нет default блока, то линия справа не нужна.


Вложения:
IMG_20210225_024328_120.jpg
IMG_20210225_024328_120.jpg [ 31.07 КБ | Просмотров: 142 ]
IMG_20210225_024241_135.jpg
IMG_20210225_024241_135.jpg [ 26.1 КБ | Просмотров: 142 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Недостатки языка
СообщениеДобавлено: Четверг, 25 Февраль, 2021 02:53 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 54
Все циклы могут выглядеть как циклы в Силуэте, выглядят они гораздо лучше стрелочных и цикла ДЛЯ, который сейчас в ДРАКОН-е (и в ГОСТ).


Вложения:
IMG_20210225_024432_251.jpg
IMG_20210225_024432_251.jpg [ 23 КБ | Просмотров: 142 ]
IMG_20210225_024406_738.jpg
IMG_20210225_024406_738.jpg [ 23.85 КБ | Просмотров: 142 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Недостатки языка
СообщениеДобавлено: Четверг, 25 Февраль, 2021 03:03 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 54
Для обработки ошибок (try-catch-finally) можно использовать вот такие иконы.

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


Вложения:
IMG_20210225_025650_021.jpg
IMG_20210225_025650_021.jpg [ 37.44 КБ | Просмотров: 142 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Недостатки языка
СообщениеДобавлено: Четверг, 25 Февраль, 2021 09:21 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5101
Откуда: Москва
ibnteo писал(а):
Для обработки ошибок (try-catch-finally) можно использовать ................

Пожалуйста, изложите ваше мнение здесь и здесь


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Недостатки языка
СообщениеДобавлено: Четверг, 25 Февраль, 2021 14:40 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 54
Владимир Паронджанов писал(а):
Пожалуйста, изложите ваше мнение здесь и здесь

Написал в этих темах.

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


Вложения:
IMG_20210225_141418_863.jpg
IMG_20210225_141418_863.jpg [ 44.9 КБ | Просмотров: 135 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 63 ]  На страницу 1, 2, 3, 4  След.

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


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

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


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

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