- PVSM.RU - https://www.pvsm.ru -
Годами люди писали программу "Hello world!" на языке Unary [1], но сегодняшнего дня появился новый односимвольный язык программирования! Односимвольный? Достойная замена Unary? Конечно! Представляю вам Single.
Single является диалектом языка Brainfuck [2]. Испытал значительное влияние языка Unary. Был придуман для сохранения идеи крайнего минимализма Unary, но при этом привносит видимую возможность самостоятельно написать легкую программу; алфавит языка состоит из одного символа ‘s’.
Символ ‘s’ является маркером для интерпретатора, что нужно выполнить команду.
Команда – определяется посредством подсчета количества символов до терминального символа ‘s’, и последующим нахождением остатка от деления на 8 этого числа символов. Остаток от деления на восемь определяет номер команды.
Как вы видите фишка стара как математика. Однако, почему это работает? Всё просто: потому как остатков от деления на 8 ровно 8 вариаций, - а это количество вариаций в точности повторяет число операторов в языке Brainfuck; Тут и полнота по Тьюрингу [3]. Для большей наглядности приведу таблицу трансляций.
|
Остаток |
Brainfuck |
Single |
|
0 |
> |
s |
|
1 |
< |
000000000s |
|
2 |
+ |
0000000000s |
|
3 |
- |
00000000000s |
|
4 |
. |
000000000000s |
|
5 |
, |
0000000000000s |
|
6 |
[ |
00000000000000s |
|
7 |
] |
000000000000000s |
Перед тем как начать восторженно писать код, разберем часть программы Hello world!
Небольшое дополнение для полноты понимания: вместо символа 0, которого здесь более, чем достаточно, может стоят абсолютно любой символ на ваше усмотрение, кроме терминально символа 's'.
Эту программу я написал ручками. Всю логику и приемы написания я показал в таблице. Сейчас на странице проекта на github [4] лежит транслятор из Brainfuck в Single. Там же есть и интерпретатор языка с примерами программ. Не торопитесь переходить по ссылке. Есть у меня еще пару советов для начинающих разработчиков на Single:
Загляните в исходник и отключите RELEASE, так будет намного проще писать код, так как вы будете видеть эквивалентный код на Brainfuck.
Учтите, что лента циклична и сильно ограничена.
Можно ли Single назвать односимвольным языком программирования по определению? Конечно! Можно ли его назвать достойной заменой Unary? Конечно! Ну, а если у вас всё еще закрадываются сомнения, то первая же программа развеет их! Но будьте осторожны, Single может отбить всякое желание писать на других языках, и вы можете потерять свою работу.
Автор: eastpris
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/razrabotka/420928
Ссылки в тексте:
[1] Unary: https://esolangs.org/wiki/Unary
[2] Brainfuck: https://ru.wikipedia.org/wiki/Brainfuck
[3] полнота по Тьюрингу: https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D0%BD%D0%BE%D1%82%D0%B0_%D0%BF%D0%BE_%D0%A2%D1%8C%D1%8E%D1%80%D0%B8%D0%BD%D0%B3%D1%83
[4] github: https://github.com/eastpriSs/Single
[5] Источник: https://habr.com/ru/articles/913340/?utm_source=habrahabr&utm_medium=rss&utm_campaign=913340
Нажмите здесь для печати.