Кабінет психопатологічної евтаназіології (
euthanasepam) wrote2021-07-12 10:52 am
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Entry tags:
Пролетарська рекурсія за ваш рахунок
На популярному сайті Rosetta Code з прикладами програм на розмаїтих програмувальних мовах є зразки вирішення всіляких типових математичних, алгоритмічних і хтозна ще яких проблем.
Погляньмо, наприклад, на рекурсивний пошук якогось числа у послідовності Фібоначчі, запрограмований мовою Паскаль:
http://rosettacode.org/wiki/Fibonacci_sequence#Pascal
function fib(n: integer): integer; begin if (n = 0) or (n = 1) then fib := n else fib := fib(n-1) + fib(n-2) end;
Гарно? Авжеж. Вельми гарно. Тішить серце і милує око.
Але коли ви цей алгоритм відкомпілюєте і запустите на виконання для числа, скажімо, 64, то встигнете
Для порівняння: ітеративний алгоритм працює блискавично навіть для досить великих чисел, що вмістяться у комп’ютерну пам’ять.
Отож, мораль: коли вам якесь
P. S.
Нарешті порахувало для 64:
10610209857723 real 5257m47,799s user 0m0,000s sys 0m0,015s
no subject
Не думаю, що саме через це.
Такі великі числа мало кому цікаві. Мені, за 25 років практики, тільки пару раз long не вистачило. І таких — переважна більшість. А от науковцям воно потрібно.
no subject
Отож.
Бо дивимось ув інші мови і бачимо там таке:
https://classic.startpage.com/do/asearch?q=pascal+largest+integer
Якщо нема спеціяльних засобів, то скрізь буде обмеження машини. А цього для наукових обчислень дуже мало.
> Такі великі числа мало кому цікаві.
Мені цікаві: це найперше, на що я дивлюся, коли дивлюся на якийсь інтерпретатор чи компілятор.
no subject
http://www.freepascal.ru/article/freepascal/20181215220000
no subject
А що, в літературі по Паскалю не кажуть про ці проблеми?
no subject
Нещодавно я в одному журналі з подивом читав, що працевлаштовані у великих ΙΤ-компаніях люди бува не знають про IEEE 754.
Часто в йойтішних книжках пишуть ото як ти кажеш: вам не треба тої довгої арифметики, то ми про неї не пишемо. Або й нічого про неї не згадують.
no subject
В книжках по С та Java пишуть, що буде якщо помилишся з діапазонами. Ну і в Java є BigNum. А що є в С ХЗ, непотрібно було.