Dalle dita al calcolatore/XIII/7

7. Il soft-ware

../6 ../8 IncludiIntestazione 18 gennaio 2016 100% Da definire

XIII - 6 XIII - 8

[p. 231 modifica]7. Il soft-ware

Per quanto riguarda i programmi, abbiamo, nei primi anni cinquanta, la comparsa dei linguaggi di programmazione simbolica, che consentono al programmatore di utilizzare dei simboli per indicare le diverse operazioni, e non più dei numeri. Questo è il primo passo della lunga marcia verso la chiarezza nella scrittura dei programmi. Questi ultimi cominciano ad assumere una veste nella quale si distinguono gli ordini dagli indirizzi e dai dati. Per chiarire quello di cui stiamo parlando, bisogna dare alcune nozioni sulla struttura di un elaboratore: esso è composto da una unità di governo che legge un programma residente in memoria, dalla memoria recupera i dati su cui operare, e nella memoria scrive i risultati che ottiene.

La memoria è quindi una specie di agenda, all’interno della quale le singole pagine, dette “locazioni”, sono indirizzate: gli indirizzi delle varie locazioni sono dei numeri, perciò avremo la locazione 1, 2, ecc.

L’unità di governo saprà allora che il programma è memorizzato, ad esempio, nelle locazioni da 0 a 123, che i dati si trovano da 124 a 200, e che i risultati possono essere scritti da 201 in poi.

Il programma, nella forma iniziale, era costituito da un gruppo di numeri che indicavano le operazioni da svolgere, un altro gruppo di numeri che indicavano gli indirizzi da utilizzare e un terzo gruppo di numeri che svolgevano il ruolo di dati da elaborare e fornivano un quarto gruppo di numeri in qualità di risultati. Ovviamente, una struttura del genere è assolutamente impenetrabile alla maggioranza delle persone. Era inoltre praticamente impossibile, a una persona [p. 232 modifica]diversa dall’autore, interpretare il significato della serie di numeri, che, dulcis in fundo, andavano scritti in notazione binaria.

La possibilità di sostituire questi numeri con segni convenzionali ha costituito una vera panacea. È aumentato così il numero di persone in grado di programmare un elaboratore.

Questo passo avanti è stato possibile perché si sono realizzati programmi che trasformavano i simboli ricevuti nei corrispettivi numerici. Nel 1966, comparve sul mercato il primo elaboratore che poteva trovare posto su una scrivania, il “PROGRAMMA 101”: questa macchina, che oggi giudicheremmo molto semplice e limitata, ma che ha dominato il mercato per diversi anni, poteva essere programmata in linguaggio SYMBOL o ASSEMBLER. I compratori imparavano il linguaggio con corsi di tre o quattro giorni.

Nove anni prima, nel 1957, era comparso il linguaggio FORTRAN, il primo linguaggio di “alto livello” che permette di scrivere programmi utilizzando una simbologia molto simile a quella algebrica. Questa sequenza di istruzioni formali viene poi “tradotta” in ASSEMBLER da un programma “compilatore”, il che segna il secondo passo importante nella storia della capacità di colloquiare tra utenti ed elaboratori.

La comparsa di FORTRAN, di cui si sono viste parecchie versioni fino a quella diffusa attualmente, FORTRAN 77, apre la strada alla nascita di una serie numerosissima di linguaggi di programmazione destinati a vari utilizzi. Oggi se ne contano intorno ai 1500 solo negli USA, mentre anche in Europa ne sono stati messi a punto varie decine.

All’inizio degli anni sessanta sono stati elaborati e si sono imposti linguaggi che riportavano allo schema logico della macchina, linguaggi che privilegiavano la programmazione sequenziale, cioè un’impostazione basata sulla frammentazione del problema da risolvere in una serie di operazioni elementari, la cui esecuzione [p. 233 modifica]in sequenza porta alla soluzione; oltre al FORTRAN, appartengono a questa stessa categoria il BASIC, un linguaggio destinato ai principianti di cui avremo modo di riparlare, il COBOL, un linguaggio destinato ad applicazioni commerciali, e moltissimi altri.

In collegamento con la pratica di programmazione di questi linguaggi, raggiunse il massimo livello di formalizzazione l’uso dei diagrammi di flusso, un modo di analizzare in maniera schematica la traccia di ciò che si vuole realizzare. Si arrivava così alla stesura vera e propria del programma avendo già risolto tutti i problemi logici e dovendosi occupare essenzialmente della traduzione formale; alla realizzazione di questi schemi è legata la nascita della figura professionale dell’analista.

Diagramma di flusso

[p. 234 modifica]

La crescente complessità dei problemi che si stavano affrontando e la necessità di migliorare la comprensibilità dei listati portarono alla nascita della programmazione strutturata, un nuovo modo di concepire i programmi. In sostituzione dell’impostazione sequenziale, viene ora privilegiata un’analisi ramificata, che permette notevoli semplificazioni logiche del lavoro, ma soprattutto fornisce uno strumento di analisi molto più versatile e adattabile alle diverse esigenze.

Diagramma ad albero.

Questa nuova impostazione portò allo sviluppo di diagrammi ad albero, ma anche alla creazione di una serie di linguaggi di programmazione pensati proprio in vista dell’utilizzo di questo metodo. Tra di essi ricordiamo il PASCAL, scritto nel 1971 dallo svizzero Nicolaus Wirt e da cui si sviluppò il LOGO, un linguaggio destinato a usi didattici, ma anche molto valido in applicazioni di intelligenza artificiale. LOGO fu scritto intorno al 1980 dal gruppo dell’MIT guidato da Seymour Papert. Questo linguaggio mette a disposizione dell’utente anche un ambiente grafico nel quale si può operare con la cosiddetta “geometria della tartaruga”, di cui parleremo più avanti.

È interessante notare come attualmente anche l’hard-ware delle macchine stia avviandosi a superare la concezione seriale impostasi con von Neumann, per [p. 235 modifica]iniziare lo sviluppo di architetture cosiddette parallele. Queste sono basate sulla disponibilità di più unità di elaborazione, capaci di intervenire contemporaneamente su parti diverse del problema, con notevole guadagno di tempo.

È significativo che tra le antesignane di questa impostazione abbiano un posto importante le macchine per videogiochi: esse debbono gestire contemporaneamente l’evolversi delle situazioni di gioco, le immagini e le musiche, e hanno quindi esigenze di elaborazione abbastanza sofisticate. Nella stessa direzione vanno, con molta più autorevolezza, gli studi sull’intelligenza artificiale, nei quali si cerca di disporre di strutture parallele per simulare quelle della mente umana.

Già nell’agosto 1987 la rivista Le scienze descrive, in un articolo a firma di W.O. Hillis, un modello di calcolatore parallelo, la “CONNECTION MACHINE”, costituita da 65.536 unità di elaborazione. Questa macchina potrà essere impiegata in compiti che prevedono il controllo di molti eventi simultanei, interagenti tra di loro ma essenzialmente individuali.