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

    Ок, арифметика. В каком месте дельфи расположены натуральные дроби? Где-то рядом с sqrt, возвращающей комплексное число, т.е. - нигде? :lool:

    Добавлено
    Цитата korvin @
    но не целочисленное.

    А никто и не говорит, что целочисленное. Я ожидаю, что / вернёт результат того типа, к которому была применена.
      Цитата MyNameIsIgor @
      Я ожидаю, что / вернёт результат того типа, к которому была применена.

      на каком основании?
        Цитата korvin @
        на каком основании?

        Потому, что я не ожидаю неявных кастов.
          Цитата MyNameIsIgor @
          Потому, что я не ожидаю неявных кастов.

          а я ожидаю, что деление ведет себя более как в реальной жизни
            MyNameIsIgor, а чем плохо ввести две разных операции для целых: целочисленное деление и нецелочисленное деление? И значки для них разные? Проблем было бы гораздо меньше ;)
              Цитата korvin @
              а я ожидаю, что деление ведет себя более как в реальной жизни

              А до какой черты распространяется это "более"? Я опять же спрашиваю: где комплексные числа, где натуральные дроби? Если берётесь соответствовать математике, так и соответствуйте. До конца. А если мы всё же программируем на статически типизированном (желательно строго) языке, то таких финтов ушами быть не должно.
                Цитата --Ins-- @
                Здесь (b / c) к float не преобразуется?
                Давай небольшой ликбез. Просто, чтоб уменьшить количество подобных вопросов. Сразу предупреждаю, что для простоты не строго по Стандарту.
                В C есть понятие преобразование типов операндов в выражении. Называется promotion, более-менее по-русски - продвижение. Применяется всегда, чтобы исключить совсем уж тупые варианты, которые понравятся ещё меньше. Например, было бы удивительно для
                ExpandedWrap disabled
                    VAR a, b:BYTE;
                  BEGIN
                    a := 200; b:=100;
                    Write(a+b)
                  END.
                получить переполнение. Promotion бывает integer и float-point. Первое применяется для операции, чьи операнды имеют целые типы, второе - если хотя бы один вещественный. Каждая операция обрабатывается отдельно, и promotion является её частью. С этой точки зрения int / int останется целочисленной операцией. Ты находишь это нелогичным? А разве логично одну единственную операцию / ставить в исключение против всех остальных операций? Это теперь у Дельфи программистов называется интиутивно ожидаемым поведением?
                  Цитата --Ins-- @
                  MyNameIsIgor, а чем плохо ввести две разных операции для целых: целочисленное деление и нецелочисленное деление? И значки для них разные? Проблем было бы гораздо меньше

                  Ничем не плохо. Нельзя неявно использовать целые в операции с плавающей точкой. Ещё раз вам говорю: посмотрите на OCaml.
                    Цитата MyNameIsIgor @
                    Если берётесь соответствовать математике, так и соответствуйте.


                    Любое даже самое умное высказывание можно довести до абсурда, если подходить к нему как к догме. Нельзя до конца соответствовать математике хотя бы потому, что разрядность ограничена. В данном же случае среди стандартных просто нет комплексного типа. Введи комплексный тип и функция корень сможет тебе вернуть математически правильное значение. У sqrt результат объявлен как Extended, так же как параметры у Sin, Cos и др
                      Цитата MyNameIsIgor @
                      А до какой черты распространяется это "более"? Я опять же спрашиваю: где комплексные числа, где натуральные дроби? Если берётесь соответствовать математике, так и соответствуйте. До конца. А если мы всё же программируем на статически типизированном (желательно строго) языке, то таких финтов ушами быть не должно.

                      до любой, чем больше, тем лучше
                      в моих любимых лиспах есть и нат.дроби, и комплексные числа искаробки

                      Хаскелл обладает весьма строгой статической типизацией, но даже там / возвращает тип класса Fractional независимо от фактического типа операндов (операнды приводятся к тому же типу класса Fractional)
                      Сообщение отредактировано: korvin -
                        Я так думаю, если вы приближаетесь к математике, то b / c - это натуральная дробь. А нифига не вещественное. Кстати, а вещественное с какой точность выдаёт дельфи? Или в дельфи всего один вещественный тип?
                        Сообщение отредактировано: MyNameIsIgor -
                          --Ins--, ты зачем с DesweR-ом профилем поделился? Поставить вопрос о доверии должности?
                          А если серьёзно, ... толстить ты что-то начал, --Ins--.
                            Цитата Qraizer @
                            С этой точки зрения int / int останется целочисленной операцией. Ты находишь это нелогичным?


                            С этой точки зрения - нет. Я саму точку зрения нахожу нелогичной ;) Тем более что существует альтернативная точка зрения, которая дает более ожидаемые результаты

                            Добавлено
                            Цитата Qraizer @
                            Поставить вопрос о доверии должности?


                            Как к админам обратиться знаешь? ;) Могу ссылку дать

                            Цитата MyNameIsIgor @
                            Или в дельфи всего один вещественный тип?


                            Нет, не один. Одинарная (single), двойная (double), расширенная (extended)
                              Цитата --Ins-- @
                              Нет, не один. Одинарная (single), двойная (double), расширенная (extended)

                              Ну, и какую даст b / c?
                                Цитата MyNameIsIgor @
                                Ну, и какую даст b / c?


                                Это определяется компилятором, а не языком. Компилятор наш преобразует в расширенную. Все расчеты вещественных идут в extended, а потом уже результат обрезается до нужной точности. Потому что для fpu (компилятор то в native-код компилирует) extended - это родной тип
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 97 98 [99] 100 101 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.1962 ]   [ 15 queries used ]   [ Generated: 30.07.26, 07:59 GMT ]