На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 214 215 [216] 217 218 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата korvin @
    Цитата D_KEY @
    Зачем это делать в рантайме?

    что именно? с получением списка методов в рантайме С++-ники уже обломались один раз

    Зачем получать список методов в рантайме?

    Цитата
    Цитата D_KEY @
    А причем тут публичные поля ;) ?

    а при том, что единственный способ работать с алгебраическими типами ланных -- сопоставление с оброзцом, а для этого нужно знать структуру типа.
    Нет, для этого нужно иметь паттерны конструкторов :)
    А определение типа объекта обычное явление для современных языков.

    Добавлено
    Цитата korvin @
    Цитата D_KEY @
    "Отсутствие абстракции" - что это значит?

    это значит "я его слепила из того, что было", только кишками наружи выставила

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

    Цитата
    Цитата D_KEY @
    Классы используются по назначению. Иерархия классов в таком виде мало отличается от алгебраического типа данных.
    Вернее, алгебраические типы данных могут быть представлены или как C-style union + теги, или же в виде иерархии классов.

    только технически, но это полностью противоречит сути классов
    Поясни, будь добр.
    Сообщение отредактировано: D_KEY -
      Цитата D_KEY @
      для вызываемых объектов достаточно интерфейса или просто соглашения об использовании оператора(как в С++ или питоне).

      и это уже работа на уровне метаклассов. вот полноценные интерфейсы можно описать с помощью метаклассов в объектной системе, где их нет изначально, но есть MOP
        Цитата korvin @
        Цитата D_KEY @
        Синглитоны в той же scala описываются просто с помощью object

        дык потому что там нет метаклассов

        Добавлено
        Цитата D_KEY @
        просто static-член класса

        это уже работа на уровне метакласса

        Но это возможно в языках, где их нет. Речь же об этом шла. Зачем усложнять язык, если это никому не нужно?
          Цитата D_KEY @
          Зачем получать список методов в рантайме?

          чтобы узнать, на какие сообшения может ответить неизвестный объект. // K.O.
            Цитата korvin @
            Цитата D_KEY @
            для вызываемых объектов достаточно интерфейса или просто соглашения об использовании оператора(как в С++ или питоне).

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

            Не сомневаюсь. Вопрос в другом - насколько нужны метаклассы, как самостоятельное понятие в языке.
              Цитата korvin @
              выведи типы параметров шаблона

              Можно, конечно, придраться к формулировке... Ну, да Бог с ним - просто поясните свою мысль.
              Цитата korvin @
              список всех экземпляров шаблона в рантайме

              Здесь мне тоже потребуется пояснение - что такое "экземпляр шаблона"?
              Цитата korvin @
              измени инстансы шаблона в рантайме при смене параметра шаблона

              Не, я определённо тупой :yes-sad: А что здесь имелось в виду?
              Сообщение отредактировано: MyNameIsIgor -
                Цитата korvin @
                Цитата D_KEY @
                Зачем получать список методов в рантайме?

                чтобы узнать, на какие сообшения может ответить неизвестный объект. // K.O.

                Зачем работать с неизвестным объектом?
                  Цитата D_KEY @
                  Нет, для этого нужно иметь паттерны конструкторов :)
                  А определение типа объекта обычное явление для современных языков.

                  не нужно, это вырывание гланд через жопу
                    Цитата korvin @
                    Цитата D_KEY @
                    Нет, для этого нужно иметь паттерны конструкторов :)
                    А определение типа объекта обычное явление для современных языков.

                    не нужно, это вырывание гланд через жопу

                    А можно узнать, почему?
                      Цитата D_KEY @
                      Поясни, будь добр.

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

                      Добавлено
                      Цитата D_KEY @
                      Но это возможно в языках, где их нет. Речь же об этом шла. Зачем усложнять язык, если это никому не нужно?

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

                      Добавлено
                      Цитата D_KEY @
                      А можно узнать, почему?

                      потому что захламление пространства имен типов, потому что вводятся доп. конструкции в язык, которые не описывают собственно абстракцию
                      Сообщение отредактировано: korvin -
                        Цитата korvin @
                        Цитата D_KEY @
                        Поясни, будь добр.

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

                        В общем случае, он не набор полей, но может являться набором атрибутов и ничего страшного в этом нет.

                        Цитата
                        так вот алг.типы -- это тупо "набор полей"

                        Не совсем. Они вводят новую абстракцию, в отличие от "набора полей".

                        Цитата
                        Цитата D_KEY @
                        Но это возможно в языках, где их нет. Речь же об этом шла. Зачем усложнять язык, если это никому не нужно?

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

                        Цитата
                        Цитата D_KEY @
                        А можно узнать, почему?

                        потому что захламление пространства имен типов, потому что вводятся доп. конструкции в язык, которые не описывают собственно абстракцию
                        Описывают.
                        А в ОО-мире алгебраические типы данных вполне можно рассматривать как абстрактный класс + фиксированный(или нет) набор конкретных классов.
                        Сообщение отредактировано: D_KEY -
                          Цитата korvin @
                          когда я просил спецификатор доступа, позволяющий обратиться к методам объекта-члена класса, но не иметь возможность получить его самого, а теперь удивленно хлопаете глазками.

                          Это глупость потому что. Обращение к методам это всегда обращение к экземпляру через this.
                          Цитата korvin @
                          чтобы узнать, на какие сообшения может ответить неизвестный объект. // K.O.

                          Для неизвестных объектов, чтобы они были не такими уж неизвестными нужно разработать протокол взаимодействия. Ты сам себе противоречишь - то ратуешь за внесение максимального количества семантики метода в его сигнатуру, то готов по сигнатуре метода, предоставляемой компилятором угадывать его семантику и тем самым работать с неизвестными объектами.
                            Цитата D_KEY @
                            Не совсем. Они вводят новую абстракцию, в отличие от "набора полей".

                            кто "они"? алг.типы -- это просто наборы полей, где нулевое поле -- метка конструктора

                            Добавлено
                            Цитата Мяут-Настоящий @
                            Это глупость потому что. Обращение к методам это всегда обращение к экземпляру через this.

                            это не глупость и это есть в Аде

                            Добавлено
                            Цитата D_KEY @
                            Спорное утверждение. Проще то, что легче понять.

                            ну одну простую общую абстракцию проще понять, чем кучу специфичных
                              Вот так и непонял, нафига взаимодействие с "неизвестными объектами"

                              ExpandedWrap disabled
                                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 @
                              это не глупость и это есть в Аде

                              Ну да-да. Жабры тоже собакам пришивать надо, они же у рыб есть!
                              Сообщение отредактировано: Мяут-Настоящий -
                                Цитата D_KEY @
                                Описывают.
                                А в ОО-мире алгебраические типы данных вполне можно рассматривать как абстрактный класс + фиксированный(или нет) набор конкретных классов.

                                нет. нельзя, т.к. класс сам по себе не предоставляет должной абстракции. для алг. типов набор конструкторов строго фиксирован

                                Добавлено
                                Цитата Мяут-Настоящий @
                                Ну да-да. Жабры тоже собакам пришивать надо, они же у рыб есть!

                                а поадекватней сказать нечего?

                                Добавлено
                                Цитата Мяут-Настоящий @
                                Вот так и непонял, нафига взаимодействие с "неизвестными объектами"

                                затем, что весь юниксовый шелл по сути работа с неизвестными объектами -- разбор текстового IO
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 214 215 [216] 217 218 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.3476 ]   [ 15 queries used ]   [ Generated: 1.08.26, 13:37 GMT ]