Продолжение формализации. Некоторые идеи #2
Запись от CoderHuligan размещена 03.04.2020 в 14:32
Показов 18202
Комментарии 221
|
(Добавлено позднее: это конечно заблуждение, но оно интересно с точки зрения фантазии...) Кстати, о птичках (не так сложно написать компилятор, как формализовать ЯП без сайд эффектов )Если не отказываться от стека (пусть даже виртуального), а все же оставить некую общую структуру для передачи данных, то можно сделать вот что. Можно обратную польскую запись, как бы это мягче выразиться.. - даже не "выровнять", а обратить любое выражение в последовательность элементарных инструкций, как это было описано в предыдущем посте данного блога, но гораздо проще. Что предлагается? А вот что: Итак: 1) у нас есть, допустим стек; 2) но мы не хотим использовать сложные вложенные выражения со скобками, которые трудно разбирать; 3) использовать старшинство операций по умолчанию(источник ошибок); 4) нас тошнит от синтаксиса Forth; 5) мы хотим все сделать "по компьютерному" а не по.... Чтобы не ходить далеко, начнем сразу с примера: Допустим у нас есть классическое инфиксное выражение (для домохозяек ):
Теперь у нас имеются кроме бинарных и "унарные" операции. Использую термин "унарные" только в данном контексте и прошу не путать их с унарными в обычном. Запишем вышеприведенное выражение таким образом (сразу предупреждаю, что это НЕ префиксная и НЕ постфиксная запись!!!):
Теперь, что же мы получили в итоге? Мы, внимание, - выровняли выражение, и привели его к естественным последовательностям инструкций! Это значит, что теперь это выражение стало совершенно естественным, так как его нужно читать слева направо до самого конца, чтобы его понять, как читаем мы обычные тексты. Нам не нужно прыгать по выражению в поисках первой операции по старшинству. Также мы избавились от лишних промежуточных переменных (как это было в прошлом посте), коих просто нет. Обозначение и лексическое отделение бинарных операций от унарных требует своей проработки. например, унарную операцию "+" можно представить бинарной при помощи ключевого слова "ADD": ADD 3 в. Или использовать односимвольное обозначение. Более того, такую запись возможно сжимать убирая пробелы между операциями:
Более полная проработка данной идеи будет, надеюсь, позднее. Мы привели Forth к нормальному человеческому виду при этом оставив его простоту.. А теперь пойдем дальше и... приготовьтесь.. избавимся и от "бинарных" операций! Преобразуем наше выражение 3 + 4 × (2 − 1) в:
(В выражении a > b, "a" кладется на стек, а оператор > снимает значение переменной со стека сравнивает это значение с "b") Логическое выражение:
Заметьте: длина нашего выражения не длиннее обычного, куда-то испарились все приоритеты, а читать стало намного приятнее! Еще это позволяет почти один в один транслировать выражение в байт код виртуальной машины, надеюсь преимущества тут совершенно очевидны: высокая скорость трансляции. Предлагаю назвать такой способ записи выражений "прямым", хотя предлагайте свои варианты наименования. Прошу не судить строго. Я пока нахожусь в поиске. Спасибо за внимание. | |||||||||||||||||||||||||||||||||||||||||||||
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 221
Комментарии
-
Где были личности? НИКОГДА не обсуждаю: цвет кожи, вероисповедание, вкус еды и прочие пристрастия.
Только профильные навыки и только в практическом ключе.
На профильном форуме с названием "Форум программистов и сисадминов Киберфорум"
очевидно обсуждаются соотв. технические вопросы. И словесный формат общения подразумевает
аргументы, построенные на фактах. Аргументы не построенные ни на чём он не подразумевает
и это отражено в правилах в пункте 5.22, за которым следят люди, которым доверили это дело.
И что мы видим. Когда пытаюсь прояснить ситуацию, в целях понять профессиональную
принадлежность(ведь речь зашла о практических навыках) людей к обсуждаемым вопросам. Это
вдруг начинает считаться личным оскорблением. Т.е. писать программы, знать свою профессию - это
личное оскорбление?
Правильно понимаю, что теперь, с данного момента можно НИЧЕГО НИКОМУ не показывать и
выдвигать любые, ничем не подкреплённые тезисы и аргументы в формате "то, что тут сказано - ложь"?
И на основании этого можно "обнулять" любые аргументы и тезисы любой персоны на этом форуме?
При этом к персоне это не будет иметь никакого отношения? Т.е. я всё правильно понял?
Проясните обстановку на международной площадке, уважаемые администраторы, модераторы и все
кому доверили этим заниматься.Запись от Quiet Snow размещена 19.04.2020 в 15:26

)
):

