Что мы получим, если PEP 638 примут.
На прошлой неделе Марк Шеннон опубликовал черновик очередного предложения по улучшению Питона за номером 638.

Суть предложения сводится к реализации в Питоне поддержки макросов. Макросы, по задумке Шеннона, должны позволять модифицировать абстрактное синтаксическое дерево на этапе компиляции.

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

Итак, на этапе перегонки в байткод, кодогенератор, увидев макрос, передаст ассоциированному обработчику абстрактное синтаксическое дерево. Обработчик выдаст в ответ дерево, которым будет замещено первое. Предлагается также поддержка специального синтаксиса для импорта (на этапе компиляции) макросов.

Таким образом, автор надеется привнести в Питон гибкость, в некотором роде похожую на ту, которой характеризуется lisp.
А для гигиеничности и упрощения отладки в макросах предлагается придерживаться нескольких правил именования генерируемых переменных, в частности начинать имена со знака доллара $ (и мне это что-то смутно напоминает).

Те из вас, кто видел такой код на Си, в котором «макрос на макросе сидит и макросом погоняет», быть может вздрогнули от описанного.
С одной стороны этот PEP предлагает гибкость. С другой: если он будет принят, лишь здравый смысл будет отделять нас от возможного ада макросов.

Тренируй здравый смысл!

Категории

Интерпретатор
Аспект языка

На заметку
В разделе «События» можно узнать о надвигающихся событиях мира Python, а также поделиться своими. Если вы являетесь организатором встречи/конференции/спринта, зарегистрируйте это событие в указанном разделе, чтобы о нём узнали все желающие.