Около десяти лет назад на уроках программирования я знакомился со Схемой (Scheme) — диалектом Лиспа (LISP). К тому времени я уже неплохо ориентировался в C и C++, что в один прекрасный день привело меня к такой мысли: что если бы губы Никанора Ивановича да приставить к носу Ивана Кузьмича, а к синтаксической строгости Лиспа добавить объектную ориентированность Плюсов, должна получиться конфетка. Мысль сию рискнул я поведать в одной из программерских комнат какой-то IRC-сети, и в ответ был послан читать про Смолток (Smalltalk). Я до сих пор не уверен, что мне в тот момент именно Смолток мог помочь, лучше бы тогда попался в руки СИКП (SICP).
Через пару лет, уже учась в МИФИ, я вспомнил, куда меня послали, и попробовал поискать что-нибудь про этот дивный язык в университетской библиотеке. А там в те времена уже была электронная картотека с кучей полезных возможностей. Например, по запросу «Smalltalk» она мне выдала единственную книжку — «Паттерны проектирования» Банды четырёх. Тогда я ещё не знал, что это за великий труд, для меня это была единственная доступная на расстоянии нескольких минут и бесплатно книга, в аннотации к которой упоминалось, что она содержит примеры кода на Smalltalk и COBOL.
Про Смолток я из этой книги почти ничего не узнал, да и про паттерны далеко не всё понял…
…но идея о создании своего компьютерного языка жива во мне до сих пор. Несколько месяцев назад она всплыла очередной раз, когда я наткнулся на страницу «Грамотное программирование». Нет, мой Хрум пока не реализует эту концепцию, просто статья натолкнула на размышления. Размышления эти ещё долго варились в моей волосатой голове, пока, наконец, не стали кристаллизоваться в строгие грамматические конструкции.
Кристаллизации этой мощным катализатором послужила книга СИКП (Структура и интерпретация компьютерных программ). В первые же часы чтения получил ответы на пару вопросов, донимавших меня последние дни.
В общем, сегодня я допридумывал основные грамматические правила, понял, как обеспечить единообразие элементов кода с элементами данных, а присваивание выразить через подстановку, и начал писать парсер-интерпретатор. То есть я его ещё неделю назад начал, но сегодня появилось представление о том, что должно в итоге получиться.
Да, зваться он будет, как вы уже догадались, Хрумом.
Вовремя мне СИКП попалась.