Здравствуйте, dmz, Вы писали:
J>>Когда метапрограммирование начало использоваться промышленно?
dmz>Smalltalk-80? 80 — это год, если я правильно понимаю? Smalltalk же — промышленный язык?
Ну, я не помню там особого метапрограммирования. Рефлексия — да, была.
И потом, ну какой это промышленный язык? Когда количество проектов на нем хотя бы приближалось к количеству ООП-проектов на других ООП-языках?
J>>Как методология, типа структурного, или ООП? Когда метапрограммированию стало уделяться в университетах столько же J>времени, как структурному или ООП? Когда оно стало магистральным направлением, каким последний лет 20 является J>ООП?
dmz>В принципе, кодогенерация это тоже, в некотором роде, метапрограммирование. А лет кодогенерации лет наверное немногим меньше, чем программированию.
Метапрограммирование — это руление кодом программы из самого кода на этом же языке в той же самой программе.
А кодогенерация — это кодогенерация, у нее свое место.
Как и у рефлексии.
Вот когда они объединяются и работают в рамках той же программы — это метапрограммирование.
J>>Имхо, до последнего времени (до 90-х) оно было больше игрушкой, чем реально и осознанно применявшимся методом программирования, со своими идиомами, методологиями.
dmz>90ые — это не совсем последнее время, все-таки.
Вполне последнее, для меня, по крайней мере. Скажем, в 90-е появилась джава — и где в ней поддержка метапрограммирования, раз оно так рулило до 90-х? Или хотя бы программые заявления на тему, что в след. версии все будет?
J>>Шаблоны в С++ тоже вон были давно, но применяться для метапрограммирования и программирования в функциональном стиле они стали совсем недавно,
dmz>"Применяться для программирования в функциональном стиле" — это ты имеешь ввиду Александреску "Язык шаблонов в C++ — чисто функциональный язык, программы на котором выполняются во время компиляции.",
dmz>или реализуемые при их помощи функциональные примочки в стиле boots::lambda?
А какая разница? И там, и там метапрограммирование.
И Александреску совсем не был первым извращенцем, кстати
J>>а до этого они использовались где-то на уровне eval в скриптах. Согласись же, eval никогда не был основным J>инструментом в скриптах, там всегда рулил стандартный процедурный подход, хотя все знали, что eval под боком.
dmz>Думаю, это просто особенности восприятия. Судя по описаниям курса CS в MIT, метапрограммирование — это боян... то есть классика CS.
По количеству часов, отводимых на него, и количеству программистов, выпускавшихся специалистами по метаязыкам — что ,столько же ,сколько по С/С++/VB?
dmz>И возможности метапрограммирования в C++ шаблонах — достаточно ограничены.
Никто и не говорит, что они безграничны.
Если бы это было не так, не было бы такой цитаты со странички комитета:
http://www.rsdn.ru/Forum/Message.aspx?mid=2324384&only=1Автор: jazzer
Дата: 29.01.07