Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.156] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 214 215 [216] 217 218 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#3226
,
|
|
|
|
Зачем получать список методов в рантайме? Цитата Нет, для этого нужно иметь паттерны конструкторов а при том, что единственный способ работать с алгебраическими типами ланных -- сопоставление с оброзцом, а для этого нужно знать структуру типа. А определение типа объекта обычное явление для современных языков. Добавлено Почему? Объясни разницу. Вот в Nemerle, например, атд реализованы также через классы, правда в языке свой синтаксический сахар для этого, называется variant. Цитата Поясни, будь добр. Цитата D_KEY @ Классы используются по назначению. Иерархия классов в таком виде мало отличается от алгебраического типа данных. Вернее, алгебраические типы данных могут быть представлены или как C-style union + теги, или же в виде иерархии классов. только технически, но это полностью противоречит сути классов |
|
Сообщ.
#3227
,
|
|
|
|
Цитата D_KEY @ для вызываемых объектов достаточно интерфейса или просто соглашения об использовании оператора(как в С++ или питоне). и это уже работа на уровне метаклассов. вот полноценные интерфейсы можно описать с помощью метаклассов в объектной системе, где их нет изначально, но есть MOP |
|
Сообщ.
#3228
,
|
|
|
|
Цитата korvin @ Но это возможно в языках, где их нет. Речь же об этом шла. Зачем усложнять язык, если это никому не нужно? |
|
Сообщ.
#3229
,
|
|
|
|
Цитата D_KEY @ Зачем получать список методов в рантайме? чтобы узнать, на какие сообшения может ответить неизвестный объект. // K.O. |
|
Сообщ.
#3230
,
|
|
|
|
Цитата korvin @ Цитата D_KEY @ для вызываемых объектов достаточно интерфейса или просто соглашения об использовании оператора(как в С++ или питоне). и это уже работа на уровне метаклассов. вот полноценные интерфейсы можно описать с помощью метаклассов в объектной системе, где их нет изначально, но есть MOP Не сомневаюсь. Вопрос в другом - насколько нужны метаклассы, как самостоятельное понятие в языке. |
|
Сообщ.
#3231
,
|
|
|
|
Можно, конечно, придраться к формулировке... Ну, да Бог с ним - просто поясните свою мысль. Здесь мне тоже потребуется пояснение - что такое "экземпляр шаблона"? Не, я определённо тупой А что здесь имелось в виду? |
|
Сообщ.
#3232
,
|
|
|
|
Цитата korvin @ Цитата D_KEY @ Зачем получать список методов в рантайме? чтобы узнать, на какие сообшения может ответить неизвестный объект. // K.O. Зачем работать с неизвестным объектом? |
|
Сообщ.
#3233
,
|
|
|
|
Цитата D_KEY @ Нет, для этого нужно иметь паттерны конструкторов А определение типа объекта обычное явление для современных языков. не нужно, это вырывание гланд через жопу |
|
Сообщ.
#3234
,
|
|
|
|
Цитата korvin @ Цитата D_KEY @ Нет, для этого нужно иметь паттерны конструкторов А определение типа объекта обычное явление для современных языков. не нужно, это вырывание гланд через жопу А можно узнать, почему? |
|
Сообщ.
#3235
,
|
|
|
|
Цитата D_KEY @ Поясни, будь добр. что "пояни"? вы же сами твердили мне, что "класс -- это не просто набор полей", когда я просил спецификатор доступа, позволяющий обратиться к методам объекта-члена класса, но не иметь возможность получить его самого, а теперь удивленно хлопаете глазками. так вот алг.типы -- это тупо "набор полей", ни разделения доступа, ничего там нет. в отличие от классов. Добавлено Цитата D_KEY @ Но это возможно в языках, где их нет. Речь же об этом шла. Зачем усложнять язык, если это никому не нужно? это наоборот упрощение, а введение в язык каких-то специальных понятий для реализации части возможностей более общих вещей -- это уже усложнение Добавлено Цитата D_KEY @ А можно узнать, почему? потому что захламление пространства имен типов, потому что вводятся доп. конструкции в язык, которые не описывают собственно абстракцию |
|
Сообщ.
#3236
,
|
|
|
|
Цитата korvin @ Цитата D_KEY @ Поясни, будь добр. что "пояни"? вы же сами твердили мне, что "класс -- это не просто набор полей", когда я просил спецификатор доступа, позволяющий обратиться к методам объекта-члена класса, но не иметь возможность получить его самого, а теперь удивленно хлопаете глазками. В общем случае, он не набор полей, но может являться набором атрибутов и ничего страшного в этом нет. Цитата так вот алг.типы -- это тупо "набор полей" Не совсем. Они вводят новую абстракцию, в отличие от "набора полей". Цитата Спорное утверждение. Проще то, что легче понять.Цитата D_KEY @ Но это возможно в языках, где их нет. Речь же об этом шла. Зачем усложнять язык, если это никому не нужно? это наоборот упрощение, а введение в язык каких-то специальных понятий для реализации части возможностей более общих вещей -- это уже усложнение Цитата Описывают.Цитата D_KEY @ А можно узнать, почему? потому что захламление пространства имен типов, потому что вводятся доп. конструкции в язык, которые не описывают собственно абстракцию А в ОО-мире алгебраические типы данных вполне можно рассматривать как абстрактный класс + фиксированный(или нет) набор конкретных классов. |
|
Сообщ.
#3237
,
|
|
|
|
Цитата korvin @ когда я просил спецификатор доступа, позволяющий обратиться к методам объекта-члена класса, но не иметь возможность получить его самого, а теперь удивленно хлопаете глазками. Это глупость потому что. Обращение к методам это всегда обращение к экземпляру через this. Цитата korvin @ чтобы узнать, на какие сообшения может ответить неизвестный объект. // K.O. Для неизвестных объектов, чтобы они были не такими уж неизвестными нужно разработать протокол взаимодействия. Ты сам себе противоречишь - то ратуешь за внесение максимального количества семантики метода в его сигнатуру, то готов по сигнатуре метода, предоставляемой компилятором угадывать его семантику и тем самым работать с неизвестными объектами. |
|
Сообщ.
#3238
,
|
|
|
|
Цитата D_KEY @ Не совсем. Они вводят новую абстракцию, в отличие от "набора полей". кто "они"? алг.типы -- это просто наборы полей, где нулевое поле -- метка конструктора Добавлено Цитата Мяут-Настоящий @ Это глупость потому что. Обращение к методам это всегда обращение к экземпляру через this. это не глупость и это есть в Аде Добавлено Цитата D_KEY @ Спорное утверждение. Проще то, что легче понять. ну одну простую общую абстракцию проще понять, чем кучу специфичных |
|
Сообщ.
#3239
,
|
|
|
|
Вот так и непонял, нафига взаимодействие с "неизвестными объектами"
![]() ![]() class FileInterface { public: virtual void Open(std::string FileName) = 0; virtual void Close() = 0; std::string Get() = 0; void Put(const std::string& ) = 0; }; class FileClass : public FileInterface { // ... }; class SocketClass { public: class TCPPacket {}; virtual void Open(std::string ntop); virtual void Close() ; TCPPacket Get(); void Put(const TCPPacket& ); }; template<class SomeClass> void SomeMethod(const SomeClass* sc) { FileInterface* fi = dynamic_cast<FileInterface*>(sc); if(!fi) return; fi->Open('/etc/passwd'); //... } В примере явно запрещено работать с сокетами функции SomeMethod Цитата korvin @ это не глупость и это есть в Аде Ну да-да. Жабры тоже собакам пришивать надо, они же у рыб есть! |
|
Сообщ.
#3240
,
|
|
|
|
Цитата D_KEY @ Описывают. А в ОО-мире алгебраические типы данных вполне можно рассматривать как абстрактный класс + фиксированный(или нет) набор конкретных классов. нет. нельзя, т.к. класс сам по себе не предоставляет должной абстракции. для алг. типов набор конструкторов строго фиксирован Добавлено Цитата Мяут-Настоящий @ Ну да-да. Жабры тоже собакам пришивать надо, они же у рыб есть! а поадекватней сказать нечего? Добавлено Цитата Мяут-Настоящий @ Вот так и непонял, нафига взаимодействие с "неизвестными объектами" затем, что весь юниксовый шелл по сути работа с неизвестными объектами -- разбор текстового IO |