На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (11) « Первая ... 6 7 [8] 9 10 ... Последняя » все  ( Перейти к последнему сообщению )  
> Python vs Delphi
    Цитата mo3r @
    э-ээ.. Этот код отличается от моего. Нужно передать в my_func2 то, что нам вернула my_func, а затем это удалить. Интересно, как это будет выглядеть с with? И сколько строчек он будет занимать? А если аргументов --- не один, а пять?

    Да ты что :)

    ExpandedWrap disabled
      type
        MyClass = class
          function GetThis: MyClass;
          property This: MyClass read GetThis;
        end;
       
      function MyClass.GetThis: MyClass;
      begin
        Result := Self;
      end;
       
      function my_func: MyClass; begin result := MyClass.Create(); end;
       
      procedure my_func2(mc: MyClass); begin ... end;
       
      begin
        with my_func do
        try
          my_func2(this);
        finally
          free;
        end;
      end.

    Цитата mo3r @
    Можно примерчик?

    И то же самое с интерфейсами:
    ExpandedWrap disabled
      type
        IMyClassInt = interface
          ...
        end;
        
        TMyClass = class(TInterfacedObject, IMyClassInt)
          ...
        end;
       
      function my_func: IMyClassInt; begin result := MyClass.Create(); end;
       
      procedure my_func2(mc: IMyClassInt); begin ... end;
      Цитата Smike @
      Да ты что :)

      Класс пришлось изменить, чтобы это поддерживалось. Да и в любом случае дополнительно 5 строчек.
      Цитата mo3r @
      А как у этой штуки с наследованием --- ведь TInterfacedObject --- это класс, не так ли? А это уже не даст отнаследовться от других классов.

      Smike, а на это что скажешь?
        Цитата mo3r @
        Smike, а на это что скажешь?

        А что мешает базовый класс от интерфейсного объекта унаследовать? TInterfacedObject - это такой же объект, только со счетчиком ссылок. Классы VCL и так интерфейсные:
        ExpandedWrap disabled
            TComponent = class(TPersistent, IInterface, IInterfaceComponentReference)
          Цитата Smike @
          А что мешает базовый класс от интерфейсного объекта унаследовать? TInterfacedObject - это такой же объект, только со счетчиком ссылок. Классы VCL и так интерфейсные:

          Вот я и говорю --- удобство разработки прямо сразу видно --- менять весь дизайн приложения из-за непродуманности языка.
            Цитата best_lamer @
            Таким образом со счетом (0:00:03) против (0:00:28) те 3 сек. против 28 сек. победил (фанфары барабаны) Delphi ;) Ура товарищи!

            Ничего противоестественного не вижу. Основное достоинство интерпретируемых языков в безопасности кода и более быстром процессе разработки.
              Цитата mo3r @
              Вот я и говорю --- удобство разработки прямо сразу видно --- менять весь дизайн приложения из-за непродуманности языка.

              Глупо утверждать, что это непродуманность языка. Мне это при разработке никогда не мешало. Просто архитектуру нужно изначально придумывать корректную. Давай на примере. Зачем может понадобиться создание 3-х одинаковых объектов, передача их в одну функцию и автоматическое их удаление?
                Цитата Smike @
                Да ты что :)

                А если таких аргументов, скажем, два, а? ;)
                  Цитата best_lamer @
                  PS С факториалом я не туда поглядел!

                  У меня хватило терпения до 70000! дальше еще считает... сколько максимально возможный факториал даже не представляю... У кого есть желание проверить точнее милости просим ;)
                    Цитата best_lamer @
                    У кого есть желание проверить точнее милости просим ;)

                    Что, так долго считает? :lol:

                    Добавлено
                    Цитата linuxfan @
                    А если таких аргументов, скажем, два, а? ;)

                    Если объяснишь зачем - тогда скажу как. А так я программировать не привык. Код пишется под задачу, а не под с целью точно продублировать какой-то другой код.
                      Сейчас подмешиваемые (Mix-in) классы вспомниать начнем...
                        Цитата Smike @
                        Если объяснишь зачем - тогда скажу как. А так я программировать не привык.

                        Ясно. Значит -- никак. Ну не очень-то и надо.
                        В C++ лямбда функций ведь нет (костыль, кажется, в boost положили?)
                          Цитата linuxfan @
                          В C++ лямбда функций ведь нет (костыль, кажется, в boost положили?)

                          Это означает, что эти функции могут быть реализованы средставми языка. По этому про "костыли" - не надо.
                            Цитата linuxfan @
                            Ничего противоестественного не вижу. Основное достоинство интерпретируемых языков в безопасности кода и более быстром процессе разработки.

                            Полностью согласен! Я сам и не ожидал того что Python будет быстрее :whistle: хотя это было бы клево. Просто я хотел оценить во сколько раз интерпретируемые языки медленнее. Оценил приблизительно раз в 10 проигрыш по скорости исполнения кода.

                            Добавлено
                            Цитата Smike @
                            Что, так долго считает?

                            Ты вначале сделай нормальный факториал в целых а потом поговорим дальше ;) идет?
                              Цитата mo3r @
                              Дельфы под рукой нету, нельзя ли показать вывод от этого приложения?

                              Вывод как и должен быть. Увы, из консоли не копируется у меня, пишу:
                              Цитата

                              Foooo! :)
                              Destroy

                              И ждет Enter на readln, разумеется.

                              Цитата mo3r @
                              Цитата (Smike @ Сегодня, 17:20)
                              А что мешает базовый класс от интерфейсного объекта унаследовать? TInterfacedObject - это такой же объект, только со счетчиком ссылок. Классы VCL и так интерфейсные:

                              Вот я и говорю --- удобство разработки прямо сразу видно --- менять весь дизайн приложения из-за непродуманности языка.


                              Ну млин. Интерфейс я ввести могу на любом уровне иерархии. Я использовал TInterfacedObjetc потому, что там реализованы три метода IInterface.
                              Вот как раз и вводятся интерфейсы:
                              Цитата Smike @
                              TComponent = class(TPersistent, IInterface, IInterfaceComponentReference)

                              Причем здесь как раз подсчет ссылок отключается, поскольку за временем жизни компонента следит его контейнер. Это также и ответ на вопрос, почему приходится иногда писать реализацию методов IInterface :)

                              Цитата mo3r @
                              Цитата (Romkin @ Сегодня, 16:36)
                              type IFoo = interface procedure FooFoo; end; //Реализация TFoo = class(TInterfacedObject, IFoo) protected procedure FooFoo; public destructor Destroy; override; //Для иллюстрации даем сообщение end;

                              Да, это "очень удобно и немногословно".


                              Да, это очень удобно. А многословно или нет - кто-то может считать, что многословно. И что с того? Написано все, что нужно и так как должно. Это - компонент-ориентированное программирование уже, следующая стадия ООП. Интерфейс описывается отдельно, реализация - отдельно. Ясно, что у одного интерфейса может быть любое количество реализаций и один класс может реализовать несколько интерфейсов.
                              Что такое компонентная модель - читайте книгу Дональда Бокса "Сущность технологии COM". Там он в первой главе очень популярно объясняет что это. Все, правда, на С++.

                              Добавлено
                              Цитата linuxfan @
                              Ничего противоестественного не вижу. Основное достоинство интерпретируемых языков в безопасности кода и более быстром процессе разработки.

                              Ну что это за высказывание? Интерпретируемость сама по себе ничего не дает, практически любой язык может быть и интерпретируемым, и компилируемым.
                              Или ты хочешь сказать, что если бы Delphi был интерпретируемым, то его код стал бы сразу безопасным и процесс разработки ускорился? Мне что-то не верится.
                              Основное достоинство интерпретируемых языков в отсутствии компилятора. Интерпретатор всегда есть, и программа в виде текста. Основной недостаток - низкая скорость, если не применять некоторых ухищрений вроде прекомпиляции и тд.
                                Цитата linuxfan @
                                все плюсовые библиотеки либо костыли для действий, не предусмотренных стандартом
                                В этом выражении надо убрать слово "плюсовые"
                                Цитата linuxfan @
                                либо просто врапперы над сишными
                                А в Python иначе? ;)
                                Цитата linuxfan @
                                категория реально нужных вещей вроде Qt очень немногочисленна
                                Понятие "реально нужные вещи" весьма относительно. Мне вот не нужен ни один python'овский пакет. И сам python ни к чему.
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0871 ]   [ 14 queries used ]   [ Generated: 31.05.24, 09:22 GMT ]