C ++, термин / идиома для программирования с использованием шаблона - PullRequest
7 голосов
/ 19 декабря 2010

Я продолжаю читать термин:

  1. шаблон программирования
  2. общее программирование
  3. мета-программирование
  4. может быть, другая идиома / термин ..

для любого кода C ++, который использует шаблон, какой из них является правильным или более точным термином этого?

Ответы [ 2 ]

15 голосов
/ 19 декабря 2010

AFAIK:

  1. Шаблонное программирование просто относится к классическому «программированию с помощью шаблонов», т. Е. «У меня есть функция / класс, который я хочу использовать с любым типом, Я просто сделаю это шаблоном ".

    Это также можно рассматривать как категорию «всеохватывающего», которая включает любую технику программирования, использующую шаблоны.

  2. Общее программирование можно синтетически описать как парадигму программирования, используемую STL.

    Википедия определяет это как

    стиль компьютерного программирования, в котором алгоритмы написаны в терминах типов, которые будут определены позднее, которые затем создаются при необходимости для конкретных типов, предоставляемых в качестве параметров

    ИМХО, лучше сказать, что все контейнеры предназначены для использования с любым типом (без ущерба для безопасности типов), а алгоритмы разработаны так, чтобы быть достаточно общими для работы с любым типом контейнера (при условии, что их целесообразно использовать) очевидно, т.е. не имеет смысла сортировать неупорядоченный контейнер).

    Обратите внимание, что универсальное программирование (с этим определением) не требует строго использования шаблонов, в действительности это может быть достигнуто с помощью наследования и динамического полиморфизма ( благодаря Бену Войгту ) .

    В общем, я бы сказал, что шаблонное программирование и универсальное программирование частично перекрываются, и многие люди используют термины универсальное программирование и шаблон программирование взаимозаменяемо.

  3. Метапрограммирование шаблонов - это стиль программирования, в котором шаблоны используются для выполнения вычислений / решений / проверок во время компиляции, которые обычно невозможно выполнить без шаблонов (статические утверждения, вычисления постоянных времени, ...).

    Такой код часто является довольно надуманным, поскольку C ++ не был разработан для этого стиля программирования (который был фактически «обнаружен» позже), и может показаться незнакомым программистам C ++ также потому, что он часто приближается к функциональному программированию (без необходимости хорошие синтаксические возможности для этого) вместо того, чтобы следовать императивной парадигме, обычно используемой в C ++.

2 голосов
/ 19 декабря 2010

Обычно его называют универсальное программирование .

Шаблон мета Программирование - это нечто иное, чем обычное использование шаблонов, в типах TMP манипулируют во время компиляции (см. boost.Mpl ).

...