Вторник, 24 Декабря 2024, 02:05

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Что вы думаете о metaprogramming?
SaiteiДата: Суббота, 09 Мая 2015, 00:36 | Сообщение # 1
старожил
Сейчас нет на сайте
Просто у многих людей мнения расходятся.
Вот "Hello World" в метапрограммировании на С++:
Код
template <int n>
struct factorial {
   enum { value = n * factorial<n - 1>::value };
};
     
template <>
struct factorial<0> {
   enum { value = 1 };
};

int main()   
{
...
factorial<4>::value; //4! in compile-time
...
}
aallaДата: Суббота, 09 Мая 2015, 04:18 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
лишнее действие головой)
__morglodДата: Суббота, 09 Мая 2015, 06:00 | Сообщение # 3
уже был
Сейчас нет на сайте
Метапрограммирование это не про написание кучи страшного кода.
В этот раздел попадают шаблоны, макросы, константные выражения.

К примеру тот же факториал:
Код

constexpr int fact(int a) {
return (a != 0) ? fact(a-1)*a : 1;
}

int r = fact(3);
//Преобразуется в:
int r = 6;


Метапрограммирование - неотъемлемая часть программирования в общем, но не следует им злоупотреблять happy
GudleifrДата: Суббота, 09 Мая 2015, 10:09 | Сообщение # 4
почти ветеран
Сейчас нет на сайте
Все проще.

Когда задача достигает некоторого уровня сложности (не навороченности, а чисто размера), возможность обозреть ее решение, записанное на "обычном ЯП" теряется.
См. Дейкстра "Заметки по структурному программированию"

Тогда пытаются применить всякие структурные (устар.) и объектно-ориентированные методы.
См. Брукс "Мифический человеко-месяц"

Но метод написания под новую задачу нового языка (машины по Дейкстре) по идее работает лучше.
В принципе под это был заточен и C++ (См. Страуструп, глава "Проектирование и развитие") и Python...

Но работает это только в FORTH (зато там все остальное не работает).
См. Броуди "Думаем на FORTH":
Цитата
На самом деле Вам не стоит писать каких-либо серьезных задач на Форте; как язык, он просто недостаточно мощен. Вам "следует" писать на Форте свои собственные языки (лексиконы) для моделирования Вашего понимания проблемы, на которых Вы можете элегантно описать ее решение.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг