European Lisp Symposium 2017
Apr. 4th, 2017 09:59 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Выбрался на еще одну конференцию. На попсу я просто перестал ходить, т.к. совершенно это неинтересно, поехал сюда. Получилось интересно, составил мнение о лисп тусовке, она оказалась такой компактной, что все самые заметные люди уже давно друг друга знают не просто в лицо и все они оказались вместе в одном зале и братались при встрече (а как сказал организатор, одни и те же люди гоняют сюда все десять лет), что я почувствовал себя на встрече старых друзей.
Вот выжимка про доклады:
День 1
1) Identity in a World of Values, Hans Hübner
Доклад был больше интересен подходом, где по факту Ганс показал, как можно перегрузить операции в clojure так, чтобы организовать транзакции над ними так, чтобы код по виду не сильно отличался от обычного, запилил прототип для этого, то же самое когда-то делал для common lisp
2) Programmatic Manipulation of Common Lisp Type Specifiers, Jim NewtonDidier VernaMaximilien Colange
Интересный доклад, про сложные типы и оптимизацию кода, который их вычисляет. Сложный тип - это, например, четные числа, т.е. обычный тип с дополнительными ограничениями. На секции вопросов и ответов упоминалась какая-то каноническая статья по вопросу, но, к сожалению, я не смог ее нагуглить.
3) Common Lisp UltraSpec - A Project For Modern Common Lisp Documentation, Michal Herda
Человек взялся за титанический труд переделывания спецификации common lisp в человеческий состав. У спеки сложная судьба, все до сих пор пользуются сайтом с дизайном из 1995 года.
Михал зашел немного необдуманной на мой взгляд, т.к. он начал руками все изменять и, конечно, уже забыл, где и что менял, поэтому для верификации его работы нужно будет снова пройтись глазами по всей спецификации, что сильно усложняет задачу. У меня были наработки на этом же фронте. Посмотрим, вдруг получится объединить усилия.
4) Loading Multiple Versions of an ASDF System in the Same Lisp Image, Vsevolod Domkin
Всеволод захачил билдсистему так, чтобы в некоторых ситуациях позволить иметь в образе одни и те же зависимости с разными версиями. Обычный подход в этом состоит в том, чтобы иметь только одну версию, которая подходит всем зависимостям, ну или просто не работать :) Возможно node.js в этом случае работает особенно успешно, т.к. там require
не добавляет ничего в текущую область видимости, а возвращает объект, т.е. проблема локализуется. Интересно было бы посмотреть, взлетит ли подход Всеволода в боевых решениях.
Кроме этого Всеволод вполне справедливо критиковал ASDF за то, что тот никак не работает с версиями систем, которыми манипулирует.
5) A Lisp Way to Type Theory and Formal Proofs, Frederic Peschanski
Доклад про библиотеку для формальных доказательство на clojure, получилось неплохо, наверное.
6) Type Inference in Cleavir, Alexander Wood
Доклад, который мог бы быть гораздо интереснее, если бы докладчик его хорошо рассказал. Алекс рассказывал про техники вывода типов, которые он реализовывал в новом common lisp компиляторе. Кроме вывода типов иногда получалось удалить мертвый код.
7) Delivering Common Lisp Applications with ASDF 3.3, François-René Rideau
Новости про билд систему. Из интересного для меня - asdf научился запекать в образ c-зависимости.
8) Radiance – a Web Application Environment, Nicolas Hafner
Новый веб фреймворк от Николаса Хефнера, выглядит интересно, а также обладает подробной документацией, что для common lisp, вообще говоря, в новинку. Думаю его использовать в своих приложениях.
Из интересных концептов - роуты отделены от приложения, а многие другие вещи типа общения с бд, авторизации или кеширования вынесены в интерфейсы. Что это дает? Конкретную реализацию выбирает администратор системы в момент ее настройки под конкретный случай.
Звучит интересно, хотя и может наткнуться на суровую реальность больших приложений, когда подобные абстракции вместо помощи, мешают выжать максимальную производительность или обработать какие-то крайние случаи.
9) Lightning talks - Trial game engine, Nicolas Hafner
Можно только удивляться производительности этого парня, вот еще и игровой движок. Из интересных особенностей - конечно же интерактивная разработка, а так же то, что что объекты могт определять код для шейдеров, и если один объект наследуется от другого, и для обоих шейдерный код определен, то, внимание, под для шейдеров парсится и комбинируется.
10) Erlangen, Max Rottenkolber
Макс взял и реализовал на common lisp систему, подобную эрлангу - с агентами, сообщениями и прочими делами. Просто крышу сносит. В его блоге нашелся пост с общим описанием системы.
День 2
Второй день получился более похожим на научную конференцию, было гораздо большо докладов от студентов-дипломников и их руководителей.
1) How the strengths of Lisp-family languages facilitate building complex and flexible bioinformatics applications, Bohdan Khomtchouk
Большой доклад, суть которого в том, что в биоинформатике сейчас все довольно тоскливо в том смысле, что люди публикуют доклады с моделями, которые сложно проверить, при этом базируются на других подобных недоказуемых докладах, а также проводят нечеткие аналогии и занимаются прочими вещами, которые я бы назвал недопустимыми.
Автор говорит о том, что необходимо подойти к вопросу так, чтобы каждая работа содержала расчетную модель, на основе которой можно строить свою, плюс чтобы было прозрачно, как именно одно соотносится к другому. Что было бы совсем прекрасно, так это чтобы при инвалидации одного доклада из этой цепочки невалидными помечались все производные от него.
В целом стоит отметить, что возможно конкретно в биоинформатике это приобрело особо жуткие размеры, но вообще говоря, во всех областях такого хватает. Красивая статья, отличные графики, но ни строчки кода в доступе, поэтому чтобы проверить статью нужно еще столько же времени потратить, что не часто делают.
2) Parallelizing Femlisp, Marco Heisig, Nicolas Neuss
Отчет о том, какие оптимизации в последнее время делали в библиотеке для расчет PDE femlisp. Мне сложно что-то сказать по этому поводу.
3) General Game Playing in Common Lisp, Steve Losh
Отличный доклад, вводящий в тему General Game playing. Основная идея здесь оказалась, что был определен язык правил для игр, которым можно их довольно много описать, с ограничениями конечно - пока подходят настольные походовые игры с открытым состоянием вроде шахмат или крестиков-ноликов. Соответственно, задача в том, чтобы написать бота, который бы показывал хорошую производительность без привязки к каким-либо правилам. Стив написал на common lisp библиотеку, которая парсит правила и умеет подключаться к игровому серверу, плюс написал библиотеку для написания ботов.
Существенная часть доклада происходила в виде живой демонстрации, что только добавило плюсов. Разные, сайты на тему, ну и библиотека Стива.
4) Fast, Maintainable, and Portable Sequence Functions, Irène Durand, Robert Strandh
Доклад о небольшой возможной оптимизации в реализации функции find. Идея в том, что можно довольно элегантно упростить задачу компилятору, если в реализации функции генерировать явную проверку на наличие параметров. Если так делать, то компилятор сможет лучше оптимизировать сам алгоритм. Если честно, мне фича показалась слишком маленькой для отдельного доклада, особенно для такого патриарха, как Роберт Странд, но может я просто не в теме.
5) DIY Meta Languages with Common Lisp, Alexander Lier, Kai Selgrad, Marc Stamminger
Отчет о последних успехах проекта c-mera. Суть в том, чтобы преобразовать c/c++ программу в s-выражения и подключить к результату всю мощь common lisp макросов. Для решения задачи пришлось сделать довольно много телодвижений, но все получилось. Возникает, конечно, вопрос, стоил ли результат того, т.к. существуют и альтернативные системы макросов, например этот, о чем и был поднят вопрос в конце.
6) Static Taint Analysis of Event-driven Scheme Programs, Jonas De Bleser
Доклад одного из дипломников о том, как можно отслеживать утечки чувствительной информации в событийной модели.
7) on the , Alain Marty
Функциональный язык, который встраивается в текст и позволяет получать интерактивные документы. Идея показалась мне довольно интересной.
8) Writing a portable code walker in Common Lisp, Mikhail Raskin
Доклад был интересен тем, что докладчик, как я понял, построил честный code walker для common lisp. Честный в этом контексте значит полностью разворачивать код, все макросы, и основная боль при этом - нечеткие места в стандарте, которые накладываются на детали реализации, специфичные для каждого компилятора. В конце доклада последовал справедливый вопрос, а не стандартизировать ли все это в конце концов.
Из того, что мне подумалось, возможно задача была бы гораздо проще, если на нее наложить определенные ограничения относительно кода, на который этот code walker можно натравливать.
9) Removing redundant tests by replicating control paths, Irène Durand, Robert Strandh
Еще один доклад про оптимизацию кода, в этом случае рассматривался случай с оператором let
.
Заключение
Конференция получилась отнюдь не самой плохой с точки зрения содержания и просто отличной с токи зрения участников, т.к. я там заметил или болтал почти со всеми известными лисперами, которые присутствуют в тусовке, отсутствовали разве что крутые лисперы из Америки (не только США) и Японии. В концеренции ощущался явный перекос в академическую среду, каждый доклад шел в сопровождении статьи, по следам конференции сделан сборничек с ними, что с одной стороны нужно академикам, с другой стороны может исключать ценные доклады от людей, которым никакие статьи не нужны, но есть очень много опыта, которым они хотят поделиться.
Также я искал людей из индустрии, которые используют лисп в боевых приложениях под нагрузками, но, к сожалению не нашел. Было очень интересно со всеми поговорить, в следующем году уже думаю туда поехать, лучше как докладчик.
Со всеми статьями симпозиума можно ознакомиться.