На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
Страницы: (78) « Первая ... 66 67 [68] 69 70 ...  77 78  ( Перейти к последнему сообщению )  
> Текущий Стандарт С++ и перспективы его развития
    applegame, см. boost.range

    Добавлено
    Совершенно необязательно все пихать в стандартную библиотеку.
      Цитата MyNameIsIgor @
      как и всякие range - их вполне могут заменить сторонние библиотеки.

      Вообще, если внимательно прочитать предложение по range'ам в стандарте - там довольно существенные изменения в концепции. Т. е. это не просто предложение добавить range'и, а попытка (в очередной раз) пересмотреть некоторые подходы к проектированию интерфейсов в STL. В частности, продвигается вариант, что begin- и end-итераторы, передаваемые в алгоритм, не обязаны быть одинакового типа. Вводится понятие терминирующих итераторов, и т. п.
        Цитата applegame @
        Значит перезагрузка -> это не маразм, а перезагрузка точки маразм?
        Именно. Это всё равно, что разрешить перегрузку операторов для стандартных типов.
          Цитата Qraizer @
          Именно. Это всё равно, что разрешить перегрузку операторов для стандартных типов.
          Тоже мне проблема. Вон руби-программисты живут с таким разрешением и что-то не слышно жалоб - https://ideone.com/DVVp6a
            Это не аргумент. Жить можно и не с такими косяками, живём же мы как-то с совершенно идиотским switch(). Вопрос в стоимости ошибок, которые сиими архитектурными решениями допускаются легко и непринуждённо.
              А в чем косяк у подхода в ruby?
                Цитата Qraizer @
                Вопрос в стоимости ошибок, которые сиими архитектурными решениями допускаются легко и непринуждённо.
                Точно. Легко и непринужденно, по-ошибке переопределил оператор сложения у встроенного числового типа. :D
                Сообщение отредактировано: applegame -
                  Цитата Qraizer @
                  живём же мы как-то с совершенно идиотским switch().

                  А что в нем идиотского? Лично я вижу разве что обязательный break в case.
                    Цитата applegame @
                    Легко и непринужденно, по-ошибке переопределил оператор сложения у встроенного числового типа.

                    Для встроенных типов перегружать операторы нельзя.
                      Цитата Kray74 @
                      Цитата applegame @
                      Легко и непринужденно, по-ошибке переопределил оператор сложения у встроенного числового типа.

                      Для встроенных типов перегружать операторы нельзя.

                      Наверное перед ответом стоит внимательно прочесть, на что отвечаете ;)
                        Цитата OpenGL @
                        А что в нем идиотского?
                        Слабонервным не открывать.
                          Тогда уж что-то более классическое

                          ExpandedWrap disabled
                            send(to, from, count)
                            register short *to, *from;
                            register count;
                            {
                                register n = (count + 7) / 8;
                                switch(count % 8) {
                                case 0: do {    *to = *from++;
                                case 7:     *to = *from++;
                                case 6:     *to = *from++;
                                case 5:     *to = *from++;
                                case 4:     *to = *from++;
                                case 3:     *to = *from++;
                                case 2:     *to = *from++;
                                case 1:     *to = *from++;
                                    } while(--n > 0);
                                }
                            }


                          На этой же особенности можно делать простые "сопрограммы" без стека, см. например boost.asio: stackless coroutines
                          boost.asio: coroutine
                          Сообщение отредактировано: D_KEY -
                            Интервью Скотта Мейерса в Яндексе. О настоящем и будущем C++
                            Сообщение отредактировано: D_KEY -
                              Цитата applegame @
                              Тоже мне проблема. Вон руби-программисты живут с таким разрешением и что-то не слышно жалоб - https://ideone.com/DVVp6a
                              А потом приходит новый разработчик и тратит совсем не чуть-чуть времени, чтобы разобраться во всей этой ахинеи.
                              Цитата OpenGL @
                              А что в нем идиотского? Лично я вижу разве что обязательный break в case.
                              А я не вижу обязательности break. Зато вижу проблему в обязательных { } если хочется создать переменную внутри блока case, ну и вторую проблему, что работает только с примитивными типами.

                              Добавлено
                              Цитата D_KEY @
                              Тогда уж что-то более классическое

                              ExpandedWrap disabled
                                send(to, from, count)
                                register short *to, *from;
                                register count;
                                {
                                    register n = (count + 7) / 8;
                                    switch(count % 8) {
                                    case 0: do {    *to = *from++;
                                    case 7:     *to = *from++;
                                    case 6:     *to = *from++;
                                    case 5:     *to = *from++;
                                    case 4:     *to = *from++;
                                    case 3:     *to = *from++;
                                    case 2:     *to = *from++;
                                    case 1:     *to = *from++;
                                        } while(--n > 0);
                                    }
                                }


                              На этой же особенности можно делать простые "сопрограммы" без стека, см. например boost.asio: stackless coroutines
                              boost.asio: coroutine

                              Очень напоминает раскрутку циклов в асме. На спектруме еще делал подобные функции для быстрого копирования памяти.
                                Это вы ещё в сырцы Дума не заглядывали. Знаете, чем он занимается, когда ещё в текстовом экране точки рисует? Много точек. Строит свой код в памяти в виде кучи функций, отрисовывающих то ли спрайты, то ли текстуры в нужных масштабах, каждая в своём и каждая без переходов и условий. Просто в нужном месте вызывается нужная функция, в зависимости от нужного масштаба.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (78) « Первая ... 66 67 [68] 69 70 ...  77 78


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0980 ]   [ 16 queries used ]   [ Generated: 17.06.25, 19:07 GMT ]