Vedo che Javascript 6 aggiungerà ereditarietà basata sulla classe tradizionale e un argomento che sento è che le classi sono intrinsecamente molto più veloci dei prototipi perché possono essere ottimizzate dal compilatore quando si esegue la compilazione (JIT) al codice nativo o al bytecode. Quel genere di cose ha senso per me, ma non sono un programmatore abbastanza avanzato per capire davvero questa roba.
L'argomento che ho sempre visto per l'eredità prototipale (PI) è che conserva la memoria, che in questi giorni è per lo più un punto controverso. Personalmente, mi piace PI e ho sempre sentito che "ha senso" in un linguaggio dinamico; come se fosse un lusso che puoi anche permettertelo se hai già optato per i limiti prestazionali di un linguaggio dinamico interpretato.
In C ++, le classi hanno un senso a causa delle limitazioni che derivano dalla filosofia C ++ che tutto passa in secondo piano alla massima possibilità di rendimento.
Ovviamente puoi avere PI in C ++ e c'è un modello di design ben noto, ma sto parlando dell'ereditarietà integrata in un linguaggio dinamico.
Se si guardava all'implementazione più veloce possibile dell'ereditarietà prototipale in un linguaggio dinamico fittizio, quali sarebbero necessariamente gli inconvenienti in termini di prestazioni rispetto alle classi tradizionali?
Che cosa succede se aggiungi la funzione al linguaggio fittizio che puoi specificare che alcuni oggetti sono "definitivi" e che la loro catena di prototipi non può essere modificata in fase di runtime? (Coesistente con PI tradizionale) Aggiunge anche la digitazione statica facoltativa o il tipo di suggerimento se questo aiuta il linguaggio prototipo.
Poiché questa potrebbe essere considerata una domanda un po 'vaga, aggiungo:
Credo che cerco le riflessioni sull'argomento da persone più intelligenti e più interessate alla teoria del linguaggio e / o alla scrittura di compilatori / interpreti di me. Spero che sia ancora una domanda ok.
Non si tratta affatto di Javascript 6, l'ho appena presentato perché Javascript è il linguaggio prototipo di maggior successo ed è interessante che aggiungano classi native anche se Javascript sembra andasse bene senza di loro (sia la popolarità sia negli ultimi anni ha avuto alcuni sbalorditivi miglioramenti nei benchmark). Inoltre, non sto dicendo che credo o penso che Javascript sia lento.
In realtà, sono più interessato a saperne di più sulla programmazione dei linguaggi, possibilmente con l'obiettivo di costruire un giorno il mio linguaggio dinamico.