На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (31) « Первая ... 17 18 [19] 20 21 ...  30 31  ( Перейти к последнему сообщению )  
> идеальный язык программирования , каким он должен быть?
    Цитата cppasm @
    INC/DEC не медленнее ADD/SUB а как раз наоборот.
    Точнее начиная с Pentium2 одинаково, а на более ранних INC/DEC быстрее.

    :yes: :yes: :yes: Только не с Пня2 а с Первопня.
    Цитата cppasm @
    И плюс ко всему при работе с аккумулятором (EAX) занимает меньше места.

    "Оптимизация дело тонкое Петруха" © т. Сухов.
    Иногда выгоднее поставить ADD для выравнивания тех же циклов, а так да.
    Цитата cppasm @
    Но опять же для процессоров Intel, на AMD всё совсем наоборот.

    А где можно доку посмотреть? А то у меня тока на Интел :whistle: Есть нормальные переводы?
    Цитата cppasm @
    А вообще тесты такие это всё ерунда потому что очень многое зависит от компилятора.

    На асме почти ничего от него не зависит :P
    Цитата cppasm @
    Хотя ни один компилятор С не обгонит в плане оптимизации нормального программиста на ASM.

    Не спорю, Intel Cи оптимизирует неплохо. Но даже он не способен провести глобальную оптимизацию, т.е. на практике в оптимизации по скорости нуждается небольшой участок кода, а остальной лучше заоптимизировать на малый размер. Такого ни один ЯВУ не реализует, у них все тупо - либо скорость, либо размер :wall:
      Цитата AndNot @
      А где можно доку посмотреть? А то у меня тока на Интел Есть нормальные переводы?

      На сайте AMD есть доки - адреса не помню...
      Переводов нет.

      Цитата AndNot @

      Цитата (cppasm @ Сегодня, 13:29)
      А вообще тесты такие это всё ерунда потому что очень многое зависит от компилятора.

      На асме почти ничего от него не зависит

      Ну дык сравнивают 2 куска кода.
      Я про сишный компилятор писал.

      Цитата AndNot @
      Не спорю, Intel Cи оптимизирует неплохо. Но даже он не способен провести глобальную оптимизацию

      Дык я то же самое написал...
      Цитата cppasm @
      Хотя ни один компилятор С не обгонит в плане оптимизации нормального программиста на ASM.
        Цитата AndNot @
        Цитата (impik777 @ 16.10.06, 14:42)
        ошибки логики становятся ошибками синтаксиса

        С какого перепуга


        Подумай хотя бы, для чего нужны такие ключевые слова как const, final, private, protected
        а контроль типов, ведь приравнять яблоку планету - логическая ошибка, а изменить константу,
        а поменять человеку сердце, клинически его не убив его(секции приват).

        Добавлено
        знаешь когда споришь, не противоречь себе, сам говоришь, что форт позволяет все, а потом обвиняешь С++ в
        все позволенности
        Сообщение отредактировано: impik777 -
          Цитата cppasm @
          Хотя ни один компилятор С не обгонит в плане оптимизации нормального программиста на ASM.


          эт конечно да, но слишком уж много работы
          А вот например Кармак спокойно обошелся без асма,
          хотя первый Дум для того развития компов, был намного круче
          чем щас тот же FEAR или Far Cry с Обвилионом

          и вообще он не использует асм вставки
            Цитата cppasm @
            INC/DEC не медленнее ADD/SUB а как раз наоборот.
            Точнее начиная с Pentium2 одинаково, а на более ранних INC/DEC быстрее.

            Значит, интеловцы нагло врут в своем "IA-32 Intel® Architecture Optimization"?
            Цитата
            Use of the inc and dec Instructions
            The inc and dec instructions modify only a subset of the bits in the
            register. This creates a dependence on all previous writes of the flag
            register. This is especially problematic when these instructions are
            the critical path because they are used to change an address for a load
            which many other instructions depend.
            Assembly/Compiler Coding Rule 42. (M impact, H generality) inc
            dec instructions should be replaced with an add or sub instruction
            , because
            add and sub overwrite all flags, whereas inc and dec do not, therefore
            creating false dependencies on earlier instructions that set the flags.

            Разработчики компилятора, которым я пользуюсь, явно этот документ читали. :)
            Сообщение отредактировано: Hryak -
              Цитата impik777 @
              Подумай хотя бы, для чего нужны такие ключевые слова как const, final, private, protected
              а контроль типов, ведь приравнять яблоку планету - логическая ошибка, а изменить константу, а поменять человеку сердце, клинически его не убив его(секции приват).

              Логика это нечто большее чем const, final, private, protected. Это как правило неправильная реализация чего либо, и если какая-то функция будет время от времени выдавать липу, то компилятор не поможет. Придется самому под отладчиком ползать долго и упорно, и прийти в бешенство, выяснив, что вместо передачи функции Koshelek.get_mani курса доллара, твоя программа проанализировав все курсы, передает ей курс тугриков, по ее мнению самый ходовой :wacko: Всего лишь ошибка логики вычисления самого актуального курса ;) Здесь никакой компилятор не поможет.
              Цитата impik777 @
              знаешь когда споришь, не противоречь себе, сам говоришь, что форт позволяет все, а потом обвиняешь С++ в
              все позволенности

              Вседозволенность это хорошо! Я всего лишь пытался сказать, что у Си плохо продуманный синтаксис! Это совершенно разные вещи. От этого страдает читабельность, ведь что бы прочесть конструкцию:
              ExpandedWrap disabled
                char (*(*x2 ())[]) ()

              приходится поднапрячся, и впомнить правило "право-лево".
              В Форте же все читается слева-направо, по порядку, и если знаешь слова, то разбираешь без напряга.
              Или возьми ту-же Модулу2, сорсы читаются без напряга, т.к. язык навязывает определенный стиль.
              В Си же своего стиля нет, есть только парадигмы (с мира по нитке), и каждый пишет как хочет. С одной стороны хорошо, а с другой не очень.
              Цитата impik777 @
              и вообще он не использует асм вставки

              За дум ничего не могу сказать, а вот сравнивая первую кваку(Си) и Чесм(почти весь на асме) виден охрененный перевес в пользу последнего.
                Цитата AndNot @
                Придется самому под отладчиком ползать долго и упорно, и прийти в бешенство, выяснив, что вместо передачи функции Koshelek.get_mani курса доллара, твоя программа проанализировав все курсы, передает ей курс тугриков, по ее мнению самый ходовой :wacko:

                Тут есть логическая ошибка, которая вкралась из-за недостатка контроля типов. Есть библиотеки, которые позволяют устранить эти проблемы. Например, в Boost была какая-то библиотека для работы с физ. величинами — там ты никак не сможешь ошибиться размерностями величин.
                  Цитата mo3r @
                  Тут есть логическая ошибка, которая вкралась из-за недостатка контроля типов. Есть библиотеки, которые позволяют устранить эти проблемы. Например, в Boost была какая-то библиотека для работы с физ. величинами — там ты никак не сможешь ошибиться размерностями величин.

                  Это как? Если, на том же примере, курс $=29, а тугрика=28, то что здесь можно проконтролировать? И ошибку то заметишь не сразу :'(

                  Добавлено
                  Цитата Hryak @
                  Разработчики компилятора, которым я пользуюсь, явно этот документ читали.

                  Явно хреново читали.
                  ExpandedWrap disabled
                    InnerLoop:
                            jae         OutOfRange
                            btc         bs,eax
                            add         eax,1       ; в этом месте не может быть зависимости по флагам
                            cmp         eax,493E0h  ; соответственно лучше INC EAX
                            jl          InnerLoop
                            add         esi,1      
                            cmp         esi,edi
                            jl          OuterLoop

                  Или я не так аглицкий расшифровал?
                    Цитата AndNot @
                    Это как? Если, на том же примере, курс $=29, а тугрика=28, то что здесь можно проконтролировать? И ошибку то заметишь не сразу :'(

                    Дело в том, что у курса доллара и тугрика разные размерности — например, у курса доллара размерность рубли/доллары, а курса тугрика размерность рубли/тугрики. А это уже разные типы данных. Например, так:
                    ExpandedWrap disabled
                      template<typename UnderlyingType, typename DiscriminatorType, DiscriminatorType dValue>
                      struct DimensionedValue
                      {
                        UnderlyingType value;
                        DimensionedValue(UnderlyingType value=UnderlyingType()): value(value){}
                      };
                       
                      enum money_kind = {baks, tugrik};
                       
                      typedef DimensionedValue<double,money_kind,baks> kurs_baks;
                      typedef DimensionedValue<double,money_kind,tugrik> kurs_tugrik;
                       
                      kurs_baks b = kurs_baks(29);
                      kurs_tugrik t = kurs_tugrik(28);

                    Таким образом ошибка несовпадения размерностей переносится на время компиляции. Программа, неправильно работающая с такими величинами (т.е., нарушающая правильность размерностей), попросту не скомпилируется.
                      Зависимость по флагам есть далеко не всегда.
                      И разница между INC и ADD только в изменении CF: ADD - меняет, INC - нет
                      А флаг переноса не так уж часто используется.
                      В твоём например коде зависимости по флагам нет, т.к. cmp перезаписывает все флаги и глубоко параллельно что там было до этой команды.
                      Вообще выигрыш от INC/DEC только в размере.
                      По скорости если быть точным даже не с Pentium а с i386 одинаково.

                      ExpandedWrap disabled
                        INC
                         Length and timing
                         Operands    Bytes   8088    186     286     386     486     Pentium
                         r8           2       3       3       2       2       1       1   UV
                         r16          1       3       3       2       2       1       1   UV
                         r32          1       3       3       2       2       1       1   UV
                         mem       2+d(0,2)  23+EA   15       7       6       3       3   UV


                      ExpandedWrap disabled
                        ADD
                         Length and timing
                         Operands    Bytes   8088    186     286     386     486     Pentium
                         reg, reg     2       3       3       2       2       1       1   UV
                         mem, reg  2+d(0,2)  24+EA   10       7       7       3       3   UV
                         reg, mem  2+d(0,2)  13+EA   10       7       6       2       2   UV
                         reg, imm  2+i(1,2)   4       4       3       2       1       1   UV
                         mem, imm  2+d(0,2)  23+EA   16       7       7       3       3   UV*
                                    +i(1,2)
                         acc, imm  1+i(1,2)   4       4       3       2       1       1   UV
                         
                             * = not pairable if there is a displacement and immediate
                      Сообщение отредактировано: cppasm -
                        Цитата AndNot @
                        В Форте же все читается слева-направо, по порядку, и если знаешь слова, то разбираешь без напряга.

                        я С\С++ читаю любой читабельности, ПОТОМУ ЧТО ЗНАЮ ЕГО
                        а форт я знаю плохо, И ПОЭТОМУ не смогу прочитать даже средний код
                        по твоей логике, я должен решить, что форт очень сложный и навороченный и его тяжело понять
                        и его надо на помойку

                        Добавлено
                        Цитата AndNot @
                        а вот сравнивая первую кваку(Си) и Чесм(почти весь на асме) виден охрененный перевес в пользу последнего.

                        Ты отстал от жизни лет на десять, если делаешь такие сравнения
                        это уже не актуально :lol:
                        напишика в одиночку движок дума 3 на асме :lool: :lool:
                        а ведь Кармак пишет его на С один

                        Добавлено
                        Цитата AndNot @
                        От этого страдает читабельность, ведь что бы прочесть конструкцию:

                        char (*(*x2 ())[]) ()


                        Сколько раз говорить, что так пишут только блаженные
                        а таких, в нормальных командах НЕ ДЕРЖАТ

                        Добавлено
                        Цитата AndNot @
                        Логика это нечто большее чем const, final, private, protected. Это как правило неправильная реализация чего либо, и если какая-то функция будет время от времени выдавать липу, то компилятор не поможет.

                        Хм... а для чего тогда уйма народу создает такие компиляры и мучается с ними
                        придумывает такой синтаксис
                        ведь мазохистов из них не более 10 процентов :)

                        Добавлено
                        Цитата AndNot @
                        Это как? Если, на том же примере, курс $=29, а тугрика=28, то что здесь можно проконтролировать? И ошибку то заметишь не сразу


                        Дааааааааааааааааааа :D
                        проектировать надо ПРАВИЛЬНО
                        mo3r, тебе потрясающе показал сильные стороны контроля типов

                        Добавлено
                        Цитата AndNot @
                        Явно хреново читали.

                        Уж они свое дело знают, поверь мне ;)
                        Сообщение отредактировано: impik777 -
                          Цитата impik777 @
                          я С\С++ читаю любой читабельности, ПОТОМУ ЧТО ЗНАЮ ЕГО
                          а форт я знаю плохо, И ПОЭТОМУ не смогу прочитать даже средний код

                          В этом то и разница, я то более менее знаю Си, но вот перед такими конструкциями пасую.
                          Цитата impik777 @
                          и его надо на помойку

                          Я разве что-то говорил про помойку? Я лишь высказал СВОЕ мнение, почему С++ не тянет на идеальный. В двух словах - из-за плохой читаемости чужих сорсов и из-за плохо продуманного синтаксиса.
                          Цитата impik777 @
                          Ты отстал от жизни лет на десять, если делаешь такие сравнения это уже не актуально

                          Асм всегда будет актуален. Пока ему замены не предвидится.
                          Цитата impik777 @
                          а ведь Кармак пишет его на С один

                          Похоже Кармак выдохся, раз такой движок написал. По крайней мере на меня не произвела впечатления какая то демка.
                          Цитата impik777 @
                          Сколько раз говорить, что так пишут только блаженные а таких, в нормальных командах НЕ ДЕРЖАТ

                          Не суди сам, и не судим будешь ;) В командах всяких хватает, и там никто не смотрит как ты пишешь, главное результат. А если человече не в команде работает?
                          Цитата impik777 @
                          Дааааааааааааааааааа :D
                          проектировать надо ПРАВИЛЬНО

                          Это не я придумал, что человеку свойственно ошибаться. Причем это возможно всегда и везде.
                          Цитата impik777 @
                          mo3r, тебе потрясающе показал сильные стороны контроля типов

                          Не заметил ничего потрясающего, кроме усложнения программы. Во времена паскаля наоборот старались обходить подобные препоны.
                          Регистрам до одного места все эти типы, и мне соответственно. Для меня уже давно есть только BYTE,WORD,DWORD,QWORD,TWORD. Мне хватает ;) См. ниже.
                          Цитата impik777 @
                          Уж они свое дело знают, поверь мне

                          Свое дело они может и знают, но кто сказал что они занимаются свом делом?
                          Цитата mo3r @
                          Таким образом ошибка несовпадения размерностей переносится на время компиляции.

                          Не врубился, чем мне это поможет. Допустим есть такая функция:
                          ExpandedWrap disabled
                            c = (langkoeff*citykoeff*хз)/хз;
                            switch c {
                             case 0: return kurs_baks;
                             case 1: return kurs_tugrik;
                             case 2: return kurs_хз

                          Ошибка то заложена в коеффициентах, а не в размерности.
                          Сообщение отредактировано: AndNot -
                            Цитата AndNot @
                            В командах всяких хватает, и там никто не смотрит как ты пишешь, главное результат.

                            Ты просто не видел нормальные команды

                            Добавлено
                            Цитата AndNot @
                            Похоже Кармак выдохся, раз такой движок написал. По крайней мере на меня не произвела впечатления какая то демка.

                            Это ты зря, Дум3 один из лучших образцов 3Д графики, а уж по мощности, кол-ву спец эффектов, источников звука на
                            одной сцене.........
                            И тем более обязательно будет продолжение

                            Добавлено
                            Цитата AndNot @
                            В этом то и разница, я то более менее знаю Си,

                            ЕСЛИ ПОАНАЛИЗИРОВАТЬ ТВОИ ПРЕДЫДУЩИЕ ПОСТЫ, ИЗВИНИ, НО Си ТЫ НЕ ЗНАЕШЬ НЕ КАПЛИ
                            И НЕ Я ОДИН ЭТО ГОВОРЮ, ТОТ ЖЕ Hryak СКАЗАЛ УЖЕ ТЕБЕ СВОЕ МНЕНИЕ
                            >:( >:( >:(

                            Добавлено
                            Цитата AndNot @
                            и там никто не смотрит как ты пишешь

                            Я вижу что ты знаешь о работе в команде лишь понаслышке :D

                            Добавлено
                            Цитата AndNot @
                            Асм всегда будет актуален. Пока ему замены не предвидится

                            Только в узкой области специализации

                            Добавлено
                            Цитата AndNot @
                            из-за плохой читаемости чужих сорсов

                            Ща читаю сорсы Irrlight'a - никаких проблем с читаемостью
                            а если посмотреть того же Кармака....

                            Цитата AndNot @
                            из-за плохо продуманного синтаксиса.

                            Он не плохо продуманный, а просто поддерживает мульти парадигменность
                            Сам Бьярн пишет , что взял с каждого языка его лучшие части

                            Добавлено
                            Цитата AndNot @
                            Не врубился, чем мне это поможет. Допустим есть такая функция:

                            c = (langkoeff*citykoeff*хз)/хз;
                            switch c {
                            case 0: return kurs_baks;
                            case 1: return kurs_tugrik;
                            case 2: return kurs_хз


                            Ошибка то заложена в коеффициентах, а не в размерности.


                            Ты не понял смысла, зачем писать так глючно как у тебя если можно написать
                            проще и понятней И БЕЗОПАСНЕЙ как mo3r

                            Добавлено
                            Цитата AndNot @
                            Это не я придумал, что человеку свойственно ошибаться. Причем это возможно всегда и везде.

                            Только нормальные программитсы знают, как работать так, чтобы ошибаться как можно меньше
                            а начинающие учатся этому у этих нормальных программистов
                            нужен пример ?
                            возьми хотя бы форум, на котором мы сейчас разговариваем
                            Сообщение отредактировано: impik777 -
                              Цитата impik777 @
                              Ты просто не видел нормальные команды

                              :lol: Меня моя вполне устраивает ;) Дали мне задание закодить асинхронный порт, я его сделаю, а как и на каком языке, никто даже не посмотрит(разве что подсмотрит ;), лишь бы интерфейс обеспечил. Что здесь плохого?
                              Цитата impik777 @
                              Это ты зря, Дум3 один из лучших образцов 3Д графики

                              Я не говорил насчет этого ничего ;) Просто если взять первый дум, то для того времени это было действительно нечто, чего не скажешь о третьем.
                              Цитата impik777 @
                              а уж по мощности, кол-ву спец эффектов, источников звука на
                              одной сцене.........

                              Количество никак не связано с качеством! Почему то кодя игры, во многих случаях забывают о другом: самая хорошая игра - это когда на экране примитивные кубики,ромбики, и тд. а оторваться от нее невозможно!
                              Цитата impik777 @
                              НО Си ТЫ НЕ ЗНАЕШЬ

                              Правильнее сказать С++ я не знаю, а Си очень даже (хотя бы потому, что в нем очень многое унаследовано от асма PDP ;) .
                              И если ты С++ хорошо знаешь, то разжуй уж мне, для чего собственно нужна венгерская нотация, для чего может пригодиться множественное наследие? Я не могу придумать им хоть какое нибудь применение :wall:
                              Цитата impik777 @
                              Только в узкой области специализации

                              Как ни крути, а эта "узкая специализация" разрастается с каждым годом ;)
                              Цитата impik777 @
                              Ты не понял смысла, зачем писать так глючно как у тебя если можно написать

                              Это не у меня ;) Лет шесть-семь назад искал подобную ошибку, замешанную на коэффициентах, т.е. на предположениях программиста!
                              Цитата impik777 @
                              Только нормальные программитсы знают, как работать так, чтобы ошибаться как можно меньше

                              Все так стараются работать, но одного желания мало.
                                Цитата AndNot @
                                хотя бы потому, что в нем очень многое унаследовано от асма PDP ;) .

                                Скорее наоборот — PDP представлял собой идеальную машину для реализации C ;)
                                Цитата AndNot @
                                для чего собственно нужна венгерская нотация

                                Чтобы примеры из МСДН хуже читались.
                                Цитата AndNot @
                                для чего может пригодиться множественное наследие

                                Ситуации разные бывают. В одном из моих проектов оно облегчило мне написание одной полезной вещи.
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (31) « Первая ... 17 18 [19] 20 21 ...  30 31


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0737 ]   [ 14 queries used ]   [ Generated: 20.07.25, 03:58 GMT ]