На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 406 407 [408] 409 410 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата Qraizer @
    я просил представить в синтаксисе C++ границы этих скопов:
    ExpandedWrap disabled
      int x;
       
      void f()
      {
        int y = ++x;
        {
         int z = ++x;
         {
          int t = ++x;
         }
        }
      }
    И? Где? И почему?

    Здесь только одна привязка для x.
      Почему? Скопов же четыре.
        Цитата Qraizer @
        Почему? Скопов же четыре.

        Потому, что ты их(биндинги) не создавал.
          Естественно. Но они меня и не интерсуют, я их создам, когда придумаю, как. А я не придумаю, пока не пойму, как управлять его границами в C++-программе.
          Сообщение отредактировано: Qraizer -
            Цитата Qraizer @
            Естественно. Но они меня и не интерсуют, я их создам, когда придумаю, как. А я не придумаю, пока не пойму, как управлять его границами в C++-программе.

            Та же самая лексическая область видимости, только расширенная вызываемыми функциями.
            Еще раз:
            ExpandedWrap disabled
              /*"специальная" переменная*/int x = 10;
               
              void f()
              {
                  std::cout << x << std::endl; // здесь мы будем обращаться к тому x, что находится ближе всего в окружающих нас scope'ах по стеку вызовов
              }
               
              int g()
              {
                  // в текущем scope x ссылается на глобальную переменную со значением 10
                  f(); // 10
                  {
                      /*биндинг специальной переменной*/int x = 20;
                      // теперь x ссылается на локальную привязку
                      f(); // 20
                  }
                  // сново ссылаемся на глобальный x
                  f(); // 10
              }
            Сообщение отредактировано: D_KEY -
              Т.е. скоп - это обычные {}, что ли? Так бы и сказал сразу.
              Теперь: правильно ли я понимаю, что { делает снимок глобальных переменных и помещает прежние значения в стек, а } восстанавливает из вершины стека их значения? При этом стеки ко всему прочему ещё и локальные в нитках.
                Цитата Qraizer @
                Т.е. скоп - это обычные {}, что ли? Так бы и сказал сразу.
                Теперь: правильно ли я понимаю, что { делает снимок глобальных переменных и помещает прежние значения в стек, а } восстанавливает из вершины стека их значения? При этом стеки ко всему прочему ещё и локальные в нитках.

                Ну типа того. Т.е. дубовая реализация - это словарь идентификатора нитки и "стека" значений переменной, при создании биндинга делаем push, при смерти биндинга - pop для "стека" переменной нитки.
                  Ы?
                  Сообщение отредактировано: korvin -
                    Цитата korvin @

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

                          Скучно становится в холиварах, да? :D
                            Цитата KILLER @
                            Цитата D_KEY @
                            korvin, а что ты хотел этим сказать?

                            Скучно становится в холиварах, да? :D

                            Вообще все пропало...
                            Поговорить что ли об rvalue-ссылках и их аналогах в других языках... Можно, кстати, сравнить с тем же CL, где есть странные функции работы со списками, которые в целях оптимизации портят произвольным образом(зависимым от реализации) исходные списки во время получения результата, при этом если ты воспользовался исходным списком, то ССЗБ. При этом никакого способа что-либо проверить/гарантировать нет. В этом смысле, явная работа с временными объектами(в лиспе для них обычно такие фокусы и используют, как я понял), а так же std::move выглядят как-то интереснее.

                            Причем все еще сильно зависит от реализации CL:
                            gcl:
                            ExpandedWrap disabled
                              >(defparameter *list* (list 3 6 1 2))
                               
                              *LIST*
                               
                              >(sort *list* #'<)
                               
                              (1 2 3 6)
                               
                              >*list*
                               
                              (3 6)


                            clisp:
                            ExpandedWrap disabled
                              [1]> (defparameter *list* (list 3 6 1 2))
                              *LIST*
                              [2]> (sort *list* #'<)
                              (1 2 3 6)
                              [3]> *list*
                              (1 2 3 6)


                            :)
                              Цитата D_KEY @
                              Можно, кстати, сравнить с тем же CL, где есть странные функции работы со списками, которые в целях оптимизации портят произвольным образом(зависимым от реализации) исходные списки во время получения результата, при этом если ты потрудился прочитать стандарт, то ССЗБ.

                              FIXED

                              Добавлено
                              Цитата D_KEY @
                              korvin, а что ты хотел этим сказать?

                              То что C++ как обычно неадекватен и состоит из костылей чуть менее, чем наполовину, призванных решить проблемы, которых в других языках просто не могут возникнуть.
                              Сообщение отредактировано: korvin -
                                Цитата korvin @
                                То что C++ как обычно неадекватен и состоит из костылей чуть менее, чем наполовину, призванных решить проблемы, которых в других языках просто не могут возникнуть.

                                Так а причем тут С++ ? Если ты сам написал же:
                                Цитата korvin @
                                Можно, кстати, сравнить с тем же CL, где есть странные функции работы со списками, которые в целях оптимизации портят произвольным образом(зависимым от реализации) исходные списки во время получения результата, при этом если ты потрудился прочитать стандарт, то ССЗБ.

                                Примени эту фразу и к С++. Или чо, хочешь сказать что в Cl томже нельзя сделать вообще никакую логическую ошибку ?
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 406 407 [408] 409 410 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.5235 ]   [ 14 queries used ]   [ Generated: 30.07.26, 02:28 GMT ]