OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Воскресенье, 20 Октябрь, 2019 08:46

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




Начать новую тему Ответить на тему  [ Сообщений: 69 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
 Заголовок сообщения: Re: есть ли ООП в Обероне-07
СообщениеДобавлено: Четверг, 20 Октябрь, 2016 22:52 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 909
Откуда: Киев
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)

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: есть ли ООП в Обероне-07
СообщениеДобавлено: Пятница, 21 Октябрь, 2016 15:01 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1026
Comdiv писал(а):
Обратите внимание, что речь как раз идёт не о машинном уровне.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: есть ли ООП в Обероне-07
СообщениеДобавлено: Пятница, 21 Октябрь, 2016 16:23 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 714
Откуда: Барнаул
Comdiv писал(а):
Не то.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: есть ли ООП в Обероне-07
СообщениеДобавлено: Пятница, 21 Октябрь, 2016 23:14 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 909
Откуда: Киев
Kemet писал(а):
Дык, кто утверждает-то, что Си это ОО ЯП?

Я.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: есть ли ООП в Обероне-07
СообщениеДобавлено: Суббота, 22 Октябрь, 2016 12:10 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1026
Всё-таки есть разница между использованием и ролью. И потом, разве используя ООП в С не надо от каких-то его средств отказаться?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: есть ли ООП в Обероне-07
СообщениеДобавлено: Суббота, 22 Октябрь, 2016 17:13 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 714
Откуда: Барнаул
Comdiv писал(а):
Kemet писал(а):
Дык, кто утверждает-то, что Си это ОО ЯП?

Я.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: есть ли ООП в Обероне-07
СообщениеДобавлено: Суббота, 22 Октябрь, 2016 20:30 

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: есть ли ООП в Обероне-07
СообщениеДобавлено: Суббота, 22 Октябрь, 2016 20:33 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: есть ли ООП в Обероне-07
СообщениеДобавлено: Воскресенье, 23 Октябрь, 2016 10:06 
Аватара пользователя

Зарегистрирован: Пятница, 23 Май, 2008 09:24
Сообщения: 32
Откуда: Барнаул
Kemet писал(а):

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

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 69 ]  На страницу Пред.  1, 2, 3, 4

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


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

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


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

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