Одне, що трапилось мені днями, це конкретні типи, які все ще потрібні, або спадщина, яка стримує нас. Що я маю на увазі: чи нам справді потрібні короткі, int, long, bigint і т.д. і т.д.
Я розумію, міркування: змінні / об'єкти зберігаються в пам'яті, пам'ять потрібно виділяти, і тому ми повинні знати, наскільки великою може бути змінна. Але насправді, чи не повинна сучасна мова програмування обробляти "адаптивні типи", тобто якщо щось коли-небудь виділяється в діапазоні коротких скорочень, воно використовує менше байтів, і якщо щось раптом виділяється дуже велике число, виділяється пам'ять чітко для цього конкретного випадку.
Поплавок, реальний і подвійний - трохи складніше, оскільки тип залежить від точної точності. Разом з тим, рядки повинні мати можливість зайняти меншу кількість пам'яті у багатьох випадках (у .Net), де в основному використовується ascii, але бутові струни завжди займають подвійну пам'ять через кодування Unicode.
Одним із аргументів для конкретних типів може бути те, що вона є частиною специфікації, тобто, наприклад, змінна не повинна бути більшою за певне значення, тому ми встановимо її короткий. Але чому б не мати натомість обмеження типу? Було б набагато гнучкішим і потужнішим, щоб можна було встановлювати допустимі діапазони та значення змінних (і властивостей).
Я усвідомлюю величезну проблему щодо оновлення архітектури типів, оскільки вона настільки тісно інтегрована з базовим обладнанням і такі речі, як серіалізація, справді можуть стати складними. Але з точки зору програмування це повинно бути чудово ні?
type hour is range 0 .. 23;