PEP 638. Немного lisp и php для Питона
Что мы получим, если PEP 638 примут.
На прошлой неделе Марк Шеннон опубликовал черновик очередного предложения по улучшению Питона за номером 638.
Суть предложения сводится к реализации в Питоне поддержки макросов. Макросы, по задумке Шеннона, должны позволять модифицировать абстрактное синтаксическое дерево на этапе компиляции.
Предполагается, что поддержка макросов даст следующие плюсы:
Итак, на этапе перегонки в байткод, кодогенератор, увидев макрос, передаст ассоциированному обработчику абстрактное синтаксическое дерево. Обработчик выдаст в ответ дерево, которым будет замещено первое. Предлагается также поддержка специального синтаксиса для импорта (на этапе компиляции) макросов.
Таким образом, автор надеется привнести в Питон гибкость, в некотором роде похожую на ту, которой характеризуется
А для гигиеничности и упрощения отладки в макросах предлагается придерживаться нескольких правил именования генерируемых переменных, в частности начинать имена со знака доллара
Те из вас, кто видел такой код на Си, в котором «макрос на макросе сидит и макросом погоняет», быть может вздрогнули от описанного.
С одной стороны этот PEP предлагает гибкость. С другой: если он будет принят, лишь здравый смысл будет отделять нас от возможного ада макросов.
Тренируй здравый смысл!
Суть предложения сводится к реализации в Питоне поддержки макросов. Макросы, по задумке Шеннона, должны позволять модифицировать абстрактное синтаксическое дерево на этапе компиляции.
Предполагается, что поддержка макросов даст следующие плюсы:
- Позволит лучше контролировать увеличение сложности Питона (например, снизить потребность в модификации интерпретатора для поддержки новой функциональности);
- Позволит проще создавать прототипы для будущих изменений в языке и обкатывать их;
- Позволит создавать подключаемые расширения, специализированные для работы в какой-то конкретной области (например, для машинного обучения).
Итак, на этапе перегонки в байткод, кодогенератор, увидев макрос, передаст ассоциированному обработчику абстрактное синтаксическое дерево. Обработчик выдаст в ответ дерево, которым будет замещено первое. Предлагается также поддержка специального синтаксиса для импорта (на этапе компиляции) макросов.
Таким образом, автор надеется привнести в Питон гибкость, в некотором роде похожую на ту, которой характеризуется
lisp
.А для гигиеничности и упрощения отладки в макросах предлагается придерживаться нескольких правил именования генерируемых переменных, в частности начинать имена со знака доллара
$
(и мне это что-то смутно напоминает).Те из вас, кто видел такой код на Си, в котором «макрос на макросе сидит и макросом погоняет», быть может вздрогнули от описанного.
С одной стороны этот PEP предлагает гибкость. С другой: если он будет принят, лишь здравый смысл будет отделять нас от возможного ада макросов.
Тренируй здравый смысл!
Категории
Область
Интерпретатор
На заметку
В разделе «События» можно узнать о надвигающихся событиях мира Python, а также поделиться своими. Если вы являетесь организатором встречи/конференции/спринта, зарегистрируйте это событие в указанном разделе, чтобы о нём узнали все желающие.