Рубрика «metaprogramming»
Партитура для невидимого оркестра
2026-04-17 в 4:17, admin, рубрики: AST, metaprogramming, абстрактное синтаксическое деревоМетапрограммирование 2.0: макросы и генерация кода в современном мире
2025-06-14 в 13:01, admin, рубрики: c++, code generation, java, metaprogramming, Rust, ruvds_статьи, генерация кода, макросы, метапрограммирование, шаблонный код
Забудьте про скучные «Hello, World». Макросы и шаблоны давно стали полноценными инструментами архитектора кода: от хитрых C++-шаблонов до процедурных макросов Rust и Java-аннотаций, автоматически генерирующих целые фреймворки.
В этой статье мы рассмотрим примеры, где metaprogramming избавляет от рутины и экономит часы работы над проектом. Детали как всегда под катом.Читать полностью »
Грязные трюки C++ из userver и Boost
2024-11-05 в 7:00, admin, рубрики: boost, dlopen, exception, exception throw refactoring, exceptions, metaprogramming, stacktrace, throw, throwcatch, userver
Привет, я Антон Полухин из Техплатформы Екома и Райдтеха Яндекса. Моя команда разрабатывает userver — современный опенсорсный асинхронный фреймворк с богатым набором абстракций для быстрого и комфортного создания микросервисов, сервисов и утилит на C++.
Когда мы пишем какой‑то код для userver и для таких сложных проектов, как BoostЧитать полностью »
Путь из COBOL в Java: пишем транспилятор за сутки
2020-02-24 в 15:01, admin, рубрики: COBOL, groovy, Groovy & Grails, java, metaprogrammingПриветствую, Дорогие Друзья.
Продолжаем цикл статей, освещающий деятельность (бурную) нашей некоммерческой организации.
Как и обещал — переходим от простого (логирование) к более сложному: метапрограммирование.
Аппаратный bit banding CortexM3-M4(ARM), архитектура ядра, ассемблер, С-C++14 и капля мета программирования
2019-06-01 в 12:19, admin, рубрики: architecture, bitband, C, c++, C++14, cortex-m4, embedded, lpc, metaprogramming, microcontrollers, stm32, программирование микроконтроллеровВведение
Внимание, это не очередная «Hello world»статья о том как помигать светодиодом или попасть в свое первое прерывание на STM32. Однако, я постарался дать исчерпывающие объяснения по всем затрагиваемым вопросам, поэтому статья будет полезна не только многим профессиональным и мечтающим стать таковыми разработчикам (как я надеюсь), но и начинающим программистам микроконтроллеров, так как тема эта почему-то обходится стороной на бесчисленных сайтах/блогах «учителей программирования МК».
Метапрограммирование в JavaScript и TypeScript
2019-05-05 в 0:59, admin, рубрики: babel, decorators, ecmascript 2015, ecmascript 6, javascript, metaprogramming, node.js, nodejs, TypeScript, Разработка веб-сайтовПролог
Хочу представить на Ваш суд ряд мини статеек, в которых будут описаны приемы и основы метапрограммирования. В основном я буду писать об использовании тех или иных техник в JavaScript либо в TypeScript
Эта первая (и надеюсь не последняя) статья из серии.
Так что же такое метапрограммирование:
Metaprogramming is a programming technique in which computer programs have the ability to treat other programs as their data. It means that a program can be designed to read, generate, analyze or transform other programs, and even modify itself while running. In some cases, this allows programmers to minimize the number of lines of code to express a solution, in turn reducing development time.
Довольно запутанное описание, но основная польза от метапрограммирования вполне понятна:
… это позволяет программистам минимизировать количество строк кода для имплементации решения, что в свою очередь сокращает время разработки

Python: метапрограммирование в продакшене. Часть вторая
2018-10-12 в 9:06, admin, рубрики: metaclass, metaprogramming, python, Блог компании Binary District, метаклассы, метапрограммирование, ПрограммированиеМы продолжаем говорить о метапрограммировании в Python. При правильном использовании оно позволяет быстро и элегантно реализовывать сложные паттерны проектирования. В прошлой части этой статьи мы показали, как можно использовать метаклассы, чтобы изменять атрибуты экземпляров и классов.

Теперь посмотрим как можно изменять вызовы методов. Больше о возможностях метапрограммирования вы сможете узнать на курсе Advanced Python.
Python: метапрограммирование в продакшене. Часть первая
2018-10-09 в 9:52, admin, рубрики: binary district, metaclass, metaprogramming, python, Блог компании Binary District, метаклассы, метапрограммирование, ПрограммированиеМногие считают, что метапрограммирование в Python излишне усложняет код, но если использовать его правильно, то можно быстро и элегантно реализовать сложные паттерны проектирования. Помимо этого, такие известные Python-фреймворки, как Django, DRF и SQLAlchemy, используют метаклассы, чтобы обеспечить легкую расширяемость и простое переиспользование кода.

В этой статье расскажу, почему не стоит бояться использовать метапрограммирование в своих проектах и покажу, для каких задач оно подходит лучше всего. Еще больше о возможностях метапрограммирования можно узнать на курсе Advanced Python.
Эмуляция литералов свойств с Java 8 Method Reference
2018-08-18 в 13:56, admin, рубрики: java, metaprogramming, nameof, ненормальное программирование
От переводчика: к переводу этой статьи меня подтолкнула обида от отсутствия оператора nameOf в языке Java. Для нетерпеливых — в конце статьи есть готовая реализация в исходниках и бинарниках.
Одна из вещей, которой часто не хватает разработчикам библиотек в Java, — литералы свойств. В этом посте я покажу, как можно креативно воспользоваться Method Reference из Java 8 для эмуляции литералов свойств с помощью генерации байт-кода.
Сродни литералам классов (например, Customer.class), литералы свойств позволили бы ссылаться на свойства классов-бинов типобезопасно. Это было бы полезно для дизайна API, где есть необходимость выполнять действия над свойствами или каким-то образом конфигурировать их.
От переводчика: Под катом разбираем как из подручных средств это реализовать.
Читать полностью »
Данная статья является расшифровкой (с небольшими правками) доклада Антона antoshkka Полухина — “Немного магии для C++14”.
Я тут недавно ковырялся с C++ и случайно открыл пару новых приемов метапрограммирования, которые позволяют делать рефлексию в C++14. Пара мотивационных примеров. Вот у вас есть какая-то POD структура, в ней какие-то поля:
struct complicated_struct {
int i;
short s;
double d;
unsigned u;
};
Количество полей и их имена не имеют значение, важно то, что с этой структуры мы можем написать следующий кусочек кода:
#include <iostream>
#include "magic_get.hpp"
struct complicated_struct { /* … */ };
int main() {
using namespace pod_ops;
complicated_struct s {1, 2, 3.0, 4};
std::cout << "s == " << s << std::endl; // Compile time error?
}
Функция main, в ней создаем переменную нашей структуры, как-то ее инициализируем через aggregate инициализацию, а потом эту переменную пытаемся вывести в std::cout. И в этот момент у нас, по идее, должна быть ошибка компиляции: мы не определили оператор вывода в поток для нашей структуры, компилятор не знает как все это скомпилировать и вывести. Однако, оно скомпилируется и выведет содержимое структуры:
antoshkka@home:~$ ./test
s == {1, 2, 3.0, 4}
Читать полностью »

