OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 13:12

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Совместимость записей в Oberon-07
СообщениеДобавлено: Среда, 17 Ноябрь, 2010 11:17 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Александр Ильин писал(а):
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?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Совместимость записей в Oberon-07
СообщениеДобавлено: Среда, 17 Ноябрь, 2010 17:19 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Лично я не думаю, что это опечатка, так как в ревизии 1.11.2008 та же самая фраза. А если это была бы опечатка, то наверно за год она бы обнаружилась.


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

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Rifat писал(а):
Может лучше у самого Вирта спросить. Есть у кого-нибудь его e-mail?
Крис Барроуз написал Вирту и получил подтверждение, что это ошибка в документе.


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

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Rifat писал(а):
Лично я не думаю, что это опечатка, так как в ревизии 1.11.2008 та же самая фраза.
Так рассуждать, получится, что не опечатка и перепутанные в трёх изданиях "Алгоритмов и структур данных" столбцы в таблице логических операций :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Совместимость записей в Oberon-07
СообщениеДобавлено: Пятница, 19 Ноябрь, 2010 17:36 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Еще в подтверждение моей точки зрения, что это не описка, в документе 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.

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


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

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Rifat писал(а):
Еще в подтверждение моей точки зрения, что это не описка, в документе Differences between Oberon-07 and Oberon написано:
... То есть здесь говорится о том, что типу большего размера может присваиваться тип меньшего размера, то есть расширенной записи, может присваиваться базовый тип записи.
Про записи тут ничего не говорится.

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

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

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


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

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

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

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

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

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


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

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Валерий Лаптев писал(а):
При передаче параметров срезки нет, а в присваивании - есть...
, но только там, где это разрешено.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Совместимость записей в Oberon-07
СообщениеДобавлено: Понедельник, 22 Ноябрь, 2010 09:27 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Написал письмо Вирту, получил следующий ответ:
Цитата:
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

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


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

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Александр Ильин Пт ноя 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) живёт в Австралии.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Совместимость записей в Oberon-07
СообщениеДобавлено: Среда, 12 Февраль, 2020 09:54 

Зарегистрирован: Суббота, 02 Февраль, 2013 16:19
Сообщения: 17
Прошу прощения, что поднимаю старую тему, но хочу заметить следующее. Я внимательно перечитал сообщение Вирта об Обероне-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 подобной фразы нигде нет.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB