OberonCore
https://forum.oberoncore.ru/

Обобщённые типы в Обероне
https://forum.oberoncore.ru/viewtopic.php?f=30&t=5366
Страница 1 из 2

Автор:  Маздайщик [ Среда, 18 Март, 2015 12:29 ]
Заголовок сообщения:  Обобщённые типы в Обероне

В 1997 году Пол Рой и Клеменс Шиперски (Paul Roe and Clemens Szyperski) предложили расширение Оберона параметризованными типами:

http://research.microsoft.com/en-us/um/people/cszypers/pub/jmlc97.pdf

Подход основан на стирании типов, один-в-один имеющийся сегодня в Java, при этом в последней параметризованные типы появились в 2004 году, а статья вышла в 1997.

Странно, что (а) ни в одной известной реализации Оберона (включая КП) до сих пор этот механизм не реализован (на сколько я знаю) и (б) на этом форуме данная статья ни разу не обсуждалась. Добавление обобщённых типов в Оберон когда-то обсужадось — участники форума сошлись на том, что лучше вручную генерить код и тут же его компилировать, т.е. наши костыли удобнее.

Автор:  Иван Кузьмицкий [ Среда, 18 Март, 2015 12:53 ]
Заголовок сообщения:  Re: Обобщённые типы в Обероне

Маздайщик писал(а):
на этом форуме данная статья ни разу не обсуждалась.
Обсуждалась

Автор:  Маздайщик [ Среда, 18 Март, 2015 15:35 ]
Заголовок сообщения:  Re: Обобщённые типы в Обероне

Обсуждалась в закрытом разделе, поэтому поиском я сначала не нашёл (не был залогинен). Спасибо.

Автор:  Иван Кузьмицкий [ Среда, 18 Март, 2015 16:32 ]
Заголовок сообщения:  Re: Обобщённые типы в Обероне

Маздайщик писал(а):
Обсуждалась в закрытом разделе, поэтому поиском я сначала не нашёл (не был залогинен). Спасибо.
Не за что, я сам не обратил внимания, что тема в "Карантине".

Автор:  Kemet [ Четверг, 19 Март, 2015 08:29 ]
Заголовок сообщения:  Re: Обобщённые типы в Обероне

Параметризованные типы есть в OO2C

Автор:  Маздайщик [ Понедельник, 23 Март, 2015 11:59 ]
Заголовок сообщения:  Re: Обобщённые типы в Обероне

Не нашёл в руководстве на http://ooc.sourceforge.net/OOCref/OOCref_toc.html упоминания об этом.

Автор:  Kemet [ Понедельник, 23 Март, 2015 17:25 ]
Заголовок сообщения:  Re: Обобщённые типы в Обероне

Нужно читать документ
/doc/from-v1-to-v2/oo2c-v2.(html, pdf)
раздел Parametric Types

Автор:  Маздайщик [ Понедельник, 23 Март, 2015 19:15 ]
Заголовок сообщения:  Re: Обобщённые типы в Обероне

Там генерики сделаны по-своему, не по статье Роя и Шиперски. И, кстати, требуется, чтобы типы-параметры были записями или указателями на запись и расширяли заранее выбранный тип (для библиотечных генериков это тип Object.Object), в отличие от статьи. Подозреваю, что авторы компилятора не были знакомы с обсуждаемой статьёй, а сделали всё самостоятельно, что ещё раз подтверждает необходимость в параметрическом полиморфизме в Обероне.

Автор:  Kemet [ Понедельник, 23 Март, 2015 22:37 ]
Заголовок сообщения:  Re: Обобщённые типы в Обероне

Документация не соответствует текущей реализации - если посмотреть исходники OO2C, то можно увидеть, что параметрами могут быть не только записи, но и базовые типы.

Автор:  Kemet [ Понедельник, 23 Март, 2015 23:11 ]
Заголовок сообщения:  Re: Обобщённые типы в Обероне

хотя... не уверен, что смотрел оригинальные исходники, надо глянуть

Автор:  Пётр Кушнир [ Вторник, 24 Март, 2015 09:07 ]
Заголовок сообщения:  Re: Обобщённые типы в Обероне

Маздайщик писал(а):
Подозреваю, что авторы компилятора не были знакомы с обсуждаемой статьёй, а сделали всё самостоятельно, что ещё раз подтверждает необходимость в параметрическом полиморфизме в Обероне.
Сами выберите себе ярлык за этот стыдный пример демагогии. :)

Автор:  perloid [ Вторник, 27 Декабрь, 2016 11:43 ]
Заголовок сообщения:  Re: Обобщённые типы в Обероне

Цитата:
Обобщённые типы в Обероне

это оксюморон

Автор:  GameHunter [ Четверг, 29 Декабрь, 2016 01:44 ]
Заголовок сообщения:  Re: Обобщённые типы в Обероне

Однако, иногда необходимость в них возникает - например, комплекснве числа и численные алгоритмы, одинаково пригодные как для вещественных, так и для комплексных чисел.

Автор:  Valery Solovey [ Четверг, 29 Декабрь, 2016 21:30 ]
Заголовок сообщения:  Re: Обобщённые типы в Обероне

Вы, наверное, про перегрузку говорите, а не про обобщённые типы...

Автор:  Info21 [ Пятница, 30 Декабрь, 2016 10:52 ]
Заголовок сообщения:  Re: Обобщённые типы в Обероне

GameHunter писал(а):
Однако, иногда необходимость в них возникает - например, комплекснве числа и численные алгоритмы, одинаково пригодные как для вещественных, так и для комплексных чисел.
Можно чуть подробней?

Автор:  GameHunter [ Суббота, 31 Декабрь, 2016 01:47 ]
Заголовок сообщения:  Re: Обобщённые типы в Обероне

Допустим, надо решить два эллиптических уравнения в одной программе (потому что они являются элементами более сложной модели). Одно уравнение комплексное, другое вещественное. Один метод решения одинаково хорошо подходит для обоих уравнений. Соответственно реализуем метод в отдельном модуле и далее на его основе описываем уравнения.

Однако как описать уравнения с разными типами данных для одного метода решения?

Можно описать вещественное уравнение как частный случай комплексного и использовать один комплексный модуль. Тогда получаем оверхед по памяти и производительности.

Можно написать два почти идентичных модуля - один вещественный, другой комплексный. Тогда получаем двойную работу по их сопровождению.

Если бы в обероне имелись родовые модули как в ада, проблема решалась бы простой параметризацией родового модуля вещественным или комплексным типом.

Автор:  Info21 [ Суббота, 31 Декабрь, 2016 06:13 ]
Заголовок сообщения:  Re: Обобщённые типы в Обероне

Большое спасибо.

Но ведь детали вроде ошибок округления и потери точности в двух случаях требуют разной трактовки?

Не убеждён.

Автор:  GameHunter [ Суббота, 31 Декабрь, 2016 19:50 ]
Заголовок сообщения:  Re: Обобщённые типы в Обероне

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

Автор:  Info21 [ Суббота, 31 Декабрь, 2016 20:20 ]
Заголовок сообщения:  Re: Обобщённые типы в Обероне

Но тогда, как минимум, уходит проблема поддержки двух версий.

Автор:  GameHunter [ Суббота, 31 Декабрь, 2016 21:00 ]
Заголовок сообщения:  Re: Обобщённые типы в Обероне

Куда уходит? Всё равно необходимо два модуля, отличающиеся как минимум одной строчкой:
Код:
TYPE Numver = REAL;

или
Код:
TYPE Numver = COMPLEX;

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