Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!

18.04.2023

64 біти має вистачити кожному

Ми живемо у вік рясності цілих чисел. Майже будь-який сучасний процесор має розрядність у 64 біти. Це розмір “нормального” цілого числа, або, як його називають, машинного слова - 64 біти, 8 байтів, або ж, у десятковій системі, більш ніж 10^19 можливих значень. Це буквально астрономічне число, якого достатньо, щоб підрахувати практично все, що нам може бути потрібно.

⭐ Може, зірки ми рахувати й не будемо, але можемо впевнено рахувати наших користувачів та створені ними обʼєкти. Таймстемпи з мілісекундною точністю займають всього 44 біти; це залишає ще 20 бітів вільними для іншого призначення. У 64 біти можна закодувати множину з 64 можливих значень — та робити над нею зручні побітові операції. Але головне, що 64 біти дозволяють адресувати будь-який можливий масив памʼяті.

Про це варто думати хоча б тому, що не так давно такої рясності не було. Максимальне 32-бітне число — всього лише 4 мільярди (а зі знаком - 2). Це вже зовсім досяжне значення; та з усіх лічильних речей, його перед усім не вистачало для памʼяті. Чотири мільярди — це лише 4 ГБ адресного простору памʼяті. Та якщо оперативна памʼять у 4 ГБ — не так вже й мало, то з дисками доводилось робити хитрі речі — розбивати на сегменти, наприклад. Розмір файлів в типовій 32-бітній файловій системі теж був обмежений двома гігабайтами.

Та й легендарна фраза 640 кілобайтів вистачить кожному має корені саме в розрядності машинного слова. Бо на той час процесор Intel 8088 більше не міг адресувати; пізніші процесори дозволяли адресувати додаткову памʼять за допомогою дуже хитрих систем - EMS та інших — та пересічному програмісту, який хотів більше памʼяті, треба було у всьому цьому розбиратись.

Так що, давайте цінувати те, що зараз ми можемо просто взяти тип Integer та не турбуватись про його переповнення; мати компʼютери з 24 ТБ памʼяті; та файли робити такими великими, як нам захочеться.

(Раніше: про UUID)