Годами люди писали программу «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 может отбить всякое желание писать на других языках, и вы можете потерять свою работу.
Комментарии (5)
gravicappa
27.05.2025 16:09Для придания завершённости идее осталось написать осмысленную программу на single, являющуюся осмысленным англоязычным текстом.
nv13
27.05.2025 16:09А почему 1 это 000000000s а не 0s или не 00000000000000000s? Чтобы за.. устать, но не слишком?)
Apoheliy
27.05.2025 16:09Ну, если уж следовать "[мар|сарк]азму", то есть пара вопросов к новому языку:
как предполагается мёрджить изменения из разных веток. Т.е. Вася Пупкин в условном git-е сделал бранч и добавил функционал. И Маша Старцева тоже сделала свою ветку (задача сама себя не сделает, так ведь?) и также добавила функционал. Как это мёрджить? Как минимум нужен либо плагин, который выравнивает куски кода, либо делать разбиение на строки. Но тогда нужен какой-то стайлгайд! Не думали об этом?
Как предполагается вести отладку работающей программы? Отладчик не планируете создать?
kipar
Если для написания программы нужно использовать не только s, но и 0, то не получается ли у нас двухсимвольный язык программирования?
RodionGork
да, и этим он резко отличается от упомянутого Unary. а уж двухсимвольных языков можно придумать произвольное количество...