Linguaggi di sviluppo: tipizzazione forte o debole?

Da una piacevole discussione nata su Twitter con il buon Matteo Capucci @mattecapu (a proposito, per chi se lo fosse perso, mi trova su twitter all’account @albertoarmida) è nato lo spunto per questo post, che più che un post informativo (come solito) vuole essere un post di riflessione per gli “addetti ai lavori” (ossia per i programmatori).
Attualmente siamo letteramente circondati da linguaggi di programmazione di livello più o meno alto, di impostazione prettamente top-down (programmazione sequenziale) o i più moderni linguaggi ad oggetti.Qualsiasi linguaggio di programmazione che si rispetti consente all’utente di dichiarare variabili dove memorizzare i dati elaborati dai propri algoritmi, ed è proprio da questo concetto di variabile che è nata la discussione: meglio un linguaggio di programmazione debolmente tipizzato o un linguaggio fortemente tipizzato?
Prima di procedere oltre, chiariamo il concetto di tipizzazione: con tipizzazione si intende l’associazione tra una variabile ed un tipo di dato.
Molti linguaggi di programmazione consentono di avere quella che può essere definitiva come “tipizzazione debole” o “tipizzazione dinamica”, ossia una variabile è in grado di cambiare il proprio tipo durante l’esecuzione del programma.In pseudocodice:var x;