Здравствуйте, jazzer, Вы писали:
J>Здравствуйте, dmz, Вы писали:
J>>>Когда метапрограммирование начало использоваться промышленно?
J>Ну, я не помню там особого метапрограммирования. Рефлексия — да, была.
Согласно источникам, там еще были метаклассы.
J>И потом, ну какой это промышленный язык? Когда количество проектов на нем хотя бы приближалось к количеству J>ООП-проектов на других ООП-языках?
А какие еще в 80-х были ООП языки? И каково было вообще количество проектов? Есть подозрение, что
сильно меньше, чем сейчас.
dmz>>В принципе, кодогенерация это тоже, в некотором роде, метапрограммирование. А лет кодогенерации лет наверное немногим меньше, чем программированию.
J>Метапрограммирование — это руление кодом программы из самого кода на этом же языке в той же самой программе.
J>А кодогенерация — это кодогенерация, у нее свое место.
С тобой согласны не все:
Metaprogramming is the writing of programs that write or manipulate other programs (or themselves) as their data or that do part of the work that is otherwise done at runtime during compile time. This allows programmers to produce a larger amount of code and get more done in the same amount of time as they would take to write all the code manually.
Да и из практических соображений, велика ли разница — сам язык предоставляет средства манипулирования порождаемым кодом, или внешний тул? Вот взять С — препроцессор, там, конечно, часть языка — но больших проблемах написать препроцессоров на чем угодно и использовать их — нет. Какая разница при этом? Родной препроцессор в принципе, сильно отличается от языка в целом. То же можно и сказать о шаблонах — они, согласно стандарту, часть языка — но при этом сильно отличаются от остального языка. Это целая новая концепция, с другими выразительными средствами и даже подходом.
J>А какая разница? И там, и там метапрограммирование.
J>И Александреску совсем не был первым извращенцем, кстати
Ну разница где-то в том, что вычисление факториала числа в компайл-тайме
практически бесполезно, несмотря на то, что реализовано при помощи "метапрограммирования".
J>По количеству часов, отводимых на него, и количеству программистов, выпускавшихся специалистами по метаязыкам — J>что ,столько же ,сколько по С/С++/VB?
По количеству часов, честно говоря, не знаю. Знаю только, что в MIT CS учили с чего-то вроде схемы, по пути реализовав ее интерпретатор в рамках курса. А VB в штатах учат таксистов, на недельных курсах.