La ragione per cui perché la maggior parte dei progettisti di linguaggi non amano i costrutti come l'avvio di variabili con caratteri speciali è che la maggior parte dei progettisti di linguaggio desidera minimizzare la quantità di "materiale" ripetitivo richiesto dal programmatore, quindi a lungo come il compilatore / interprete può capirlo. Quindi, per molti progettisti di linguaggi, il codice:
var x = new Something()
ha meno cruft di:
Something x = new Something();
("Perché ripetere la specifica del tipo? Il compilatore può dedurlo. Perché avere il punto e virgola? Il compilatore può capirlo.")
che a sua volta ha meno cruft di:
Something $x = new Something();
("Perché ogni variabile inizia con un '$'? Il compilatore sa che il token in quella posizione deve essere un nome di variabile")
L'estetica del design è qualcosa che la maggior parte dei designer di linguaggio probabilmente concorda in linea di principio, ma naturalmente la bellezza è negli occhi di chi guarda. Il "punto e virgola dedotto" in JavaScript, ad esempio, può portare a comportamenti sorprendenti.
La tua opinione che il valore di identificare rapidamente le variabili in base al $
è perfettamente valido, ma un'altra persona potrebbe dire "Bene, l'unico vantaggio semantico reale è che puoi avere variabili denominate in modo simile alle parole chiave ( $if
) e questo è un dubbio beneficio. " Nel caso specifico del refactoring, in lingue con semantica di tipo più ristretto, molti refactoring possono essere fatti non solo in modo rapido, ma "garantito sicuro", dal momento che il refactoring non viene eseguito su "solo una stringa" ma su un molto elemento specifico nell'albero di analisi.