Годами люди писали программу "Hello world!" на языке Unary, но сегодняшнего дня появился новый односимвольный язык программирования! Односимвольный? Достойная замена Unary? Конечно! Представляю вам Single.
О языке
Single является диалектом языка Brainfuck. Испытал значительное влияние языка Unary. Был придуман для сохранения идеи крайнего минимализма Unary, но при этом привносит видимую возможность самостоятельно написать легкую программу; алфавит языка состоит из одного символа ‘s’.
Символ ‘s’ является маркером для интерпретатора, что нужно выполнить команду.
Команда – определяется посредством подсчета количества символов до терминального символа ‘s’, и последующим нахождением остатка от деления на 8 этого числа символов. Остаток от деления на восемь определяет номер команды.
Как вы видите фишка стара как математика. Однако, почему это работает? Всё просто: потому как остатков от деления на 8 ровно 8 вариаций, - а это количество вариаций в точности повторяет число операторов в языке Brainfuck; Тут и полнота по Тьюрингу. Для большей наглядности приведу таблицу трансляций.
|
Остаток |
Brainfuck |
Single |
|
0 |
> |
s |
|
1 |
< |
000000000s |
|
2 |
+ |
0000000000s |
|
3 |
- |
00000000000s |
|
4 |
. |
000000000000s |
|
5 |
, |
0000000000000s |
|
6 |
[ |
00000000000000s |
|
7 |
] |
000000000000000s |
Пример программы
Перед тем как начать восторженно писать код, разберем часть программы Hello world!
Небольшое дополнение для полноты понимания: вместо символа 0, которого здесь более, чем достаточно, может стоят абсолютно любой символ на ваше усмотрение, кроме терминально символа 's'.
Эту программу я написал ручками. Всю логику и приемы написания я показал в таблице. Сейчас на странице проекта на github лежит транслятор из Brainfuck в Single. Там же есть и интерпретатор языка с примерами программ. Не торопитесь переходить по ссылке. Есть у меня еще пару советов для начинающих разработчиков на Single:
-
Загляните в исходник и отключите RELEASE, так будет намного проще писать код, так как вы будете видеть эквивалентный код на Brainfuck.
-
Учтите, что лента циклична и сильно ограничена.
Заключение
Можно ли Single назвать односимвольным языком программирования по определению? Конечно! Можно ли его назвать достойной заменой Unary? Конечно! Ну, а если у вас всё еще закрадываются сомнения, то первая же программа развеет их! Но будьте осторожны, Single может отбить всякое желание писать на других языках, и вы можете потерять свою работу.
Автор: eastpris
