На Хабре встречаю уже не первую восторженную статью о чудесной программе, которую написал крёстный отец искусственного интеллекта Андрей Карпаты. Полноценная языковая модель в 240 строках на Python без импорта каких-либо новомодных библиотек.
Конечно же, эта программа не способна пересказать «Войну и мир» в 5000 знаках или нарисовать инфографику к финансовому отчёту компании. Она просто берёт список имён, анализирует его и начинает генерировать новые имена — несуществующие, но правдоподобно звучащие.
Чтобы написать такую программу, надо быть уникальным экспертом в своей области. С одной стороны — ничего лишнего. С другой — все механизмы в наличии: токенизация, обучение нейросети с обратным распространением ошибок, генерация новых текстов...
Прочитав статью и посмотрев код, я задумался, а можно ли написать СУБД такого размера? Как-никак, я тоже считаю себя экспертом! До профессора Даниэля Абади мне, конечно, далеко, поэтому можно и 300 строк, но всё же — как?
Ну, во-первых, полноценная конкурентная работа без синхронизации между потоками невозможна, поэтому оставляем сериализацию в потоке, т. е. во всей системе только один поток может менять данные. Во-вторых, LSM-дерево без полноценной многопоточности вообще не работает, да и B-дерево — тоже нетривиальная конструкция, поэтому пусть система хранит данные в памяти. В-третьих, уместить в сотню строк компилятор SQL — тоже, мягко говоря, непросто, поэтому пусть будет какой-нибудь простой протокол доступа. Да хоть «ключ—значение» в соответствии с JSR-107.
В общем, после всех этих оптимизаций и допущений получается... Redis! Первая версия которого занимала как раз 319 строк. Не на Python, а на Tcl, — ну так что было, на том и писали...