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

Программа «ДраконКод». Обсуждение идей участника ibnteo
https://forum.drakon.su/viewtopic.php?f=62&t=6996
Страница 1 из 10

Автор:  ibnteo [ Суббота, 20 Февраль, 2021 05:26 ]
Заголовок сообщения:  Программа «ДраконКод». Обсуждение идей участника ibnteo

Программа «ДраконКод».
Обсуждение идей участника 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 не предполагается, так как в нём нет смысла.

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

ibnteo писал(а):
Вот как могут выглядеть ......

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

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

Автор:  LKom [ Суббота, 20 Февраль, 2021 09:56 ]
Заголовок сообщения:  Re: Недостатки языка

http://ibnteo.klava.org/drakon/not
http://ibnteo.klava.org/drakon/for

Автор:  Alexey_Donskoy [ Суббота, 20 Февраль, 2021 11:04 ]
Заголовок сообщения:  Re: Недостатки языка

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

Автор:  Alexey_Donskoy [ Суббота, 20 Февраль, 2021 11:10 ]
Заголовок сообщения:  Re: Недостатки языка

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

Автор:  ibnteo [ Суббота, 20 Февраль, 2021 16:07 ]
Заголовок сообщения:  Re: Недостатки языка

Alexey_Donskoy писал(а):
Что создаёт визуальный разрыв и, таким образом, уничтожает все плюсы, достигнутые в этом представлении алгоритма.


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

Автор:  ibnteo [ Суббота, 20 Февраль, 2021 16:14 ]
Заголовок сообщения:  Re: Недостатки языка

Alexey_Donskoy писал(а):
Предлагалось, обсуждалось, было отвергнуто Паронджановым по причине "трудности освоения языка схемотехники".

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

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

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

Автор:  Alexey_Donskoy [ Суббота, 20 Февраль, 2021 18:37 ]
Заголовок сообщения:  Re: Недостатки языка

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

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

Автор:  ibnteo [ Среда, 24 Февраль, 2021 06:29 ]
Заголовок сообщения:  Re: Недостатки языка

Прочитал две старые темы по поводу надписей вне иконы Вопрос, нашёл такие же идеи с кружком инвертором, аргументы против тоже прочитал.

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

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

Вложения:
IMG_20210224_044513_142.jpg
IMG_20210224_044513_142.jpg [ 27.6 КБ | Просмотров: 6985 ]

Автор:  ibnteo [ Среда, 24 Февраль, 2021 14:28 ]
Заголовок сообщения:  Re: Недостатки языка

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

Вложения:
IMG_20210224_142252_243.jpg
IMG_20210224_142252_243.jpg [ 38.62 КБ | Просмотров: 6980 ]

Автор:  Alexey_Donskoy [ Среда, 24 Февраль, 2021 20:39 ]
Заголовок сообщения:  Re: Недостатки языка

ibnteo писал(а):
в виде указателя налево (вниз) и направо.
Это крайне неудачное решение.
Потому что есть стрелка.
И стрелка эта показывает в никуда!
Это ступор, абсолютное непонимание и психологическое неприятие.
Кружок инверсии - пример достаточно грамотного когнитивно-эргономического решения.
Стрелка, подвешенная в пустоте - антиэргономична.

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

Автор:  Alexey_Donskoy [ Среда, 24 Февраль, 2021 20:47 ]
Заголовок сообщения:  Re: Недостатки языка

ibnteo писал(а):
Если разрешить поднимать линию наверх...
Во-первых, наверх - противоречит основным визуальным принципам Дракона.
Во-вторых, я так и не смог проверить правильность приведённой схемы. Что-то в ней сильно не так...
Ну, может, просто не смог себя заставить подумать.
А мы, на минуточку, говорим о создании интуитивно понятного языка, который бы однозначно воспринимался даже неподготовленным человеком...

Автор:  ibnteo [ Среда, 24 Февраль, 2021 23:38 ]
Заголовок сообщения:  Re: Недостатки языка

Та же формула (A and not B or C and D), стрелки указывают на ДА направление, их прекрасно видно боковым зрением, вход в икону может быть сверху или слева, выход справа и внизу.

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

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

Вложения:
IMG_20210224_233127_409.jpg
IMG_20210224_233127_409.jpg [ 21.46 КБ | Просмотров: 7010 ]

Автор:  ibnteo [ Четверг, 25 Февраль, 2021 00:03 ]
Заголовок сообщения:  Re: Недостатки языка

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

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

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

Автор:  ibnteo [ Четверг, 25 Февраль, 2021 00:25 ]
Заголовок сообщения:  Re: Недостатки языка

Инверсная функция A and not B or C and D.

Вложения:
IMG_20210225_002350_621.jpg
IMG_20210225_002350_621.jpg [ 24.35 КБ | Просмотров: 7008 ]

Автор:  ibnteo [ Четверг, 25 Февраль, 2021 02:51 ]
Заголовок сообщения:  Re: Недостатки языка

При возможности входа в икону слева получаем вот такие структуры if-elseif-else и switch-case, причём на схеме будет видно, если после кода в case нет break или continue, что в коде трудно заметить, а это трудноуловимая ошибка..

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

Вложения:
IMG_20210225_024328_120.jpg
IMG_20210225_024328_120.jpg [ 31.07 КБ | Просмотров: 7006 ]
IMG_20210225_024241_135.jpg
IMG_20210225_024241_135.jpg [ 26.1 КБ | Просмотров: 7006 ]

Автор:  ibnteo [ Четверг, 25 Февраль, 2021 02:53 ]
Заголовок сообщения:  Re: Недостатки языка

Все циклы могут выглядеть как циклы в Силуэте, выглядят они гораздо лучше стрелочных и цикла ДЛЯ, который сейчас в ДРАКОН-е (и в ГОСТ).

Вложения:
IMG_20210225_024432_251.jpg
IMG_20210225_024432_251.jpg [ 23 КБ | Просмотров: 7006 ]
IMG_20210225_024406_738.jpg
IMG_20210225_024406_738.jpg [ 23.85 КБ | Просмотров: 7006 ]

Автор:  ibnteo [ Четверг, 25 Февраль, 2021 03:03 ]
Заголовок сообщения:  Re: Недостатки языка

Для обработки ошибок (try-catch-finally) можно использовать вот такие иконы.

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

Вложения:
IMG_20210225_025650_021.jpg
IMG_20210225_025650_021.jpg [ 37.44 КБ | Просмотров: 7006 ]

Автор:  Владимир Паронджанов [ Четверг, 25 Февраль, 2021 09:21 ]
Заголовок сообщения:  Re: Недостатки языка

ibnteo писал(а):
Для обработки ошибок (try-catch-finally) можно использовать ................

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

Автор:  ibnteo [ Четверг, 25 Февраль, 2021 14:40 ]
Заголовок сообщения:  Re: Недостатки языка

Владимир Паронджанов писал(а):
Пожалуйста, изложите ваше мнение здесь и здесь

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

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

Вложения:
IMG_20210225_141418_863.jpg
IMG_20210225_141418_863.jpg [ 44.9 КБ | Просмотров: 6999 ]

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