Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.137.161.222] |
|
Страницы: (16) « Первая ... 7 8 [9] 10 11 ... 15 16 все ( Перейти к последнему сообщению ) |
Сообщ.
#121
,
|
|
|
Цитата Qraizer @ что WinNT 3.1 имела скольки-то там килобайтное ассемблерное ядро, инкапсулирующее аппаратную абстракцию, а остальное было писано на C++. Этим самым была достигнута необычайно высокая степень портабельности WinNT. По сравнению с чем? Разве Си не более портируем и портирован, чем C++? А unix был ранее полностью переписан на Си без ассемблера. Хотя в современных потомках unix, особенно в linux, ассемблерные вставки наверняка присутствуют в угоду производительности (и/или, может, ещё каких-то соображений). |
Сообщ.
#122
,
|
|
|
Цитата korvin @ ассемблерные вставки наверняка присутствуют Там их просто валом. Пример файла отбалды (~/linux-4.5.2/arch/arm64/include/asm/arch_timer.h): 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; } } Насчет Хаскеля комменты опущу на всяк случай) |
Сообщ.
#123
,
|
|
|
JoeUser, ты не понимаешь. Хаскель - красив, C++ - уродлив. И не забывай, мы тут обсуждаем ФП, которого полно и в D и даже в C++.
|
Сообщ.
#124
,
|
|
|
Цитата korvin @ В то время разница между этими двумя языками была куда менее очевидна. Миф о "C++ суть C с классами", можно сказать, оттуда. Другое дело, что C++ при грамотном проектировании позволяет разрабатывать, поддерживать и развивать проекты гораздо проще и без случайной стрельбы по ногам.По сравнению с чем? Разве Си не более портируем и портирован, чем C++? Но дело не в этом. Я реально помню, что читал о C++ как используемом для Windows NT. Добавлено P.S. Вероятно это была Компьютерра, ещё в своём исходном старом формате. |
Сообщ.
#125
,
|
|
|
Цитата settler @ Это Я о новых языках Scala, F#, Хекель, я так понял их идея это програмировать без стэйта, ибо последний являеться источником багов, в теории все понятно , а на практике как оно кто нидь реальный опыт не в гараже Тоже не понятно. И часто еще сюда же "ленивые вычисления" приаттачивают. Это что же хрень еще? Нафига они нужны? Добавлено Это типа когда программист написал С=А+Б А чуть ниже С=А-Б И компилятор в результате понимает, что НИЧЕГО делать не надо и не переводит электроэнергию в тепло выполняя бесполезные вычисления? Так? |
Сообщ.
#126
,
|
|
|
Нет. Вычисления делаются тогда, когда они нужны, но не ранее. Бывает, что до них дело не доходит.
|
Сообщ.
#127
,
|
|
|
Цитата prografix @ Нет. Вычисления делаются тогда, когда они нужны, но не ранее. Бывает, что до них дело не доходит. а разве это не косяк программиста? что он написал вычисления, до которых дело не доходит? Добавлено Или допустим написал я А=Б+В в начале программе А потом А у меня используется только в конце. Так вот, вычисления А будут тоже производится в конце? Это и есть "ленивые вычисления"? А в чем тут фишка-то? В чем выигрыш? Экономия памяти? Что память под А выделится только тогда, когда А реально будет нужна? Или что? |
Сообщ.
#128
,
|
|
|
Цитата Исмаил Прокопенко @ Обычно косяк, но иногда без этого не обойтись, а иногда так просто программа понятнее получается. а разве это не косяк программиста? что он написал вычисления, до которых дело не доходит? |
Сообщ.
#129
,
|
|
|
Исмаил Прокопенко
Вот тебе классический пример. Есть программа вычисляющая число пи в текстовом виде. Если надо распечатать его с пятью знаками она вычислит его с пятью знаками. Если позже понадобится больше знаков программа вычислит ещё несколько знаков и т.д. Т.е. она не делает больше, чем нужно на текущий момент. |
Сообщ.
#130
,
|
|
|
Цитата prografix @ Исмаил Прокопенко Вот тебе классический пример. Есть программа вычисляющая число пи в текстовом виде. Если надо распечатать его с пятью знаками она вычислит его с пятью знаками. Если позже понадобится больше знаков программа вычислит ещё несколько знаков и т.д. Т.е. она не делает больше, чем нужно на текущий момент. А циммес то в чем? Экономия электроэнергии? Чего машину-то жалеть? Она же железная |
Сообщ.
#131
,
|
|
|
Это в основном от метода распределения памяти, применяемом в компиляторе. Современные компилеры используют динамическое распределение памяти. Т.е. память под переменные выделяется только тогда, когда это необходимо.
К примеру IF A-B=0 THEN X1() ELSE X2() Внутри текста для процедур Х1 и Х2 жуть как много всяких переменных, массивов, констант и прочая. Но в зависимости от A и B вызовется ведь только одна из них. И если A=B, то произойдет обращение к Х1, под все данные этой процедуры выделится оперативная память и она - Х1 - и сработает. А все переменные и остальное из Х2 в оперативке будут отсутствовать. После выхода из процедуры Х1 ее локальная область данных будет очищена. Экономия однако... При современных объемах перерабатываемой информации она существенна. |
Сообщ.
#132
,
|
|
|
Цитата Исмаил Прокопенко @ А циммес то в чем? Что-то у тебя плохо воображение работает, а я не люблю объяснять. Бывает так, что экономия существенная. Типа, как в методе ветвей и границ, где неперспективные ветки не считаются. |
Сообщ.
#133
,
|
|
|
Цитата Исмаил Прокопенко @ Время и деньги свои пожалей, если не жалко машину. А циммес то в чем? Экономия электроэнергии? Чего машину-то жалеть? Она же железная |
Сообщ.
#134
,
|
|
|
Приведите примеры задач, где без "ленивых вычислений" просто ж..па
[цензура] |
Сообщ.
#135
,
Сообщение отклонено: JoeUser -
|