Вчера перезаписал 2 лекции по метапрограммированию. Там про техники, позволяющие программно изменять поведение программ с использованием метаданных:
* Introspection - чтение структур и программных абстракций: типы, поля, методы, наследование и т.д.
* Reflection - динамическое изменение поведения и структуры программы.
* Scaffolding - автоматическая генерация кода/структур для ускорения разработки.
* Code Generation - программная генерация кода из метаданных.
* Macros - расширение синтаксиса языка через шаблоны или скрипты.
* Decorators - добавление к коду метаданных, влияющих на выполнение.
* Dynamic Invocation - вызов методов, функций, конструкторов и классов по имени во время исполнения.
* Monkey Patching - изменение кода в рантайме, добавлением и удалением свойств и методов.
* Generics - унификация и параметризация типов и алгоритмов если в коде изменяются только типы.
* DSL - доменно-специализируемые и встраиваемые языки для выразительности синтаксиса под задачу.
* Self-Modification - программы, изменяющие собственный код, байткод или бинарник.
* Polyfilling - вмешательство в поведение языка и платформы, перехват и подмена стандартного API.
* Homoiconic code - использование одинаковых структур для данных для исполняемого кода программы, как в LISP.
Post #1908
2.76K
- 👍 15
- ❤ 7
- 🔥 7
- ⚡ 1