OberonCore
https://forum.oberoncore.ru/

есть ли ООП в Обероне-07
https://forum.oberoncore.ru/viewtopic.php?f=115&t=1708
Страница 4 из 4

Автор:  Comdiv [ Четверг, 20 Октябрь, 2016 22:52 ]
Заголовок сообщения:  Re: есть ли ООП в Обероне-07

Kemet писал(а):
Object-oriented programming with ANSI-C ( pdf )
Код:
extern const void * Object;     /* new(Object); */
int differ (const void * a, const void * b);


Не то.

Цитата:
Object-Oriented Programming In C
Код:
struct s1
{  int x;
   int y;
};
struct s2
{  int x;
   int y;
   int z;
};

struct s1 *s1p;
struct s2 s2s;
s1p = &s2s;

Не то

Цитата:
Overview of the C Object System. Using C as an high-level object-oriented language
The C Object System (COS) is a recent framework

Код:
#define COS_CLS_DEF_DCL(NAME) \
        enum { COS_CLS_LINE(NAME) = __LINE__ }; \
        static const STR COS_CLS_FILE(NAME) = __FILE__; \
        extern struct Class COS_CLS_NAME(NAME); \
        extern struct Class COS_MCL_NAME(NAME); \
        extern struct Class COS_PCL_NAME(NAME); \
        typedef struct NAME  COS_RCV_TYPE(              NAME) ; \
        typedef struct Class COS_RCV_TYPE(COS_PP_CAT( m,NAME)); \
        typedef struct Class COS_RCV_TYPE(COS_PP_CAT(pm,NAME)); \
        struct COS_PP_CAT( m,NAME); \
struct COS_PP_CAT(pm,NAME)

Мама дорогая.

Я бы ничего из этого не советовал бы использовать. Это как раз примеры скорее доказывающие, что Си - это не ООП язык, чем наоборот.

Автор:  Сергей Оборотов [ Пятница, 21 Октябрь, 2016 15:01 ]
Заголовок сообщения:  Re: есть ли ООП в Обероне-07

Comdiv писал(а):
Обратите внимание, что речь как раз идёт не о машинном уровне.

Машинный уровень платформозависим, как никак.

Автор:  Kemet [ Пятница, 21 Октябрь, 2016 16:23 ]
Заголовок сообщения:  Re: есть ли ООП в Обероне-07

Comdiv писал(а):
Не то.

Что значит "не то"? Это примеры объектно-ориентированного программирования на Си, реализованные средствами языка. Зачем имитировать Оберонвэй в Си я не понимаю.
Цитата:
Это как раз примеры скорее доказывающие, что Си - это не ООП язык, чем наоборот.

Дык, кто утверждает-то, что Си это ОО ЯП? Тем не менее, ООП-стиль можно реализовать, и можно реализовать ОО ОС. Например, старая добрая Винда относится к объектно-ориентированным ОС, хотя внутри там Си и Асм, как это реализовано можно посмотреть в SDK и в утекших исходниках или в Реактосе. Впрочем, по приведенным мной ссылкам, есть что-то подобное.

Автор:  Comdiv [ Пятница, 21 Октябрь, 2016 23:14 ]
Заголовок сообщения:  Re: есть ли ООП в Обероне-07

Kemet писал(а):
Дык, кто утверждает-то, что Си это ОО ЯП?

Я.

Потому что для использования ООП на Си:
    1. Не нужно ничего реализовывать.
    2. Есть поддержка со стороны языка в виде проверки типов.

По этой же причине и Оберон - объектно ориентированный язык, или, если быть точнее, язык, поддерживающий объектно ориентированное программирование. Вполне возможно, что весь спор вокруг терминологии возник из-за неверно расставленных акцентов.

Автор:  Сергей Оборотов [ Суббота, 22 Октябрь, 2016 12:10 ]
Заголовок сообщения:  Re: есть ли ООП в Обероне-07

Всё-таки есть разница между использованием и ролью. И потом, разве используя ООП в С не надо от каких-то его средств отказаться?

Автор:  Kemet [ Суббота, 22 Октябрь, 2016 17:13 ]
Заголовок сообщения:  Re: есть ли ООП в Обероне-07

Comdiv писал(а):
Kemet писал(а):
Дык, кто утверждает-то, что Си это ОО ЯП?

Я.

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

Автор:  Comdiv [ Суббота, 22 Октябрь, 2016 20:30 ]
Заголовок сообщения:  Re: есть ли ООП в Обероне-07

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

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

Автор:  Comdiv [ Суббота, 22 Октябрь, 2016 20:33 ]
Заголовок сообщения:  Re: есть ли ООП в Обероне-07

Сергей Оборотов писал(а):
Всё-таки есть разница между использованием и ролью. И потом, разве используя ООП в С не надо от каких-то его средств отказаться?
Нужно, как и в любом другом языке, поддерживающем свою долю ООП, и не поддерживающем остальные возможности.

Автор:  Иван Левашев [ Воскресенье, 23 Октябрь, 2016 10:06 ]
Заголовок сообщения:  Re: есть ли ООП в Обероне-07

Kemet писал(а):

Самые крутые по моему опыту — это Objective-C и SOM. Про второе можно почитать здесь. Если вратце, там есть движок, который активно принимает участие в создании структур полей и виртуальных таблиц, а программы и библиотеки работают при координации с этом движком. Движок SOM динамически генерирует и обновляет thunks, которые умеют вызывать методы класса. Если у класса нет потомков, можно сделать инструкцию прыжка по известному во время выполнения адресу. Если потомки есть, но нет ни одного такого, где бы этот класс добавлялся через непервый родительский класс, то можно сделать косвенный прыжок по известному смещению в таблице методов. Иначе сделать обычный поиск по таблице.

Это отличается от подхода, когда используются средства только языка C (или C++), и смещения полей дочерних классов зависят от статически вычисленных размеров родительских классов, что делает невозможным добавление полей и методов в родительские классы, не ломая зависимый код, который скомпилирован со старыми размерами.

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