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/ |