Книга: 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, использующий точную сборку мусора и самописный парсер; на этом примере и собрал предварительную пару шишек.

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

Лямбда-исчисление на пальцах

За последние месяцы перечитал несколько книг по теории языков программированию, реализации Лиспов и основам функционального программирования. В какой-то момент я понял, что некоторые базовые вещи, связанные с лямбда-исчислением\(\lambda\)-исчисление»), у меня постоянно вылетают из головы. Этим постом я постараюсь прояснить для себя и немногочисленных читателей основные идеи, на которые опирается теория функциональных языков программирования.

Лямбда-исчисление в изложении программиста…

Книга: Lisp in Small Pieces

Как и обещал, начинаю по-немногу переводить личный блог на околотехнические рельсы. И начну с впечатлений от книги Lisp in Small Pieces за авторством Кристиана Кеннека (англ. Christian Queinnec):

/images/book-lisp-in-small-pieces.jpg

Про кусочки Лиспа…

Мой 2019-ый

Год был… Длинный.

Дочка на пятом году жизни пошла в подготовительный класс английской школы. Читает по слогам на русском и уже ощутимо лучше говорит на английском — среда сказывается. Занимается плаванием со сдержанным энтузиазмом и — уже с искренним увлечением — балетом.

В среднесрочной перспективе из Лондона, кажется, мы никуда не поедем, но будем пережидать перипетии, связанные с выходом Британии из ЕС. Да и сам по себе Лондон — достаточно комфортный город, если сравнивать с другими такого же калибра мегаполисами.

Много ездили с женой по разным местам, но больше всего запомнилась поездка в Питер, первая за несколько лет. Санкт-Петербург, как водится, прекрасен, особенно летом…

Работаю я там же, в Badoo. Технически мы — часть зонтичного бренда MagicLab, куда входят еще всякие там Bumble, Lumen, Chappy и другие проекты, опирающиеся на общую инфраструктуру. Всю компанию в этом году продали за 3 миллиарда долларов американскому холдингу Blackstone, поэтому будущее выглядит несколько туманно: предстоит смена CEO и CTO компании, да и вообще не ясно, что именно собираются делать новые владельцы. Blackstone не специализируется на Интернет-проектах, их интерес лично мне не понятен.

Ну, остается только надеяться, что-нибудь да перепадет с барского стола.

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

Ах, да, за год написал еще три статьи на Хабре, сугубо технические, и еще глубже забрался в устройство компиляторов вообще, и компиляторов/интерпретаторов Лиспов в частности.

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

Если подумать, то выдался не только длинный, но и интересный год. С Новым вас годом, друзья!

Мой 2018-ый

Ох, год выдался насыщенный.

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

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

Лондон уже не кажется таким уж тусклым местом, хотя и хотелось бы почаще заезжать в Россию.

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

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

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

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

Было весело, а будет еще веселее! С Новым годом, друзья!

Мой 2017-ый

Это был неплохой, в общем-то, год!

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

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

Я пообвыкся с Лондоном и Бадуу, русско-английской компанией с офисами в Лондоне и Москве, и пару раз оказывался в российских командировках — что приятно. Завел и активно вел этот блог (35 постов!), в конце концов.

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

В качестве хобби сделал тройку любопытных (4–5 десятков звезд на Github) и бесполезных проектиков для Емакса: elfuse, toy-orgfuse, elpygen.

Словом, не скучал. С Новым годом, друзья!

Не мой город Лондон: обычный телефонный разговор

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

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

— Простите, сэр, я звоню из Верджин Медиа. Вы заказывали подключение на новый адрес?

— Да, заказывал. Мы переезжаем на новый адрес и хотели бы сохранить текущий контракт. Это, насколько понимаю, стоит фунтов двадцать?

Молчание секунд на десять, стук по клавишам. Напряженный голос:

— Простите, сэр. Вы не хотите договор, включающий кабельное телевидение на сто каналов, проводное Интернет-подключение и эксклюзивные спортивные передачи?

— Нет, спасибо. Я просто хочу тот же Интернет, с той же шириной канала и тем же договором, но на новом адресе.

Молчание, неуверенный ответ:

— Простите, сэр, но на другом адресе вы не можете использовать тот же договор, который у вас сейчас.

— Подождите! Но в договоре указано, что в пределах общего почтового кода я всегда могу осуществить перенос на новый адрес.

— Простите, сэр. То есть вы не хотите кабельное телевидение, удобное и надежное проводное подключение и спортивные передачи?

— Нет. Я переезжаю, и просто хочу сохранить текущие условия на новом месте.

Молчание. Я не уверен, что она меня поняла.

— Простите, сэр. Вы хотите сделать подключение по другому адресу?

Да, чертовски хочу!

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

Я остановился, присел на придорожную скамеечку и удивленно переспросил:

— То есть восемьдесят фунтов за простой переезд? А почему нельзя просто сохранить договор, как указано на сайте и в договоре?

— Простите, сэр, подключение стоит шестьдесят фунтов. Перенос — двадцать. Простите, сэр, почему вы не хотите телевидение?

Кажется, она читала по бумажке.

— Я вам перезвоню.

— Спасибо, сэр. — с облечением выдохнул голос.

Дома я изложил ситуацию жене, мы вместе перечитали договор — и позвонили еще раз. Другой индус легко оформил нам перенос адреса за двадцать фунтов.