Программист Mufeed VH сделал то, о чём никто не просил, и выкатил MNM Lang — язык программирования, в котором код выкладывается из конфет M&M’s. Проект — не шутка, а полноценная stack-machine с компилятором и системой распознавания кода.
Исходники раскладываются на столе. Камера фотографирует конфеты, после чего компьютерное зрение распознаёт их расположение и исполняет программу.
Как работает язык на M&M’s
В языке используется 6 цветов конфет, каждый отвечает за тип операций:
- синий — управление потоком и ветвления;
- зелёный — работа с памятью;
- жёлтый — математические операции;
- остальные цвета используются для служебных команд.
Каждая линия из конфет — отдельная инструкция, а значения кодируются количеством драже.
Как код попадает в компьютер
Вместо текстового файла — фотография стола. Дальше Python-скрипт находит кластеры конфет, исправляет перспективные искажения, переводит расположение драже в инструкции и запускает программу. Сам автор честно признаётся, что часть метаданных пришлось вынести в отдельные JSON-файлы — например, разметку строк.
Почему проект стал популярным
Проект разлетелся по Hacker News и Reddit. Люди обсуждают не только идею, но и детали реализации: как точно работает распознавание, насколько стабильно при разном освещении, можно ли масштабировать на более сложные программы.
По сути это одновременно визуальный DSL, интерпретатор и физическое представление исходного кода — всё в одном. Исходники существуют не в файле, а на столе.
Главная проблема архитектуры
У языка есть один очевидный риск — во время дебага часть исходного кода может быть случайно съедена.
