Автор Тема: [Oberon-07/11] Export non-scalar variable.  (Прочитано 23995 раз)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #30 : Сентябрь 12, 2013, 05:47:55 pm »
Ну с простыми типами понятно. Нужно запретить присваивания и передачу VAR параметром. Хватит ли этого для сложных типов? у меня уверенности нет, что тех же мер достаточно.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #31 : Сентябрь 12, 2013, 05:54:03 pm »
Где там противоречие с вашим утверждением?
Моё утверждение не противоречит Вашему, а скорее дополняет его (или расширяет).
(Я же не утверждал, что нет никаких проблем сделать экспорт read only для переменных сложных типов.)
Вот вот. Однако начали вы с "Дело, видимо, всё же в другом."  ;)

ps Ладно, проехали... У меня тяжелый день просто был.  :)

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #32 : Сентябрь 12, 2013, 06:00:41 pm »
Вот вот. Однако начали вы с "Дело, видимо, всё же в другом."  ;)
Согласен. Не совсем удачный заход...  :-[

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #33 : Сентябрь 12, 2013, 06:02:32 pm »
TYPE
  Object* = RECORD
    field*: REAL;
  END;

VAR obj-: Object;  (* не разрешённый экспорт! *)

Может, Вирту не понравилось противоречие: тип Object как бы разрешает запись в поле field, а переменная obj, в то же самое время, - запрещает. Хотя согласен, что такое объяснение выглядит несколько натянутым. Честно говоря, я тоже голову сломал :-)

akron1

  • Jr. Member
  • **
  • Сообщений: 76
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #34 : Сентябрь 12, 2013, 09:38:22 pm »
Причины запрета экспорта структурных переменных тоже не вижу... Разве что ослабляются межмодульные связи, м. б. чем-то упрощается раздельная компиляция и динамическая модульность. Скалярный ли тип указатель? Скорее да, собственной структуры у него нет.

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #35 : Сентябрь 12, 2013, 10:59:09 pm »
Я не вижу где там может возникнуть эта самая проблематичность отличная проблематичности read-only скалярных переменных.
Например, в записи одно из полей может быть указателем.

DddIzer

  • Гость
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #36 : Сентябрь 13, 2013, 06:31:38 am »
Что такое скалярный тип? В репорте про это нет ни слова. Есть предположение что это Basic Types + Pointer types (в противовес Structured types = Record types + Array types).
не являющийся составным (не является объявленной, в определении языка, комбинацией других типов этого ЯП) - какие конкретно типы относятся к простым зависит от ЯП(его описания) - в Обероне (насколько я понимаю) - все, кроме типов RECORD и ARRAY.

DddIzer

  • Гость
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #37 : Сентябрь 13, 2013, 06:58:56 am »
Вирт в Oberon-07/11 (а возможно и раньше) запретил экспорт из модуля (даже в режиме read only) переменные не скалярный типов.

Отсюда возникает минимум два вопроса:

1) Зачем он это сделал? Чем переменные не скалярных типов хуже при read-only экспорте чем переменные скалярных типов? (мы тут всю голову сломали, но придумать вескую причину не смогли)
имеет смысл если только включить в список запрещенных для экспорта указатели (помимо записей и массивов).

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #38 : Сентябрь 13, 2013, 05:02:16 pm »
имеет смысл если только включить в список запрещенных для экспорта указатели (помимо записей и массивов).

Согласен. Если и запрещать, то тогда вместе с указателями. Иначе смысла - 0. Или у Вирта была какая-нибудь особенность реализации, которую нам ну никак не угадать "общими размышлениями".

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #39 : Сентябрь 13, 2013, 05:16:40 pm »
Согласен. Если и запрещать, то тогда вместе с указателями. Иначе смысла - 0. Или у Вирта была какая-нибудь особенность реализации, которую нам ну никак не угадать "общими размышлениями".

Вообще смысла в таких исключениях "можно, но только read-only" нет - тот же эффект можно получить через экспорт процедур, возвращающих нужные переменные. Скорее всего это просто оптимизация (в расчете на неоптимизирующий компилятор).

P.S. Хотя лично я до сих пор не вижу особой разницы между процедурами set/get для переменной модуля и просто экспортированной переменной модуля. Оно все равно по смыслу остается глобальной переменной со всеми присущими проблемами. Ну разве что брейк поинт можно воткнуть, чтобы рабораться кто и когда все портит. Но это уже борьба (неэффективная) со следствием (бардак в системе).

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #40 : Сентябрь 13, 2013, 05:17:41 pm »
Ну так спросите у самого Вирта )))
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #41 : Сентябрь 13, 2013, 06:36:37 pm »
Ну так спросите у самого Вирта )))

Вирт не отвечает на емыл. А ходатайствовать у Info21 как-то претит...

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #42 : Сентябрь 13, 2013, 07:54:14 pm »
Вирт не отвечает на емыл.

Либо он редиска, либо он решил, что всё фигня, даже обероны )))
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

DddIzer

  • Гость
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #43 : Сентябрь 13, 2013, 08:15:07 pm »
Согласен. Если и запрещать, то тогда вместе с указателями. Иначе смысла - 0. Или у Вирта была какая-нибудь особенность реализации, которую нам ну никак не угадать "общими размышлениями".
смысл в том, чтобы проггеры с "суконным рылом"  не гоношились в динамических структурах порождаемых экспортируемым модулем.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #44 : Сентябрь 13, 2013, 08:30:07 pm »
Согласен. Если и запрещать, то тогда вместе с указателями. Иначе смысла - 0. Или у Вирта была какая-нибудь особенность реализации, которую нам ну никак не угадать "общими размышлениями".
смысл в том, чтобы проггеры с "суконным рылом"  не гоношились в динамических структурах порождаемых экспортируемым модулем.

Эмм.. Не понял. А что динамического вот в этом:
VAR
  rec : RECORD i,j,k : INTEGER END;
Y = λf.(λx.f (x x)) (λx.f (x x))