Agreed.
I don't understand why everyone accepts smallint, Int, long, and bigint as obvious and enabling good optimizations and controls
But in the same time, why would we need a SINGLE type for every string in the world, from little 5 bytes words to huge blocs of media files.
We should have small string (255 chars), 2 bytes length strings (65535), and so on. When you add more char to a string you should get a proper exception and operating systems could at last be aware of string reaching borders of their memory processes.
Having the size ready at your disposal makes lots of sense as we all use the length function a lot.
Can you think of the CPU time it takes to get the length function running on huge strings millions of time in all our operating systems ?