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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #15 : Сентябрь 12, 2013, 03:34:00 pm »
Да, кроме того, тип SET Вирт явно причисляет к скалярным типам, хотя доступ к отдельным "полям" там есть.
Что характерно, в Модуле-2 тип-множество у Вирта был составным, а в Обероне стал скалярным.
Точнее так - в Обероне-0 явно сказано что он скалярный (точнее Вирт считает что он скалярный), а как оно в Обероне (и соответственно в Oberon-07/11, как в самом свежем представителе) никто, кроме возможно Вирта, не знает :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #16 : Сентябрь 12, 2013, 03:41:25 pm »
Думаю что указатели тоже должны быть read only

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #17 : Сентябрь 12, 2013, 03:46:07 pm »
Что характерно, в Модуле-2 тип-множество у Вирта был составным, а в Обероне стал скалярным.
Точнее так - в Обероне-0 явно сказано что он скалярный (точнее Вирт считает что он скалярный), а как оно в Обероне (и соответственно в Oberon-07/11, как в самом свежем представителе) никто, кроме возможно Вирта, не знает :-)
Из указанного мной выше источника:
Цитата: Никлаус Вирт
1.3. Стандартные примитивные типы
************
Мы обозначаем эти типы следующими идентификаторами:
INTEGER, REAL, BOOLEAN, CHAR, SET.
Кстати, POINTER в этом списке нет.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #18 : Сентябрь 12, 2013, 03:48:40 pm »
1) Зачем он это сделал? Чем переменные не скалярных типов хуже при read-only экспорте чем переменные скалярных типов? (мы тут всю голову сломали, но придумать вескую причину не смогли)
Экспортировать можно только read only. А для сложных типов сделать read only видимо проблематично. Вот и запретил... :-)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #19 : Сентябрь 12, 2013, 03:54:03 pm »
В алгоритмах написано что скалярные типы - это те, с которыми можно только := сделать.
Т.е. получается что скалярными являютя и множества и указатели

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #20 : Сентябрь 12, 2013, 04:01:31 pm »
Экспортировать можно только read only. А для сложных типов сделать read only видимо проблематично. Вот и запретил... :-)
Дело, видимо, всё же в другом. Экспортированная переменная доступна всем модулям-клиентам. Если эта переменная доступна для записи, то различные модули-клиенты в принципе могут изменять её значение не согласованно. Получается как бы то же "зло", что и с глобальными переменными. Слишком широкополосный доступ для записи.

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #21 : Сентябрь 12, 2013, 04:03:25 pm »
Кстати, это объясняет почему типы можно экспортировать, а переменные нет.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #22 : Сентябрь 12, 2013, 04:10:23 pm »
igor, прочитайте внимательно, что процитировали :-)

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #23 : Сентябрь 12, 2013, 04:15:55 pm »
Что-то под вечер мне ребусы тяжело даются  :-)

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #24 : Сентябрь 12, 2013, 04:18:09 pm »
Экспортировать можно только read only. А для сложных типов сделать read only видимо проблематично. Вот и запретил... :-)
Дело, видимо, всё же в другом. Экспортированная переменная доступна всем модулям-клиентам. Если эта переменная доступна для записи, то различные модули-клиенты в принципе могут изменять её значение не согласованно.
Запрещён экспорт только статических структурных переменных, динамические экземпляры по прежнему доступны.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #25 : Сентябрь 12, 2013, 04:25:52 pm »
Что-то под вечер мне ребусы тяжело даются  :-)
Где там противоречие с вашим утверждением?

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #26 : Сентябрь 12, 2013, 04:28:22 pm »
По крайней мере на счет указателей у меня БОЛЬШИЕ сомнения.
Нашёл у Кауфмана. Правда, это не про Оберон, а вообще.
Куфман В.Ш., "Языки программирования. Концепции и принципы", 2011, Гл.2.2.3:
Цитировать
Имеются четыре категории типов: скалярные, составные, ссылочные и приватные.
... и далее по тексту разжёвано.
Так что, указатели - это и не скалярный тип, и не составной (по Кауфману).

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #27 : Сентябрь 12, 2013, 04:51:38 pm »
Где там противоречие с вашим утверждением?
Моё утверждение не противоречит Вашему, а скорее дополняет его (или расширяет).
(Я же не утверждал, что нет никаких проблем сделать экспорт read only для переменных сложных типов.)

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #28 : Сентябрь 12, 2013, 04:55:36 pm »
Куфман В.Ш., "Языки программирования. Концепции и принципы", 2011, Гл.2.2.3:
Точнее, гл.2.3.3 (с. 50)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: [Oberon-07/11] Export non-scalar variable.
« Ответ #29 : Сентябрь 12, 2013, 05:18:47 pm »
1) Зачем он это сделал? Чем переменные не скалярных типов хуже при read-only экспорте чем переменные скалярных типов? (мы тут всю голову сломали, но придумать вескую причину не смогли)
Экспортировать можно только read only. А для сложных типов сделать read only видимо проблематично. Вот и запретил... :-)
Я не вижу где там может возникнуть эта самая проблематичность отличная проблематичности read-only скалярных переменных.
Y = λf.(λx.f (x x)) (λx.f (x x))