OberonCore
https://forum.oberoncore.ru/

В чем различие Oberon-2 и Oberon-07
https://forum.oberoncore.ru/viewtopic.php?f=30&t=5988
Страница 1 из 1

Автор:  perloid [ Среда, 28 Декабрь, 2016 09:56 ]
Заголовок сообщения:  В чем различие Oberon-2 и Oberon-07

я так понял основное отличие в том что в Oberon-07 нет ООП? это так?
как раз ищу язык язык без ооп чтобы писать на процедурах и простых структурах без привязанных методов, без наследования и тому подобной ООП-лабуды

Автор:  Comdiv [ Среда, 28 Декабрь, 2016 12:47 ]
Заголовок сообщения:  Re: В чем различие Oberon-2 и Oberon-07

Насколько можно судить по постоянно возникающим обсуждениям то тут, то там, то это вопрос дискусионный. Связанных методов как понятия языка в Обероне-07 действительно нет, тем не менее, я считаю, что ООП в нём есть из-за широты этого понятия. Если быть точным - Oberon-07 поддерживает ООП, но не является ориентированным на ООП.

Также, в Oberon-07 нет указателей на массивы и соответственно массивов с динамически задаваемыми размерами. Меньшее количество числовых типов: из целочисленных есть только 32-битный INTEGER и беззнаковый BYTE, из двоичных дробей - только REAL. Ещё много чего по мелочи.

Забыл указать ещё одну особенность - вложенные процедуры могут работать только с локальными и глобальными объявлениями, объявления объемлющей процедуры невидимы.

Автор:  ilovb [ Среда, 28 Декабрь, 2016 12:58 ]
Заголовок сообщения:  Re: В чем различие Oberon-2 и Oberon-07

Говорить "двоичная дробь" не совсем корректно.

Изображение

Автор:  Comdiv [ Среда, 28 Декабрь, 2016 13:04 ]
Заголовок сообщения:  Re: В чем различие Oberon-2 и Oberon-07

Не исключаю, что я чего-то не учитываю, но пока я склонен считать, что те типы, которые заданы в стандарте IEEE 754 - это именно двоичные дроби. Если это не так, то поясните в чём не совсем корректность.

Обозначения типов "float" и ещё хуже "REAL" считаю неудачными.

Автор:  ilovb [ Среда, 28 Декабрь, 2016 13:58 ]
Заголовок сообщения:  Re: В чем различие Oberon-2 и Oberon-07

Вот именно "float" будет наиболее корректно.
Двоичная дробь - это конкретная форма записи числа.
Но в данном случае форма записи - это двоичное число с плавающей точкой, которое еще и всякие NaNы могёт.

Автор:  Comdiv [ Среда, 28 Декабрь, 2016 14:31 ]
Заголовок сообщения:  Re: В чем различие Oberon-2 и Oberon-07

По вашему, float - плавающая (точка/запятая) - это не конкретная форма записи числа?

Цитата:
Но в данном случае форма записи - это двоичное число с плавающей точкой, которое еще и всякие NaNы могёт.
То есть, если в этом предложении заменить "двоичное число с плавающей точкой" на "двоичную дробь", то это будет некорректно?

Автор:  Илья Ермаков [ Среда, 28 Декабрь, 2016 15:34 ]
Заголовок сообщения:  Re: В чем различие Oberon-2 и Oberon-07

perloid писал(а):
я так понял основное отличие в том что в Oberon-07 нет ООП? это так?
как раз ищу язык язык без ооп чтобы писать на процедурах и простых структурах без привязанных методов, без наследования и тому подобной ООП-лабуды


Ну, в целом, да.

Если читать Project Oberon, видно, что проект, всё-таки, очень компактный, это раз.
Во-вторых, многие вещи там сделаны без поддержки нескольких реализаций (допустим, тексты или файлы).
Т.е. просто абстрактный тип данных и процедуры модуля.

Т.е. подход "метод как процедурное поле" вообще применять им приходится редко, обходятся процедурными.
В основном одно процедурное поле HandleMsg (и определение объекта в стиле Smalltalk - сущность, получающая динамически распознаваемые сообщения).

В задачах, где вы хорошо формализуете-абстрагируете, наопределяете абстрактных типов со многими реализациями (т.е. в любой хорошей прикладной задаче), разработка на базовом Обероне даст большое и бессмысленное раздувание кода.
Ну и у меня, например, постоянно используется Domain-Specific-Languages на основе цепочек obj.A().B().C()...Z().

Автор:  Rifat [ Среда, 28 Декабрь, 2016 17:36 ]
Заголовок сообщения:  Re: В чем различие Oberon-2 и Oberon-07

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

Также, в Oberon-07 нет указателей на массивы и соответственно массивов с динамически задаваемыми размерами. Меньшее количество числовых типов: из целочисленных есть только 32-битный INTEGER и беззнаковый BYTE, из двоичных дробей - только REAL. Ещё много чего по мелочи.

Oberon-07 ООП поддерживает. Там только нет синтаксического сахара, которое скрывает то, как реализованы некоторые вещи в ООП. И можно применять различные подходы, кто-то может в записи добавлять поля, которые являются указателями на функции, но при этом, если есть несколько функций, то каждая запись будет нести накладные расходы на указатели в каждой записи. Те, кто знают, внутренности ООП в C++ могут также реализовать подобное и на Оберон-07 (если интересно могу рассказать, как я себе это представляю, но это уже другой вопрос).

По поводу указателей на массивы, да, в языке Oberon-07 их нет, но компилятор Oberon-07М дополняет язык этой возможностью. Я считаю, что если есть открытые массивы, как параметры процедур, то должны быть и указатели на массивы, ради симметрии. Какой-то существенной критики в отношении указателей на массивы кроме того, что это немного усложняет компилятор, я не знаю. Если кто-то знает причину, почему (*эти молодые люди не могут соединить сердца*)указатели на массивы должны быть запрещены – скажите сейчас или вечно храните молчание. :)

Автор:  Comdiv [ Среда, 28 Декабрь, 2016 18:24 ]
Заголовок сообщения:  Re: В чем различие Oberon-2 и Oberon-07

Это позволяет упростить или оптимизировать менеджер памяти, так как разброс возможных размеров объектов в куче ограничен количеством типов в модуле, что может быть очень важным для ограниченных устройств. Также, можно разработать стратегию распределения, уменьшающей фрагментированность памяти по сравнению с кусками памяти произвольных размеров. Вообще, это ограничение является компромиссным по отношению к требованиям к программам для надёжных встраиваемых решений, предписывающих полный запрет использования динамической памяти.

Автор:  ilovb [ Четверг, 29 Декабрь, 2016 10:11 ]
Заголовок сообщения:  Re: В чем различие Oberon-2 и Oberon-07

Comdiv писал(а):
По вашему, float - плавающая (точка/запятая) - это не конкретная форма записи числа?

Цитата:
Но в данном случае форма записи - это двоичное число с плавающей точкой, которое еще и всякие NaNы могёт.
То есть, если в этом предложении заменить "двоичное число с плавающей точкой" на "двоичную дробь", то это будет некорректно?


Да. Так как двоичная дробь может быть и с фиксированной точкой.

Вы учитывайте, что мы говорим про конкретный тип, с конкретным форматом в памяти компьютера, с конкретными особенностями вычислений.

Автор:  Comdiv [ Четверг, 29 Декабрь, 2016 12:23 ]
Заголовок сообщения:  Re: В чем различие Oberon-2 и Oberon-07

Вот и приплыли к логическому противоречию в указании некорректности.

Двоичные дроби с фиксированной точкой и двоичные дроби с плавающей точкой - это двоичные дроби, поэтому и термин корректен.

Автор:  ilovb [ Четверг, 29 Декабрь, 2016 13:48 ]
Заголовок сообщения:  Re: В чем различие Oberon-2 и Oberon-07

Так вот оно какое "абстрагирующее мышление"...
info21, вы выиграли. Снимаю шляпу.

ps Comdiv, забейте. Называйте как хотите.

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