Questa domanda sembra essere abbastanza bene, ad esempio:
- I linguaggi tipizzati dinamici meritano tutte le critiche?
- Qual è il presunto aumento di produttività della digitazione dinamica ?
- ecc.
Tuttavia, molte domande e risposte sembrano confrontare linguaggi tipizzati staticamente come Java e C ++ con linguaggi tipizzati dinamicamente come Python e JavaScript. Questo sembra essere un confronto diverso: Java e C ++ sono prolissi, non interattivi e generalmente difficili da gestire per ragioni esterne ai loro sistemi di tipi.
Sono più interessato all'utilizzo di linguaggi statici come Swift o Haskell come base del confronto.
- Queste lingue hanno REPL, codifica interattiva o equivalenti
- Queste lingue hanno inferenza di tipo (come C ++)
- Queste lingue hanno "generici" facili da usare
- Queste lingue hanno ADT, che risolvono problemi come l'analisi JSON
Possiamo immaginare una variante di Swift con una forma di Digitazione strutturale , dove:
func foo(bar) { return bar.baz() }
È una sintassi valida per qualsiasi chiamata in cui viene passato un oggetto con un membro baz()
e il tipo restituito è baz()
dell'oggetto - creando effettivamente un protocol Foo<T>
anonimo con membro func baz() -> T
.
Questo può essere tradotto in JavaScript da s/func/function/g
, ma tutto il tipo di sicurezza andrebbe perso.
Qual è il vantaggio della digitazione dinamica, rispetto a un linguaggio tipizzato statico con un buon sistema di tipi?