Perché i linguaggi di programmazione come Ruby usano i simboli? Capisco che la manipolazione delle stringhe sia molto più lenta dell'utilizzo di una tabella di ricerca e l'idea che le stringhe vengano riallocate nella memoria, indipendentemente dal fatto che siano uguali o diverse da quelle utilizzate in precedenza, ma gli interpreti non possono compensarle? Sembrerebbe che un interprete debba ancora analizzare la parola che hai digitato per abbinarlo a un simbolo, quindi perché non fare lo stesso con un oggetto stringa?
Ad esempio, perché il compilatore non accetta:
myHash["myKey"] = ...
e trattalo come
myHash[:myKey] = ...
dietro le quinte, comunque? Anche se la chiave è dinamica - è un interprete, quindi non dovrebbe sapere quale sarà la chiave prima di trovare il valore e trattare la chiave di stringa come un simbolo? ad esempio:.
concatMe = "Key"
myHash["my" + concatMe] = ...
Come mai un interprete non può ancora trattarlo come
myHash[:myKey]
Se sa cosa
"my" + concatMe
è prima trova il valore per chiave?