Не-C ++ языки для генеративного программирования? - PullRequest
24 голосов
/ 22 сентября 2008

C ++, пожалуй, самый популярный язык для статического метапрограммирования и Java не поддерживает его .

Существуют ли другие языки, кроме C ++, которые поддерживают генеративное программирование (программы, создающие программы)?

Ответы [ 14 ]

2 голосов
/ 19 октября 2008

Семейство языков ML было разработано специально для этой цели. Одна из самых известных историй успеха OCaml - это библиотека FFTW для высокопроизводительных БПФ, представляющая собой код C, сгенерированный почти полностью программой OCaml.

Ура, Джон Харроп.

2 голосов
/ 22 сентября 2008

«метапрограммирование» - это действительно плохое название для этой конкретной функции, по крайней мере, когда вы обсуждаете более одного языка, так как эта функция необходима только для небольшого количества языков:

  • статические
  • скомпилировано в машинный язык
  • сильно оптимизирован для производительности во время компиляции
  • расширяемый пользовательскими типами данных (ООП в случае C ++)
  • чрезвычайно популярный

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

Конечно, динамические языки и несколько функциональных языков поддерживают совершенно разные концепции, которые также можно назвать метапрограммированием.

1 голос
/ 22 сентября 2008

Meta-Language (ML), конечно: http://cs.anu.edu.au/student/comp8033/ml.html

1 голос
/ 22 сентября 2008

Lisp поддерживает форму "метапрограммирования", хотя и не в том же смысле, что и метапрограммирование в C ++. Кроме того, ваш термин «статический» может означать разные вещи в этом контексте, но Лисп также поддерживает статическую типизацию, если вы это имеете в виду.

...