L'informatica è una materia scientifica autonoma
L’informatica è la disciplina scientifica che rende possibile quella tecnologia dell’informazione senza la quale non ci sarebbe l’attuale società digitale.
Le radici dell’informatica come materia scientifica autonoma vengono tradizionalmente collocate in un articolo del 1936 del matematico inglese Alan Turing che descriveva i princìpi scientifici sulla base dei quali realizzare un calcolatore (computer ). Anticipando quella combinazione tra scienza e ingegneria che caratterizza l’informatica attuale, la descrizione di Turing fu negli anni 40 alla base del progetto e della costruzione dei primi calcolatori veri e propri. Da allora l’informatica si è sviluppata in una disciplina articolata e fiorente, basata sulla matematica e sull’ingegneria, ma con molti concetti fondamentali originali.
In questa pagina accenniamo ai più rilevanti.
- Algoritmo: anche se il concetto risale agli antichi Greci, ha preso pieno significato (serie di passi che descrivono come portare a termine un compito) solo con lo sviluppo dei calcolatori e la loro capacità di effettuare miliardi di operazioni al secondo. Gli algoritmi sollevano alcune importanti interrogativi scientifici. Ad esempio: come facciamo a sapere se un algoritmo terminerà ? Turing ha dimostrato che nel caso generale questo problema è indecidibile, ma per ogni caso specifico il problema va riconsiderato. Come facciamo a sapere se un algoritmo è corretto, cioè implementa le sue specifiche? Quest’ultimo aspetto è di enorme importanza per la società , dal momento che algoritmi non corretti possono provocare notevoli disastri, inclusa la perdita di vite umane. Progettare nuovi algoritmi è un attività creativa e intellettualmente stimolante, che può portare a grandi innovazioni.
- Efficienza e Complessità : l’analisi degli algoritmi serve per stabilire la loro efficienza in termini di quanto tempo impiegano (e quanto spazio utilizzano). La famosa congettura “P è diverso da NP †si chiede se alcuni problemi sono davvero intrinsecamente così complessi che nessun algoritmo efficiente potrà mai essere inventato per risolverli. La risposta ha implicazioni profonde in molti settori, come ad esempio la sicurezza dei commercio elettronico. Questo problema, studiato dai ricercatori per decenni, rimane a tutt’oggi aperto esattamente come quando fu formulato.
- Struttura di Dati: i programmi per calcolatore manipolano grandissime quantità di oggetti, tra cui basi di dati (database ) e depositi di dati (data warehouse ), memorizzati anche in modo distribuito sulla rete (cioè in cloud ). Essi possono essere non solo di enormi dimensioni ma spesso anche di grande complessità strutturale: lo studio di come strutturare e accedere ai dati in modo efficiente è una parte fondamentale dell'informatica.
- Sistema Distribuito e Concorrenza: le applicazioni informatiche coinvolgono molti processi che lavorano in parallelo, sollevando questioni di sincronizzazione e comunicazione che portano a nuovi modi di ragionare sul mondo. La natura distribuita delle reti di calcolatori e l’impossibilità di sincronizzare perfettamente i loro orologi sono alla base di alcuni difficili problemi concettuali e pratici.
- Linguaggio di Programmazione: le sofisticate notazioni artificiali dei linguaggi di programmazione hanno un ruolo importante in informatica. Il loro utilizzo richiede la capacità di ragionare su sintassi e semantica, con risultati che hanno già avuto un grande impatto su altri settori, come la linguistica.
- Astrazione: progettazione e comprensione dei programmi richiedono una stretta separazione tra “specifica†e “realizzazioneâ€. A questo scopo l’informatica ha sviluppato i principi di “information hiding †e "astrazione dei dati", con implicazioni profonde per molti altri settori scientifici.
Infine, due caratteristiche particolari dei sistemi informatici odierni sono la loro dimensione e complessità , che probabilmente superano quelle di qualsiasi altro sistema costruito dall’uomo. Per esempio, i sistemi operativi in uso oggi consistono di oltre 50 milioni di linee di codice di programma. È impossibile comprendere tali sistemi e controllare il loro comportamento senza un approccio rigorosamente scientifico e ingegneristico. La perdita del primo razzo spaziale europeo Arianne 5 nel 1996 a causa di un errore di programmazione ne è stata una dimostrazione clamorosa.