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


    Нет, ад - это когда нужно специально заводить тип для возвращаемых из метода параметров ;)

    Добавлено
    Цитата jack128 @
    А вот в C# понятнее сделано


    :yes:

    Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
      Ты просто не умеешь Джаву готовить ;)

      Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
        Цитата [S]mike @
        Ты просто не умеешь Джаву готовить


        Ну, Delphi тоже нужно уметь готовить ;) Кстати, я все же буду благодарен если ты поделишься со мной рецептом "как быть в случае, если из метода нужно вернуть несколько данных". Серьезно, без смайлика

        Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
        Сообщение отредактировано: --Ins-- -
          Цитата --Ins-- @
          Кстати, я все же буду благодарен если ты поделишься со мной рецептом "как быть в случае, если из метода нужно вернуть несколько данных"

          Оффтопим. Внутренним классом, конечно же.

          Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
            Цитата [S]mike @
            Оффтопим. Внутренним классом, конечно же.


            Балин, а ты говоришь не умею готовить. :wall: Я думал и вправду не умею и там есть какое-то изящное решение

            Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
              Цитата --Ins-- @
              Я думал и вправду не умею и там есть какое-то изящное решение

              А чем это плохое? Предельно логичное решение. Вообще, проблема есть только с примитивными типами и immutable классами. В остальных случаях можно инстанс класса создавать перед вызовом метода и потом записывать в него нужные данные.

              Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
                Цитата [S]mike @
                А чем это плохое?


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

                Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
                  [S]mike, а для программирования на Джаве под Андроид нужен опыт применения ООП?

                  Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
                    Цитата --Ins-- @
                    Много чем. Очень много издержек. И у программиста, который тратит время неясно на что, и в рантайм - создание экземпляра, уничтожение... Возвращаемые отдельным методом данные - не такая важная сущность, чтобы ради них объявлять целый тип.

                    Больше года уже на Джаве программирую, в том числе завершил тот проект, который ты начинал - и как-то не тоскую за тем что нельзя возвращать результаты через параметры функции. Зато все предельно просто и понятно, нету дилеммы: а не перезатрет ли эта функция значение моего параметра.

                    Цитата Leklerk @
                    [S]mike, а для программирования на Джаве под Андроид нужен опыт применения ООП?

                    Разумеется! Это один из самых необходимых скилов в программировании вообще, под Дельфи в частности, а под Андроид - тем боле. Еще нужно иметь представление о паттернах проектирования.

                    Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
                      Цитата jack128 @
                      в том виде, в каком они в дельфе/с++ есть - они сильно затрудняют понимание кода.

                      В С++ нет out/var параметров. Если ты имеешь в виду ссылки/указатели - то это отдельные типы данных.

                      Добавлено
                      Цитата --Ins-- @
                      Нет, ад - это когда нужно специально заводить тип для возвращаемых из метода параметров ;)

                      А как ты в делфи делаешь? Там же тоже вроде кортежей нет... Или через выходные параметры? Не назвал бы это изящным решением.

                      Добавлено
                      Цитата --Ins-- @
                      а здесь - тот же случай, только еще более выраженный.

                      А можно годный пример такого метода? По-моему кортежи вполне удобны в подобных случаях. Другое дело, что ява с ними плохо работает, еще хуже С++.
                        Цитата [S]mike @
                        Больше года уже на Джаве программирую, в том числе завершил тот проект, который ты начинал - и как-то не тоскую за тем что нельзя возвращать результаты через параметры функции. Зато все предельно просто и понятно, нету дилеммы: а не перезатрет ли эта функция значение моего параметра.


                        Смайк, это все сопли. Я так же могу сказать, что 10 лет программирую на Дельфи и как-то не горюю, но я ведь привел тебе конкретный аргумент.
                          Цитата --Ins-- @
                          Смайк, это все сопли. Я так же могу сказать, что 10 лет программирую на Дельфи и как-то не горюю, но я ведь привел тебе конкретный аргумент.

                          А давай еще вспомним про Дельфийские вложенные методы? Когда в одной процедуре можно писать еще сколько угодно вложенных? Это же ад кромешный! Особенно в допотопной дельфийской иде, без нормального аутлайна классов.

                          Var-параметры методов - меньшее зло, конечно. Но таки зло. Я говорил не о том, чтобы ради передачи параметров делать отдельный тип. А о том, чтобы сложную логику, требующую возврата нескольких результатов и где нельзя обойтись возвратом данных через стандартные классы (заполнить список, например) - нужно вынести логику во вложенный класс. Джава лишена дельфийского изврата, когда вложенные классы нужно не просто декларировать в интерфейсе класса, но еще и в имплементации методов писать что-то вроде TOuterClass.TClass.TInnerClass.MyMethod...

                          Вот тебе пример:
                          ExpandedWrap disabled
                            private class AddMaxOf {
                                public final int Result; // Output
                                public final int V; // Input-output
                                        
                                public AddMaxOf(Player P, int v) {
                                    Result = Math.max(0, Math.min(v, mGame.gameLimit - P.scores.pool()));
                                    if (Result > 0) {
                                        P.scores.addPool(Result);
                                        v -= Result;
                                    }
                                    V = v;
                                }
                            }
                            ...
                            V = new AddMaxOf(P, V).V;


                          В Дельфях это выглядело так:
                          ExpandedWrap disabled
                              function AddMaxOf(P: TPlayer; var V: Integer): Integer;
                              begin
                                Result := Max(0, Min(V, Desk.GameLimit - P.Script[ScPool]));
                                if Result > 0 then
                                begin
                                  P.AddScript(ScPool, Result);
                                  Dec(V, Result);
                                end;
                              end;
                            ...
                            AddMaxOf(P, V);

                          Весьма очевидные вызовы в Дельфях - радуют :D
                            Цитата jack128 @
                            А вот в C# понятнее сделано, там в явном виде задается что параметр out при вызове функции.

                            А в чем принципиальное отличие шарпового варианта от дельфового?

                            Добавлено
                            Цитата [S]mike @
                            Вот тебе пример:

                            Опять такой-же вопрос :D В чем принципиальная разница?
                              OpenGL, видимо в том, что в шарпе нужно указывать out при вызове.

                              Добавлено
                              Цитата [S]mike @
                              А давай еще вспомним про Дельфийские вложенные методы? Когда в одной процедуре можно писать еще сколько угодно вложенных? Это же ад кромешный!

                              В яве скоро будут(уже есть?) лямбды. Так что тоже можно будет фактически создавать локальные функции :)
                                Цитата OpenGL @
                                А в чем принципиальное отличие шарпового варианта от дельфового?
                                В шарпе при вызове функции надо явно указывать out и ref для соответствующих аргументов. Без них не скомпилируется.

                                Добавлено
                                Цитата OpenGL @
                                В чем принципиальная разница?
                                Очевидно в неочевидности. Из вызова функции в Delphi с var/out-аргументом не видно, что аргумент может модифицироваться.

                                P.S. Хотя в Delphi надо просто сразу считать, что вызов функции модифицирует аргументы, если не доказано обратное :D Фишку с неконстантностью аргументов с атрибутом const мы уже обсуждали.
                                Сообщение отредактировано: trainer -
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 440 441 [442] 443 444 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.5982 ]   [ 14 queries used ]   [ Generated: 29.07.26, 10:52 GMT ]