OberonCore
https://forum.oberoncore.ru/

Совместимость записей в Oberon-07
https://forum.oberoncore.ru/viewtopic.php?f=115&t=2920
Страница 2 из 2

Автор:  Rifat [ Среда, 17 Ноябрь, 2010 11:17 ]
Заголовок сообщения:  Re: Совместимость записей в Oberon-07

Александр Ильин писал(а):
Valery Solovey писал(а):
А вариант описки в документации на O07 не рассматривался?
Был рассмотрен такой вариант, Крис Барроуз считает, что описка. Я, прочитав сообщения о языках -2 и -07, с ним согласился. Пункт 9.1.4 следует читать так: "In the case of records, the type of the source must be an extension of the type of the destination." Ошибка обнаружена в документе "The Programming Language Oberon", в ревизии 1.12.2007.

Может лучше у самого Вирта спросить. Есть у кого-нибудь его e-mail?

Автор:  Rifat [ Среда, 17 Ноябрь, 2010 17:19 ]
Заголовок сообщения:  Re: Совместимость записей в Oberon-07

Лично я не думаю, что это опечатка, так как в ревизии 1.11.2008 та же самая фраза. А если это была бы опечатка, то наверно за год она бы обнаружилась.

Автор:  Александр Ильин [ Пятница, 19 Ноябрь, 2010 06:28 ]
Заголовок сообщения:  Re: Совместимость записей в Oberon-07

Rifat писал(а):
Может лучше у самого Вирта спросить. Есть у кого-нибудь его e-mail?
Крис Барроуз написал Вирту и получил подтверждение, что это ошибка в документе.

Автор:  Info21 [ Пятница, 19 Ноябрь, 2010 07:02 ]
Заголовок сообщения:  Re: Совместимость записей в Oberon-07

Rifat писал(а):
Лично я не думаю, что это опечатка, так как в ревизии 1.11.2008 та же самая фраза.
Так рассуждать, получится, что не опечатка и перепутанные в трёх изданиях "Алгоритмов и структур данных" столбцы в таблице логических операций :)

Автор:  Rifat [ Пятница, 19 Ноябрь, 2010 17:36 ]
Заголовок сообщения:  Re: Совместимость записей в Oberon-07

Еще в подтверждение моей точки зрения, что это не описка, в документе Differences between Oberon-07 and Oberon написано:
Цитата:
4. Assignment of arrays and records

Because assignments of arrays are typically more complex operations than simple assignments,
it was believed that this should be visible to a programmer. The standard procedure COPY(src,
dst) was therefore introduced. But now we handle array and record assignments just like other
assignments, writing dst := src, and discard the COPY procedure. The destination array must not
be shorter than the source array. This is in accordance with the assignment rule for strings and
with the compatibility of record types and their extensions.

То есть здесь говорится о том, что типу большего размера может присваиваться тип меньшего размера, то есть расширенной записи, может присваиваться базовый тип записи.

Автор:  Info21 [ Пятница, 19 Ноябрь, 2010 18:50 ]
Заголовок сообщения:  Re: Совместимость записей в Oberon-07

Rifat писал(а):
Еще в подтверждение моей точки зрения, что это не описка, в документе Differences between Oberon-07 and Oberon написано:
... То есть здесь говорится о том, что типу большего размера может присваиваться тип меньшего размера, то есть расширенной записи, может присваиваться базовый тип записи.
Про записи тут ничего не говорится.

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

При этом изнутри процедуры можно проверить, что тип фактического параметра -- это тип-потомок, и все доп. поля на месте.

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

Автор:  Валерий Лаптев [ Пятница, 19 Ноябрь, 2010 22:32 ]
Заголовок сообщения:  Re: Совместимость записей в Oberon-07

Info21 писал(а):
Rifat писал(а):
Еще в подтверждение моей точки зрения, что это не описка, в документе Differences between Oberon-07 and Oberon написано:
... То есть здесь говорится о том, что типу большего размера может присваиваться тип меньшего размера, то есть расширенной записи, может присваиваться базовый тип записи.
Про записи тут ничего не говорится.

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

При этом изнутри процедуры можно проверить, что тип фактического параметра -- это тип-потомок, и все доп. поля на месте.

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

Очень интересно!
При передаче параметров срезки нет, а в присваивании - есть...

Автор:  Info21 [ Суббота, 20 Ноябрь, 2010 10:10 ]
Заголовок сообщения:  Re: Совместимость записей в Oberon-07

Валерий Лаптев писал(а):
При передаче параметров срезки нет, а в присваивании - есть...
, но только там, где это разрешено.

Неужели в Обероне-07?? Не верю.

Автор:  Rifat [ Понедельник, 22 Ноябрь, 2010 09:27 ]
Заголовок сообщения:  Re: Совместимость записей в Oberon-07

Написал письмо Вирту, получил следующий ответ:
Цитата:
Dear Mr. Rifat,

You are right. In 9.1 it must read

4. In the case of records, the type of the source.must be an extension of the type of the destination


Thank you for pointing this out!
It is remarkable, that I received the same comment just 2 weeks ago from somebody in Australia, while for the past 4 years nobody has mentioned it.

Sincerely yours,
Niklaus Wirth

То есть это действительно ошибка в документе.

Автор:  Александр Ильин [ Понедельник, 22 Ноябрь, 2010 10:47 ]
Заголовок сообщения:  Re: Совместимость записей в Oberon-07

Александр Ильин Пт ноя 19, 2010 9:28 am писал(а):
Крис Барроуз написал Вирту и получил подтверждение, что это ошибка в документе.

Rifat Пн ноя 22, 2010 12:27 pm писал(а):
Написал письмо Вирту, получил следующий ответ:
Niklaus Wirth писал(а):
It is remarkable, that I received the same comment just 2 weeks ago from somebody in Australia...
То есть это действительно ошибка в документе.
Тормозим?

Для справки, Крис Барроуз (Chris Burrows) живёт в Австралии.

Автор:  Маздайщик [ Среда, 12 Февраль, 2020 09:54 ]
Заголовок сообщения:  Re: Совместимость записей в Oberon-07

Прошу прощения, что поднимаю старую тему, но хочу заметить следующее. Я внимательно перечитал сообщение Вирта об Обероне-07 (редакция 3.5.2016), в нём нигде явно не написано, что можно присвоить указателю на базовую запись указатель на расширенную запись. Это явно подразумевается, иначе не было бы смысла в охране типа и ти́повом CASE для указателей.

В разделе 9.1 Assignments говорится только
Цитата:
In the case of records, the type of the source must be an extension of the type of the destination.

Просится добавить «In the case of records and pointers, …».

В сообщении об Обероне 1990-го года говорилось о возможности присваивания указателей так (курсив мой):
Цитата:
The type of the expression must be included by the type of the variable, or it must extend the type of the variable.

В сообщении об Обероне-07 подобной фразы нигде нет.

Страница 2 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/