Tach!
Programmieraufgaben sind vielfältig. Stell Dir vor Du bekommst ein Array mit Zahlen die Bytewertigkeiten darstellen. Gesucht sind die sich daraus ergebenen Codepoints. Ein Beispiel für den Kontextwechsel von Bytesemantic zu Charactersemantic.
Das ist ein konkreter Anwendungsfall, noch dazu ein sehr spezieller, aber kein Beleg dass deine allgemeine Aussage allgemeine Gültigkeit hätte.
Stringfunktionen sind z.b. upper(), lower(). Sie verändern nicht Zeichen sondern Bytes. Sie sind sozusagen eine API weil sie zwischen Zeichenorientierung und Byteorientierung vermitteln. Das sollte ein Programmierer zumindestens wissen. Diese Funktionen gibt es in allen PLs
MFG