Январь 2020 в ретроспективе
Я планирую теперь проводить небольшие регулярные ретроспективы по прочитанным книгам, личным и рабочим проектам и профессиональной деятельности вообще. Январь - лучшее время для построения воздушных замков, им и посвящается этот пост.
Околорабочее
В этом году хотелось бы вложиться больше в устройство интерпретаторов, компиляторов и баз данных с прицелом на развитие нашего небольшого движка, чего-то вроде базы данных. Проект большой, сложный, но, надеюсь, пороху у нас хватит.
Собственно, задача: предоставить упрощенный интерфейс доступа к данным для любых пользователей: программистов, пишущий запросы, аналитиков, смотрящих в какие-то свои БД и так далее. Данные должны быть свежими, данных должно быть много.
Сейчас проект это, в сущности, сильно сжатый индекс в комплекте с TCP-сервером на неблокирующих сокетах. В сервере надо уходить от лишних в аналитических запросах неблокирующих сокетов в сторону prefork-сервера в стиле HyPer, что позволит не заводить множество экземпляров серверов и повысит надежность сервера в целом.
Следующий вопрос - статичность индекса, который генерируется сейчас раз день. Я предполагаю разделить данные на горячие (обновляемые) и холодные (плотно упакованные), и на лету их перекладывать из одной подгруппы в другую.
Другой аспект - доступ к данным в БД. Сейчас каждый вид запроса пишется практически вручную на C, что занимает массу моего времени, да и неудобно страшно. Я предполагаю, что можно оставить нижележащую библиотеку на C, а логику запросов и сервер перевести на какой-нибудь чуть более гуманный язык (Go?). Естественно, надо будет переработать и сам язык запросов, и его интерпретатор. Например, в стиле модели Volcano, про которую я как-то писал на Хабре.
Чтение
Я всегда интересовался компиляторами и интерпретаторами, но последнее время - в свете гипотетического языка запросов - нырнул в эту тему совсем глубоко. Перечитал и написал кратенький обзор Lisp in Small Pieces, книги об устройстве Лиспов; пробежался по Essentials of Programming Languages;и сейчас читаю интереснейшую Compiling with Continuations Эндрю Аппеля. Ах, да, руки дошли до старой, но вдохновляющей статьи Little Languages Джона Бэнтли.
Откровенно говоря реально к делу отношение имеет только Little Languages, но остальная, более специфичная литература здорово расширяет кругозор. Тот же подход компиляции функциональных языков с продолжениями (англ. continuations) был для меня настоящим откровением.
Соответственно, эксперименты на тему языка запросов пока свелись к небольшую языку, на примере которого я разбирал прикладные вопросы интерпретатора.
Образование
В свете разработки той же нашей БД удалось в счет компании получить поездку довольно дорогие курсы по системному программированию в Мюнхен, за что ей, компании, большое спасибо. Поезду уже скоро, в феврале, обязательно напишу об этом в блог.
Кроме того в этом году хотелось бы одолеть какой-нибудь современный продвинутый курс по построению компиляторов, но это уже во второй половине года.
Такие вот планы. И вы тоже не скучайте!