82
6.3 Considerazioni conclusive
Ormai alla fine, è arrivato il momento di tirare le somme. Sono stati introdotti i linguaggi ad oggetti, descritte le loro proprietà, in primis la riusabilità. È stato additato Smalltalk, non me ne voglia Simula, come archetipo della programmazione OO, e da questo ci si è spostati verso un calcolo ad oggetti puro, Sigma, fino ad arrivare alla sua estensione Sigma_X. Si è parlato di tipi e sistemi di tipi, fornendo alcuni spunti di riflessione (non risposte complete di sicuro troppo intricate) per affrontare domande quali: “Perché i miei programmi crashano?”, “Perché il computer si rifiuta di eseguirli?” (safety e type soundness). Sostituzioni ed unificazione completano la parte puramente teorica della trattazione.
Per quanto riguarda la parte implementativa vorrei incentrare queste ultime considerazioni sul linguaggio usato per sviluppare Sigma_X, il suo Type System e gli strumenti di verifica: Java.
Java (versione 1.5) ben si è prestato per modellare termini del calcolo e sistema dei
tipi: il fatto di essere un linguaggio Object Oriented built-in ha permesso di definire in modo rigoroso e pulito la struttura di ogni singola componente, conferendo a termini e tipi la familiare struttura ad albero (vedere le considerazioni sull’albero della sintassi astratta). Ma questo “rapporto” non è stato tutto rose e fuori. Infatti la sua smodata visione OO mi ha a volte costretto a forzare il codice, rendendolo in taluni casi molto intricato (notare gestione dei tipi inseriti nei vettori). Sicuramente dipenderà anche dalla progettazione ma penso che ci sia dietro un problema più profondo: Java è nato di certo per scopi il più possibile legati al mondo del Web e del
multimedia e quando ci si trova ad affrontare problemi di una certa complessità non