В последнее время начали набирать популярность динамические языки программирования. Python и Ruby уже можно назвать мейнстримом. Основной фичей этих языков является метапрограммирование. Однако, ни Python ни Ruby не привнесли ничего нового в теорию языков программирования, а лишь переизобрели и популяризировали идеи рефлексии и метапрограммирования. Весь фундамент был заложен гораздо раньше в языках семейства Lisp. В курсе будет рассказано, почему Lisp занимает особое место среди динамических языков, будут продемонстрированы идеи, которые еще не нашли отражения в современных языках. Курс знакомит слушателей не только с идеями, но и с их программной реализацией. На примере кода интерпретаторов Lisp будет показано, с какими трудностями сталкиваются разработчики динамических языков. Изложение начнется с простых реализаций, занимающих страницу кода и дойдет до диалекта, обладающего наибольшими на сегодняшний день возможностями метапрограммирования. Особенностью курса является изложение теории реификации, которая была разработана автором на основе работ Brian Cantwell Smith. Соединив полученные знания со знаниями о синтаксическом анализе (эта тематика в курсе не рассматривается), слушатели смогут разработать самостоятельно реализацию языка уровня Python.
Semester | Branch |
---|---|
spring 2015 | Saint Petersburg |