Курсы по системному программированию с Майклом Керриском

Всю прошлую неделю я провел в Мюнхене, на интереснейших курсах по системному программированию под Линуксом (Linux/UNIX System programming).

Приключение это далось непросто: надо было убедить начальство (Артем, огромное спасибо!) профинансировать в индивидуальном порядке недешевые занятия и поездку; дождаться самих курсов, до последнего момента остававшихся под вопросом; и, наконец, преодолеть жуткий ураган, из-за которого перелет из Лондона в Мюнхен занял два дня (вместо полутора часов). Удалось даже встретиться со старыми друзьями, с которыми довелось работать над большими вьетнамским поиском (спасибо за теплый прием, Саша!).

/images/system-programming-study.jpg

И оно стоило того. …

Книга: Compiling with Continuations

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

Один из таких выдающихся авторов — Эндрю Аппель, специалист по компиляторам в целом и компиляторам функциональных языков в частности. Его книги и ключевые научные публикации по качеству прозы — и красоте идей! — можно сравнить только с интересным романом. Книгу Modern Compiler Implementation in ML («тигровую книгу», по обложке), например, я читал раза три и, вероятно, еще не раз к ней вернусь.

Но Аппель прославился не только популярным учебником. Другая его книга, Compiling with Continuations, популяризовала и сделала стандартом в мире компиляторов функциональных языков внутреннее представление в стиле передачи продолжений (англ. continuation passing style). Ее я читал и перечитывал в последние недели.

О классике…

Книга: Essentials of Programming Languages

После прочтения Lisp in Small Pieces мне захотелось ознакомиться с другой классической книгой по языкам программирования: Essentials of Programming Languages от Даниэля Фридмана (англ. Daniel Friedman) и компании. Книга оказалась толковой, поэтому хочется хотя бы несколько слов о ней написать.

/images/book-essentials-of-programming-langs.jpg

О языках, доступно…

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

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

Планы на год…

Я, еще раз я и мой маленький Лисп

Пару недель назад я делился впечатлениями от книги Lisp in Small Pieces, посвященной всяким деталям реализации Лиспов и Схем. LiSP и Essentials of Programming Languages (обзор которой обязательно напишу чуть позже) понадобились для небольшого предметно-ориентированного языка в одной из наших специализированных баз данных.

Уже в самых ранних научных публикациях по лиспостроению было принято демонстрационные языки писать на самом Лиспе. Интерпретаторы в этом стиле называются мета-круговыми или метациркулярным (калька с англ. metacircular). Выглядят такие интерпретаторы наглядно и лаконично, так как автоматически снимаются «несущественные» вопросы вроде работы с памятью, синтаксического анализа и т. д.

Чтобы понять масштаб проблемы я набросал небольшой лисп на C, использующий точную сборку мусора и самописный парсер; на этом примере и собрал предварительную пару шишек.

Про грабли лиспописателя…