Разработчик Муфид В.Х. представил MNM Lang — язык программирования, в котором исходный код формируется из конфет M&M’s. Проект представляет собой полноценную стековую машину (stack-machine) с компилятором и системой распознавания кода, а не просто концептуальную шутку.
Процесс ввода кода в MNM Lang выглядит следующим образом: конфеты M&M’s раскладываются на физической поверхности. Затем изображение этой раскладки захватывается камерой, и система компьютерного зрения анализирует расположение драже для трансляции их в исполняемые инструкции.
Принципы работы MNM Lang
В основе языка лежит использование шести цветовых вариаций конфет M&M’s, каждая из которых ассоциирована с определённым типом операций. Например, синие драже отвечают за управление потоком выполнения и ветвления, зелёные — за операции с памятью, а жёлтые — за математические вычисления. Остальные цвета предназначены для вспомогательных или служебных команд.
Каждая последовательность конфет, выстроенная в линию, интерпретируется как отдельная инструкция. Числовое значение кодируется количеством драже в этой последовательности. Проще говоря, чем больше конфет подряд, тем большее числовое значение они представляют.
Механизм преобразования физического кода в исполняемый
В отличие от традиционных языков, где код представлен в текстовом файле, в MNM Lang его роль выполняет фотография стола с разложенными конфетами. Далее специализированный Python-скрипт обрабатывает изображение. Он выявляет кластеры конфет, корректирует перспективные искажения снимка и преобразует пространственное расположение драже в последовательность инструкций. После этого программа запускается на исполнение. Автор отмечает, что часть метаданных, таких как разметка строк, пришлось вынести в отдельные JSON-файлы, чтобы облегчить процесс распознавания и интерпретации.
Причины популярности проекта
Проект привлёк значительное внимание в сообществах Hacker News и Reddit. Обсуждения затрагивали не только оригинальность идеи, но и практические аспекты реализации, включая точность работы системы распознавания в различных условиях освещения и потенциал масштабирования для обработки более сложных программных конструкций.
MNM Lang можно охарактеризовать как уникальное сочетание визуального предметно-ориентированного языка (DSL), интерпретатора и физического представления исходного кода. Это означает, что исходники существуют не как абстрактные данные в файле, а как материальные объекты на реальной поверхности.
Архитектурные риски
Одним из очевидных эксплуатационных рисков данной архитектуры является потенциальная возможность "случайного" исчезновения части исходного кода в процессе отладки, например, если разработчик решит съесть драже.