Январь 2020 в ретроспективе

Я планирую теперь проводить небольшие регулярные ретроспективы по прочитанным книгам, личным и рабочим проектам и профессиональной деятельности вообще. Январь — лучшее время для построения воздушных замков, им и посвящается этот пост.

Околорабочее

В этом году хотелось бы вложиться больше в устройство интерпретаторов, компиляторов и баз данных с прицелом на развитие нашего небольшого движка, чего-то вроде базы данных. Проект большой, сложный, но, надеюсь, пороху у нас хватит.

Собственно, задача: предоставить упрощенный интерфейс доступа к данным для любых пользователей: программистов, пишущий запросы, аналитиков, смотрящих в какие-то свои БД и так далее. Данные должны быть свежими, данных должно быть много.

Сейчас проект это, в сущности, сильно сжатый индекс в комплекте с TCP-сервером на неблокирующих сокетах. В сервере надо уходить от лишних в аналитических запросах неблокирующих сокетов в сторону prefork-сервера в стиле HyPer, что позволит не заводить множество экземпляров серверов и повысит надежность сервера в целом.

Следующий вопрос — статичность индекса, который генерируется сейчас раз день. Я предполагаю разделить данные на горячие (обновляемые) и холодные (плотно упакованные), и на лету их перекладывать из одной подгруппы в другую.

Другой аспект — доступ к данным в БД. Сейчас каждый вид запроса пишется практически вручную на C, что занимает массу моего времени, да и неудобно страшно. Я предполагаю, что можно оставить нижележащую библиотеку на C, а логику запросов и сервер перевести на какой-нибудь чуть более гуманный язык (Go?). Естественно, надо будет переработать и сам язык запросов, и его интерпретатор. Например, в стиле модели Volcano, про которую я как-то писал на Хабре.

Чтение

Я всегда интересовался компиляторами и интерпретаторами, но последнее время — в свете гипотетического языка запросов — нырнул в эту тему совсем глубоко. Перечитал и написал кратенький обзор Lisp in Small Pieces, книги об устройстве Лиспов; пробежался по Essentials of Programming Languages;и сейчас читаю интереснейшую Compiling with Continuations Эндрю Аппеля. Ах, да, руки дошли до старой, но вдохновляющей статьи Little Languages Джона Бэнтли.

Откровенно говоря реально к делу отношение имеет только Little Languages, но остальная, более специфичная литература здорово расширяет кругозор. Тот же подход компиляции функциональных языков с продолжениями (англ. continuations) был для меня настоящим откровением.

Соответственно, эксперименты на тему языка запросов пока свелись к небольшую языку, на примере которого я разбирал прикладные вопросы интерпретатора.

Образование

В свете разработки той же нашей БД удалось в счет компании получить поездку довольно дорогие курсы по системному программированию в Мюнхен, за что ей, компании, большое спасибо. Поезду уже скоро, в феврале, обязательно напишу об этом в блог.

Кроме того в этом году хотелось бы одолеть какой-нибудь современный продвинутый курс по построению компиляторов, но это уже во второй половине года.

Такие вот планы. И вы тоже не скучайте!

Комментарии

Comments powered by Disqus