Одна вещь, которая пришла мне в голову на днях, это конкретные типы, которые все еще необходимы, или наследие, которое сдерживает нас. Я имею в виду следующее: действительно ли нам нужны short, int, long, bigint и т. Д. И т. Д.
Я понимаю причину, переменные / объекты хранятся в памяти, память должна быть выделена, и поэтому мы должны знать, насколько большой может быть переменная. Но на самом деле, не должен ли современный язык программирования обрабатывать «адаптивные типы», т. Е. Если что-то выделяется только в диапазоне сокращений, оно использует меньше байтов, а если что-то внезапно выделяется очень большое число, выделяется память в соответствии с этим конкретным случаем.
Float, real и double немного сложнее, так как тип зависит от того, какая точность вам нужна. Однако строки должны иметь возможность занимать меньше памяти во многих случаях (в .Net), где в основном используется ascii, но строки всегда занимают вдвое больше памяти из-за кодировки в юникоде.
Одним из аргументов для конкретных типов может быть то, что это часть спецификации, то есть, например, переменная не должна быть больше определенного значения, поэтому мы устанавливаем ее в shortint. Но почему бы вместо этого не иметь ограничения типа? Было бы гораздо более гибким и мощным иметь возможность устанавливать допустимые диапазоны и значения для переменных (и свойств).
Я осознаю огромную проблему в обновлении архитектуры типов, поскольку она настолько тесно интегрирована с базовым оборудованием, и такие вещи, как сериализация, могут стать действительно сложными. Но с точки зрения программирования это должно быть здорово, нет?
type hour is range 0 .. 23;