Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Category:

Объекты и метаобъекты (как правильно называть?)

объект - значение, структура в памяти во время исполнения:

{ a = 2 ; b = 5 ; c = incr }

метаобъект - это класс, структура в памяти во время компиляции. Метаобъектов не существует во время исполнения

{ a = Int ; b = Int ; c = Int -> Int ; d = 7 ; f = sum }

Метаметаобъект (Метакласс) так же относится к классу, как класс к объекту:

{ a = ... ; b = ... ; c = ... ; d = Int ; f = Int -> Int }

Таким образом, могут быть значения, метазначения (типы) и метаметазначения (метатипы)
и соответственно структуры, метаструктуры и метаметаструктуры
и соответственно исполнение, метаисполнение и метаметаисполнение

У нас метатипов пока не предвидится, можно ими не забивать голову - поэтому я написал многоточия вместо метаметазначений a b и с

Важно понять что b = 5 и c = incr (значения времени исполнения, члены структуры) отличаются от d = 7 и f = sum (значения времени компиляции, члены метаструктуры)

В с++ a и b - это члены класса, c - член класса, указатель на функцию

d - статический член класса, f - метод

В этих терминах для SPL получаем что компилятор должен определять, какие определения помещать в объекты, а какие - в метаобъекты. Чем больше он положит в метаобъекты - тем проще будут объекты и этап исполнения, и эффективнее машинный код. В принципе, вывод метаобъектности может быть автоматическим.
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 5 comments