Tutti i linguaggi di scripting sono scritti in modo dinamico? [chiuso]

3

Tutti i linguaggi di scripting sono scritti in modo dinamico?

Sto usando TCL. È un linguaggio di scripting e non applica o consente il delaring di variabili. È invece un linguaggio tipizzato dinamicamente con ducktyping. Il tipo di variabile viene assunto dall'interprete in base al valore assegnato ad esso.

Mi piacerebbe sapere che esistono linguaggi di scripting che sono rigorosamente / strongmente tipizzati.

    
posta user2720323 13.12.2013 - 09:22
fonte

2 risposte

4

Bene, nella mia nomenclatura - che non è universale, ma di chi è? - TCL non è un linguaggio tipizzato dinamicamente, è un tipo non tipizzato come i linguaggi assembly, BCPL, BLISS.

I linguaggi tipizzati staticamente sono tipi dedotti da un'analisi statica.

Le lingue digitate dinamicamente hanno un tipo associato ai valori.

Untyped ha un solo tipo di valori (parole per BCPL e BLISS, stringhe per TCL) e il tipo viene dedotto dall'operazione che viene applicata più o meno ciecamente sui valori.

La conversione automatica può offuscare la differenza tra le lingue digitate dinamicamente e quelle non tipizzate. L'evoluzione può anche conferire a un linguaggio non tipizzato un certo tipo di gusto dinamico (che è forse il caso di TCL - non l'ho usato troppo a lungo -, è anche il caso di alcune shell che hanno iniziato come non tipizzate e quindi hanno acquisito valori che sono di tipo diverso - ad esempio matrici) che rendono il loro comportamento incoerente e difficile da spiegare.

La tipizzazione di anatra è un altro asse. È un modo per verificare la conformità del tipo. È una variante della tipizzazione strutturale in cui vengono verificate solo le caratteristiche utilizzate. Può essere usato in linguaggi tipizzati staticamente (i template in C ++ sono anatra); nelle lingue dinamiche il controllo può essere ritardato per usare il tempo.

    
risposta data 13.12.2013 - 16:57
fonte
3

No. Se una lingua è tipizzata staticamente o dinamicamente, o con caratteri debolmente o strongmente, non ha nulla a che fare con l'interpretazione / la compilazione, che è un dettaglio di implementazione ortogonale.

Forse l'esempio migliore da utilizzare qui sarebbe Hugs , l'interprete Haskell . Per quelli inconsapevoli, Haskell è un linguaggio strongmente tipizzato con un sistema di tipi molto potente, ed è in qualche modo un bambino di poster per sistemi di tipo strong con solido supporto matematico.

Considera anche un linguaggio come Scala, che ha un sistema di tipi con potenza simile ed è molto difficile da inserire tra compilato e interpretato. Si "compila" fino al Bytecode JVM, che viene quindi interpretato / compilato / JITted a seconda dei vari dettagli di implementazione della JVM su cui è in esecuzione.

    
risposta data 13.12.2013 - 15:15
fonte

Leggi altre domande sui tag