TinyString = 16 символов
SmallString = 64 символа
SizeString = 256 символов
HugeString = 1024 символа
Не, это тупиковый путь. Вот смотри - я пишу компилятор на обероне
И у меня естественным образом возникает некая сруктурка, в которой я буду держать, например, распарсенный идентификатор переменной. Вот мне какую строку под это дело взять? 16? Не, маловато. 32? Должно хватить. А вдруг тексты на обероне начнут генерить и компилить моим компилятором - фиг знает чего там нагенерят и упрутся в эти 32. Ладно, возьму 1024 - хватит всем (гхм, ну с вероятностью близкой к 1). Но с другой стороны для большинства случаев получаем оверхед в расходе памяти на
2 порядка. Плюс еще пишем в документации (вроде у arkon'а как раз было) - "нельзя использовать идентификаторы больше 1024". Пользователь читает такую доку и недоумевает - а почему, собственно? Че за херня? А! Это потому что в обероне (на котором писался компилятор) нет нормальных строк.
P.S. Кстати реальный случай. В 6-й студии (вроде) было ограничение 255 на длину идентификатора в отладочной информации. Хорошо еще, что это был warning, а не error. Соответственно линковщик мусорил этими варнингами. Ну и понятно, что у них там тоже не было строк, а был где-то
char buffer[256];.
P.S.S. Конечно Вирт в своей книжке про компиляторы не гнушается использовать
ARRAY 16 OF CHAR для этих самых идентификаторов. Ну так то в учебной книжке - почему бы и нет. Но в промышленном коде - это уже попахивает...