OberonCore

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

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




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

Зарегистрирован: Воскресенье, 04 Январь, 2009 12:00
Сообщения: 52
я так понял основное отличие в том что в Oberon-07 нет ООП? это так?
как раз ищу язык язык без ооп чтобы писать на процедурах и простых структурах без привязанных методов, без наследования и тому подобной ООП-лабуды


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

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

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

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


Последний раз редактировалось Comdiv Среда, 28 Декабрь, 2016 15:11, всего редактировалось 1 раз.

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

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Говорить "двоичная дробь" не совсем корректно.

Изображение


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

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Не исключаю, что я чего-то не учитываю, но пока я склонен считать, что те типы, которые заданы в стандарте IEEE 754 - это именно двоичные дроби. Если это не так, то поясните в чём не совсем корректность.

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


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

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


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

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
По вашему, float - плавающая (точка/запятая) - это не конкретная форма записи числа?

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


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

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
perloid писал(а):
я так понял основное отличие в том что в Oberon-07 нет ООП? это так?
как раз ищу язык язык без ооп чтобы писать на процедурах и простых структурах без привязанных методов, без наследования и тому подобной ООП-лабуды


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

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

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

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


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

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

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

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

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


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

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Это позволяет упростить или оптимизировать менеджер памяти, так как разброс возможных размеров объектов в куче ограничен количеством типов в модуле, что может быть очень важным для ограниченных устройств. Также, можно разработать стратегию распределения, уменьшающей фрагментированность памяти по сравнению с кусками памяти произвольных размеров. Вообще, это ограничение является компромиссным по отношению к требованиям к программам для надёжных встраиваемых решений, предписывающих полный запрет использования динамической памяти.


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

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Comdiv писал(а):
По вашему, float - плавающая (точка/запятая) - это не конкретная форма записи числа?

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


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

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


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

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Вот и приплыли к логическому противоречию в указании некорректности.

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


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

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Так вот оно какое "абстрагирующее мышление"...
info21, вы выиграли. Снимаю шляпу.

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

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


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

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


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

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