LINUX.ORG.RU

История изменений

Исправление www_linux_org_ru, (текущая версия) :

Твое дело - слушать, что я говорю.

бугага

Если понимать под метапрограммированием кодогенерацию, то лисповые макросы не буду метапрограммированием, что бред. А если считать лисповые макросы метапрограммированием, то придется считать метапрограммированием и определение своего класса. Иначе никак.

лисповые макросы могут делать кодогенерацию (а могут просто менять состояние компилятора), но я не буду придираться к твоим словам, а сразу разъясню твою ошибку

да, метапрограммирование это (скорее всего) изменение состояние компилятора, но однозначно, что не всякое изменение состояние компилятора это метапрограммирование

теперь встает вопрос, а что же тогда такое метапрограммирование?

объясняю на простом примере: чем программируемый калькулятор отличается от обычного — у него есть *программируемая* кнопка

возьмем двух юзеров — *оба* изменяют внутреннее состояние калькулятора, тыкая на кнопки, но один из них программированием не занимается, а другой занимается, т.к. *изменяет* значение программируемой кнопки (т.е. изменяет ту последовательность операций, что она вызовет)

точно так же программист, просто меняющий внутреннее состояние компилятора, МЕТАпрограммированием не занимается — чтобы он занялся МЕТАпрограммированием, нужна «кнопка», назначение которой он может изменить

так вот в яве 1.0 таких кнопок *нет*; там все кнопки имеют *фиксированное* значение, и невозможно определить кнопку со своим значением

как могла бы выглядеть «программируемая кнопка» в яве? например, это могло бы быть ключевое слово struct, которое изначально ничего не делает, но которое маша может заМЕТАпрограммировать на то, что struct создает класс, у которого все поля и методы публичны, а петя может заМЕТАпрограммировать struct на то, что struct создает класс, у которого все поля обязаны быть потомком класса Widget (это чтобы формошлепщики случайно не сунули в свой struct че-то, отличное от Widget-ов)

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

и во-вторых, перестань путать фичу с ее реализацией — т.е. типизацию с ее возможной реализацией макросами — ибо она может реализовываться не только макросами, но и кодом внутри компилятора

Исправление www_linux_org_ru, :

Твое дело - слушать, что я говорю.

бугага

Если понимать под метапрограммированием кодогенерацию, то лисповые макросы не буду метапрограммированием, что бред. А если считать лисповые макросы метапрограммированием, то придется считать метапрограммированием и определение своего класса. Иначе никак.

лисповые макросы могут делать кодогенерацию (а могут просто менять состояние компилятора), но я не буду придираться к твоим словам, а сразу разъясню твою ошибку

да, метапрограммирование это изменение состояние компилятора, но не всякое изменение состояние компилятора это метапрограммирование

теперь встает вопрос, а что же тогда такое метапрограммирование?

объясняю на простом примере: чем программируемый калькулятор отличается от обычного — у него есть *программируемая* кнопка

возьмем двух юзеров — *оба* изменяют внутреннее состояние калькулятора, тыкая на кнопки, но один из них программированием не занимается, а другой занимается, т.к. *изменяет* значение программируемой кнопки (т.е. изменяет ту последовательность операций, что она вызовет)

точно так же программист, просто меняющий внутреннее состояние компилятора, МЕТАпрограммированием не занимается — чтобы он занялся МЕТАпрограммированием, нужна «кнопка», назначение которой он может изменить

так вот в яве 1.0 таких кнопок *нет*; там все кнопки имеют *фиксированное* значение, и невозможно определить кнопку со своим значением

как могла бы выглядеть «программируемая кнопка» в яве? например, это могло бы быть ключевое слово struct, которое изначально ничего не делает, но которое маша может заМЕТАпрограммировать на то, что struct создает класс, у которого все поля и методы публичны, а петя может заМЕТАпрограммировать struct на то, что struct создает класс, у которого все поля обязаны быть потомком класса Widget (это чтобы формошлепщики случайно не сунули в свой struct че-то, отличное от Widget-ов)

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

и во-вторых, перестань путать фичу с ее реализацией — т.е. типизацию с ее возможной реализацией макросами — ибо она может реализовываться не только макросами, но и кодом внутри компилятора

Исправление www_linux_org_ru, :

Твое дело - слушать, что я говорю.

бугага

Если понимать под метапрограммированием кодогенерацию, то лисповые макросы не буду метапрограммированием, что бред. А если считать лисповые макросы метапрограммированием, то придется считать метапрограммированием и определение своего класса. Иначе никак.

лисповые макросы могут делать кодогенерацию (а могут просто менять состояние компилятора), но я не буду придираться к твоим словам, а сразу разъясню твою ошибку

да, метапрограммирование это изменение состояние компилятора, но не всякое изменение состояние компилятора это метапрограммирование

теперь встает вопрос, а что же тогда такое метапрограммирование?

объясняю на простом примере: чем программируемый калькулятор отличается от обычного — у него есть *программируемая* кнопка

возьмем двух юзеров — *оба* изменяют внутреннее состояние калькулятора, тыкая на кнопки, но один из них программированием не занимается, а другой занимается, т.к. *изменяет* значение программируемой кнопки (т.е. изменяет ту последовательность операций, что она вызовет)

точно так же программист, просто меняющий внутреннее состояние компилятора, МЕТАпрограммированием не занимается — чтобы он занялся МЕТАпрограммированием, нужна «кнопка», назначение которой он может изменить

так вот в яве 1.0 таких кнопок *нет*; там все кнопки имеют *фиксированное* значение, и невозможно определить кнопку со своим значением

как могла бы выглядеть «программируемая кнопка» в яве? например, это могло бы быть ключевое слово struct, которое изначально ничего не делает, но которое маша может заМЕТАпрограммировать на то, что struct создает класс, у которого все поля и методы публичны, а петя может заМЕТАпрограммировать struct на то, что struct создает класс, у которого все поля обязаны быть потомком класса Widget (это чтобы формошлепщики случайно не сунули в свой struct че-то, отличное от Widget-ов)

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

и во-вторых, перестань путать фичу с ее реализацией — т.е. типизацию с ее возможной реализацией макросами — ибо она может реализовываться не только макросами, но и кодом внутри компилятора

Исходная версия www_linux_org_ru, :

Твое дело - слушать, что я говорю.

бугага

Если понимать под метапрограммированием кодогенерацию, то лисповые макросы не буду метапрограммированием, что бред. А если считать лисповые макросы метапрограммированием, то придется считать метапрограммированием и определение своего класса. Иначе никак.

лисповые макросы могут делать кодогенерацию (а могут просто менять состояние компилятора), но я не буду придираться к твоим словам, а сразу разъясню твою ошибку

да, метапрограммирование это изменение состояние компилятора, но не всякое изменение состояние компилятора это метапрограммирование

теперь встает вопрос, а что же тогда такое метапрограммирование?

объясняю на простом примере: чем программируемый калькулятор отличается от обычного — у него есть *программируемая* кнопка

возьмем двух юзеров — *оба* изменяют внутреннее состояние калькулятора, тыкая на кнопки, но один из них программированием не занимается, а другой занимается, т.к. *изменяет* значение программируемой кнопки (т.е. изменяет ту последовательность операций, что она вызовет)

точно так же программист, просто меняющий внутреннее состояние компилятора, МЕТАпрограммированием не занимается — чтобы он занялся МЕТАпрограммированием, нужна «кнопка», назначение которой он может изменить

так вот в яве 1.0 таких кнопок *нет*; там все кнопки имеют *фиксированное* значение, и невозможно определить кнопку со своим значением

как могла бы выглядеть «программируемая кнопка» в яве? например, это могло бы быть ключевое слово struct, которое изначально ничего не делает, но которое маша может заМЕТАпрограммировать на то, что struct создает класс, у которого все поля и методы публичны, а петя может заМЕТАпрограммировать struct на то, что struct создает класс, у которого все поля обязаны быть потомком класса Widget (это чтобы формошлепщики случайно не сунули в свой struct че-то, отличное от Widget-ов)

и во-вторых, перестань путать фичу с ее реализацией — т.е. типизацию с ее возможной реализацией макросами — ибо она может реализовываться не только макросами, но и кодом внутри компилятора