На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (16) « Первая ... 7 8 [9] 10 11 ...  15 16 все  ( Перейти к последнему сообщению )  
> Функциональное програмирование , Что за зверь такой
    Цитата Qraizer @
    что WinNT 3.1 имела скольки-то там килобайтное ассемблерное ядро, инкапсулирующее аппаратную абстракцию, а остальное было писано на C++. Этим самым была достигнута необычайно высокая степень портабельности WinNT.

    По сравнению с чем? Разве Си не более портируем и портирован, чем C++? А unix был ранее полностью переписан на Си без ассемблера. Хотя в современных потомках unix, особенно в linux, ассемблерные вставки наверняка присутствуют в угоду производительности (и/или, может, ещё каких-то соображений).
      Цитата korvin @
      ассемблерные вставки наверняка присутствуют

      Там их просто валом.
      Пример файла отбалды (~/linux-4.5.2/arch/arm64/include/asm/arch_timer.h):
      ExpandedWrap disabled
            if (access == ARCH_TIMER_PHYS_ACCESS) {
                switch (reg) {
                case ARCH_TIMER_REG_CTRL:
                    asm volatile("msr cntp_ctl_el0,  %0" : : "r" (val));
                    break;
                case ARCH_TIMER_REG_TVAL:
                    asm volatile("msr cntp_tval_el0, %0" : : "r" (val));
                    break;
                }
            } else if (access == ARCH_TIMER_VIRT_ACCESS) {
                switch (reg) {
                case ARCH_TIMER_REG_CTRL:
                    asm volatile("msr cntv_ctl_el0,  %0" : : "r" (val));
                    break;
                case ARCH_TIMER_REG_TVAL:
                    asm volatile("msr cntv_tval_el0, %0" : : "r" (val));
                    break;
                }
            }

      Насчет Хаскеля комменты опущу на всяк случай)
        JoeUser, ты не понимаешь. Хаскель - красив, C++ - уродлив. И не забывай, мы тут обсуждаем ФП, которого полно и в D и даже в C++.
          Цитата korvin @
          По сравнению с чем? Разве Си не более портируем и портирован, чем C++?
          В то время разница между этими двумя языками была куда менее очевидна. Миф о "C++ суть C с классами", можно сказать, оттуда. Другое дело, что C++ при грамотном проектировании позволяет разрабатывать, поддерживать и развивать проекты гораздо проще и без случайной стрельбы по ногам.
          Но дело не в этом. Я реально помню, что читал о C++ как используемом для Windows NT.

          Добавлено
          P.S. Вероятно это была Компьютерра, ещё в своём исходном старом формате.
          Сообщение отредактировано: Qraizer -
            Цитата settler @
            Это Я о новых языках Scala, F#, Хекель, я так понял их идея это програмировать без стэйта,
            ибо последний являеться источником багов, в теории все понятно , а на практике как оно
            кто нидь реальный опыт не в гараже ;)

            Тоже не понятно.
            И часто еще сюда же "ленивые вычисления" приаттачивают.
            Это что же хрень еще?
            Нафига они нужны?

            Добавлено
            Это типа когда программист написал С=А+Б
            А чуть ниже С=А-Б

            И компилятор в результате понимает, что НИЧЕГО делать не надо и не переводит электроэнергию в тепло выполняя бесполезные вычисления?

            Так?
              Нет. Вычисления делаются тогда, когда они нужны, но не ранее. Бывает, что до них дело не доходит.
                Цитата prografix @
                Нет. Вычисления делаются тогда, когда они нужны, но не ранее. Бывает, что до них дело не доходит.

                а разве это не косяк программиста?
                что он написал вычисления, до которых дело не доходит?

                Добавлено
                Или допустим написал я А=Б+В в начале программе
                А потом А у меня используется только в конце.
                Так вот, вычисления А будут тоже производится в конце?
                Это и есть "ленивые вычисления"?

                А в чем тут фишка-то?
                В чем выигрыш?
                Экономия памяти?
                Что память под А выделится только тогда, когда А реально будет нужна?
                Или что?
                  Цитата Исмаил Прокопенко @
                  а разве это не косяк программиста?
                  что он написал вычисления, до которых дело не доходит?
                  Обычно косяк, но иногда без этого не обойтись, а иногда так просто программа понятнее получается.
                    Исмаил Прокопенко
                    Вот тебе классический пример. Есть программа вычисляющая число пи в текстовом виде. Если надо распечатать его с пятью знаками она вычислит его с пятью знаками. Если позже понадобится больше знаков программа вычислит ещё несколько знаков и т.д. Т.е. она не делает больше, чем нужно на текущий момент.
                      Цитата prografix @
                      Исмаил Прокопенко
                      Вот тебе классический пример. Есть программа вычисляющая число пи в текстовом виде. Если надо распечатать его с пятью знаками она вычислит его с пятью знаками. Если позже понадобится больше знаков программа вычислит ещё несколько знаков и т.д. Т.е. она не делает больше, чем нужно на текущий момент.

                      А циммес то в чем?
                      Экономия электроэнергии?

                      Чего машину-то жалеть?
                      Она же железная
                        Это в основном от метода распределения памяти, применяемом в компиляторе. Современные компилеры используют динамическое распределение памяти. Т.е. память под переменные выделяется только тогда, когда это необходимо.
                        К примеру
                        IF A-B=0 THEN X1() ELSE X2()
                        Внутри текста для процедур Х1 и Х2 жуть как много всяких переменных, массивов, констант и прочая.
                        Но в зависимости от A и B вызовется ведь только одна из них.
                        И если A=B, то произойдет обращение к Х1, под все данные этой процедуры выделится оперативная память и она - Х1 - и сработает. А все переменные и остальное из Х2 в оперативке будут отсутствовать. После выхода из процедуры Х1 ее локальная область данных будет очищена. Экономия однако... :)
                        При современных объемах перерабатываемой информации она существенна.
                        Сообщение отредактировано: Oleg2004 -
                          Цитата Исмаил Прокопенко @
                          А циммес то в чем?

                          Что-то у тебя плохо воображение работает, а я не люблю объяснять. Бывает так, что экономия существенная. Типа, как в методе ветвей и границ, где неперспективные ветки не считаются.
                            Цитата Исмаил Прокопенко @
                            А циммес то в чем?
                            Экономия электроэнергии?

                            Чего машину-то жалеть?
                            Она же железная
                            Время и деньги свои пожалей, если не жалко машину.
                              Приведите примеры задач, где без "ленивых вычислений" просто ж..па
                              [цензура]
                              Сообщение отредактировано: JoeUser -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (16) « Первая ... 7 8 [9] 10 11 ...  15 16 все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0501 ]   [ 16 queries used ]   [ Generated: 24.04.24, 11:02 GMT ]