Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Schede e inizio programmazione: FORTRAN, LISP e linguaggi moderni, Schemi e mappe concettuali di Storia

L'inizio della programmazione con le schede perforate e il primo computer a programma memorizzato, il FORTRAN, e il linguaggio LISP. Viene inoltre discusso il contrasto tra programmazione strutturata e non strutturata, il teorema di Bohm-Jacopini e la nascita dei sistemi operativi. una visione interessante della storia della programmazione e dei linguaggi di programmazione.

Tipologia: Schemi e mappe concettuali

2019/2020

Caricato il 04/04/2022

geral-ormeno
geral-ormeno 🇮🇹

5 documenti

1 / 25

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Cortosi Vittorio
Ripasso Storia 2020/2021
Prima Parte
Sono contenuti solo gli argomenti che ha citato il professore nella lezione sul ripasso.
INDICE
1. Architetture e sistemi di calcolo
2. Linguaggi di programmazione
3. Sistemi Operativi
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19

Anteprima parziale del testo

Scarica Schede e inizio programmazione: FORTRAN, LISP e linguaggi moderni e più Schemi e mappe concettuali in PDF di Storia solo su Docsity!

Cortosi Vittorio Ripasso Storia – 2020/ Prima Parte Sono contenuti solo gli argomenti che ha citato il professore nella lezione sul ripasso. INDICE

  1. Architetture e sistemi di calcolo
  2. Linguaggi di programmazione
  3. Sistemi Operativi

Architetture e sistemi di calcolo

  • Chi era Charles Babbage? o Figura eminente del suo tempo a cui fu affidata anche la cattedra di Matematica di Cambridge. o A metà del diciannovesimo secolo concepisce (dopo il primo progetto mai dato alla luce, chiamato difference engine) l’Analytical Engine , da molti considerato il primo computer avente architettura simile ai computer moderni. o Nel suo percorso per riuscire sviluppare l’Analytical Engine, Babbage viaggia per l’europa (Torino in particolare), incontrando Giovanni Plana , a cui chiede di pubblicare un resoconto delle conferenze di Charles: ▪ Plana affida l’incarico ad un suo allievo: Luigi Federico Menabrea. o L’articolo pubblicato venne poi tradotto in inglese da Ada Lovelace o Con un po’ di esagerazione è tradizione considerare Charles Babbage l’inventore del primo computer moderno e Ada la prima programmatrice della storia.
  • Cos’è l’algebra di Boole e perché è importante? o Nel 1854 l’inglese George Boole pubblica un articolo in cui vengono illustrati i principi dell’algebra booleana: strumento su cui si basano i calcolatori digitali moderni o Articolo considerato puramente teorico fino al 1930 circa
  • Cosa sono le schede perforate e che influenza hanno avuto? o La prima ricorrenza storica delle schede perforate si ha nel 1801 con Joseph Jacquard che ebbe l’idea di usare schede perforate (in origine rotoli di carta perforata da Basile Bouchon nel 1725), per il controllo automatico di un telaio in cui una scheda perforata permetteva di stabilire quale combinazione di fili di diverso colore dovessero essere usati in ogni riga di un tessuto. o L’idea di usare schede perforate permase nel tempo fino al 1980 in quanto: ▪ Le schede rappresentavano un metodo semplice ed economico per codificare informazioni che dovevano essere elaborate in modo automatico o Le schede venivano perforate attraverso un perforatore di schede o Ogni scheda conteneva una linea del programma da eseguire, altre contenevano i dati del programma. (Io ancora non ho capito come cazzo facevano).
  • Chi era Herman Hollerith? o Nel 1890 venne bandita in USA una gara per chi riuscisse a trovare un sistema in grado di velocizzare i dati raccolti dal censimento. Hollerith vince il concorso con la sua Macchina Tabulatrice Elettro-Meccanica: ▪ La macchina gestiva schede perforate, ognuna delle quali conteneva informazioni anagrafiche di un cittadino (erano l’input della macchina) ▪ la macchina era collegata ad un circuito elettrico, che veniva acceso o spento a seconda della presenza o meno dei buchi nelle schede (Wiki). o La macchina funzionò perfettamente riuscendo ad esaminare fino ad 800 schede al minuto. o Successivamente estese il campo di applicazione della sua macchina (ad esempio per le compagnie ferroviarie, assicurazioni, etc..), fondando la Tabulating Machine Corporation per la produzione e la commercializzazione delle varie invenzioni/macchine. Dalle ceneri di questa compagnia nascerà la International Business Machine Corporation (IBM).

▪ Il motivo per il quale l’articolo fosse a sola firma Von Neumann è che ai tempi era considerato normale firmare l’articolo con il componente più “importante” del gruppo. Inoltre, era molto più famoso degli altri ricercatori e considerato una delle più grandi mente matematiche del secolo. ▪ Dunque, il report avrebbe sicuramente avuto più risonanza se fosse stato a nome di von Neumann, anziché a nome di uno (quasi) sconosciuto come Goldstine (Cit. Gunetti). o È dal nome dell’autore di questo articolo che deriva l’espressione Architettura Von Neumann.

  • L’SSEM o Primo e vero computer a programma memorizzato. o Progettato da Williams e Kilburn inizialmente per testare il funzionamento di un nuovo tipo di memoria: la WTK, che elimina alcuni difetti della MDL: ▪ Accesso sequenziale ▪ Funzionamento a temperature controllate ▪ Ingombranti o Le WKT sono da considerare la prima vera e propria memoria ad accesso diretto (RAM): ▪ Consisteva in un tubo catodico la cui superficie era suddivisa in una matrice di n slot, ognuno dei quali poteva essere polarizzato +/-. o Le WKT, quindi, occupavano meno spazio ed erano ad accesso diretto, quindi più veloci, ma meno affidabili con il tempo rispetto alle MDL.
  • Whirlwind, perché è ricordato? o Per aver introdotto alcune innovazioni che ritroviamo ancora oggi nei computer moderni: ▪ L’introduzione del bit-parallel che a differenza del bit- serial permetteva di elaborare più bit in parallelo (nel caso del Whirlwind 16). Questo richiedeva più hardware ma rendeva l’elaborazione più veloce di qualsiasi altro computer. ▪ L’introduzione di un nuovo tipo di memoria: Core Memory (memorie a nucleo magnetico). ▪ L’introduzione di microprogramma: lo strato intermedio tra le porte logiche di un processore e le sue istruzioni macchina: - Per la prima volta era presente un control store che stabiliva, per ogni istruzione, come pilotare le porte logiche del datapath
  • Le memorie che precedono la RAM a semiconduttore o Delay Line Memory o William Kilburn Tube o Memorie a taburo rotante o Macnetic Core Memory
  • Transistor , cosa lo rende migliore? o Inventato ai laboratori Bell, è una delle invenzioni più importanti della storia. o In maniera simile alla valvola termoionica può essere usato come interruttore o amplificatore di segnale. Quando usato come interruttore, rispetto alle valvole termoioniche, commuta molto più velocemente il suo stato (Dunque può funzionare a frequenze più elevate (del clock di un computer, ad esempio).

o Rispetto alle valvole termoioniche: ▪ Costano meno ▪ Consumano meno ▪ Scaldano meno ▪ Possono essere miniaturizzati fino quasi a raggiungere la dimensione atomica. ▪ Funziona a frequenze più elevate ▪ Più affidabili o La tecnologia verrà migliorata con gli anni fino ad arrivare a costruire transistor a semiconduttore.

  • Nastri magnetici come memorie di massa o Il primo computer ad utilizzare questa tecnologia fu l’UNIVAC I (1951). o Chiamato anche UNISERVO, il nastro magnetico permetteva di memorizzare su un nastro di carta dei dati permanenti utilizzando una telescrivente oppure mediante un lettore di schede perforate, collegati al dispositivo che gestiva il nastro. o Ricoprirono un’importanza fondamentale nel campo delle memorie fino agli anni 70 con l’invenzione degli Hard Disk.
  • Memorie a nucleo magnetico o Forma predominante di memoria centrale dal 1955 al 1975 o Le ricerche nascevano con l’esigenza di sostituire le WKT (poco affidabili) o Sono memorie non volatili, quindi in cui l’informazione permane nel tempo. o Il funzionamento è il seguente: Fili elettrici adeguatamente intrecciati ai nuclei di ferrite (che di solito hanno una forma ad anello) permettono di generare il campo magnetico col quale polarizzare opportunamente ogni singolo nucleo, memorizzando così su di esso un valore 0 oppure 1. Un terzo filo passante tra gli anelli (non presente in figura) permetteva la lettura del bit memorizzato, che poi però andava riscritto perché l’anello di ferrite si smagnetizzava o Erano chiamate “core memory” o “core”, ed è per questo che la memoria centrale oggi viene spesso chiamata così. Stessa cosa per i “core dump”.
  • Terza generazione di Computer o Per terza generazione si intende quei Computer costruiti con tecnologia a semiconduttore e circuiti integrati (La seconda gen è quella a transistor e la prima quella a valvole).
  • Perottina o Sviluppata da Pier Giorgio Perotto tra il 1962 e il 1964, è considerata da alcuni il primo personal computer della storia o Presentata come calcolatrice di fatto era un vero e proprio computer, dotato di 10 registri a 22 bit e programmabile in linguaggio macchina.
  • Seymour Cray ed il CDC 6600 o Figura quasi leggendaria nel campo dei supercomputer. o Era un ingegnere statunitense che progettò il primo supercomputer di successo della storia (nel 1965): il CDC6600. o Raggiunse i 40MFlops la versione 7600 o Cray partorì l’idea di cedere a processori periferici alcuni dei compiti che fino a quel momento erano assegnati alla CPU (come Comunicazione con le periferiche, memorie):
  • Come si sono evoluti i microprocessori? o La tecnologia di costruzione ha giocato un ruolo importante nell’evoluzione dei microprocessori: la capacità di inserire componenti sempre più miniaturizzati, permette di implementare meglio le tecniche ideate negli anni precedenti: ▪ Velocità: La frequenza del clock passa dai 0,8Mhz del 8008 ai quasi 4GHz del Pentium 4 ▪ Memoria indirizzabile: si passa dai 4 bit del 4004 ai 64 bit dei processori attuali ▪ Livelli di cache sempre più grandi e sempre più livelli di cache introdotti (fino ai 3 attuali). ▪ Introduzione del RISC ▪ Pipeline ▪ Multithreading o La capacità di costruire chip sempre più piccoli viene indicata con “Tecnologia a x Micro/nano metri (attuali 5nm Apple A14).
  • Il primo Personal Computer o Nel 1973 alla Xerox, viene sviluppato il primo personal computer dotato di mouse e GUI: Alto. o Il progetto influenzò altri progetti tra i quali: il Machintosh e le workstation Sun. (Alto fu sviluppato quasi 10 anni prima del primo Machintosh).
  • Il ruolo della Apple nella storia dell’Informatica o Steve Jobs e Wozniak, uno genio dell’elettronica (Woz) e l’altro visionario, lasciarono il college senza laurearsi, conoscendosi già da quando Jobs aveva 16 anni e Woz 21. Jobs spinse Woz ad interessarsi di più ai computer, tanto che spinse Woz a partecipare ad incontri di appassionati di computer con l’intento di costruire un computer utilizzando un terminale video che aveva costruito negli anni precedenti. o Non avendo disponibile denaro per acquistare i nuovi intel/Motorola, il suo progetto rimane su carta fino alla comparsa del 6502, un processore economico che permise a Woz di costruire il suo primo Computer e metterlo in mostra al club di hoppysti di computer. Qui incontra di nuovo Jobs, il quale frequentava il club perché aveva intuito il potenziale commerciale dei compuiter. o Jobs riesce a trovare un acquirente al quale vendere il computer appena costruito, chiamato e venduto con il nome di Apple 1. o Nel 1976 insieme a Mike Mrkkula fondano la Apple Computers Inc. (successivamente rinominata Apple Inc. nel 2007) o Seguono poi Apple 2 ed Apple 3 , che fu una disgrazia per Apple, in quanto presentava un problema di surriscaldamento dovuto alla mancanza del sistema di raffreddamento (voluto da Jobs) che portò la Apple a ritirare 14k esemplari. Inoltre, la IBM stava per lanciare il suo personal computer (RIP Apple).
  • Il personal Computer di IBM o Nel 1981, la IBM presenta il suo personal computer: IBM 5150. o Data la diffusione del 5150, i produttori di periferiche, schede di espansione e software compatibili con i PC IBM cominciano a sbucare come funghi: “IBM COMPATIBILE” diventa una qualità irrinunciabile per garantire il successo sul mercato. o Nel giro di 3 anni al IBM detiene il 56% del mercato dei PC contro il 16% di Apple
  • Il Machintosh 128K

o Il successo dell’IBM diede in qualche modo una scossa ad Apple che mise sul mercato qualcosa di rivoluzionario: ▪ A fine 1979, ad alcuni dirigenti Apple viene concesso di visitare per tre giorni Xerox Parc. Da qui nascerà l’idea di produrre un nuovo PC dotato di Interfaccia grafica a icone: LISA. o Apple produsse il LISA ma troppo costoso e quindi di scarso successo. o Subito dopo seguì il Machintosh 128K lanciato sul mercato con una imponente campagna pubblicitaria a partire dal gennaio 1984. Il machintosh 128k ebbe subito un enorme successo e segna l’inizio della divisione tra PC e MAC

  • RISC Revolution o Tra la fine degli anni 70 e 80, Dadiv Patterson e John Hennessy conducono esperimenti su un nuovo modello architetturale e un nuovo instruction set: i risultati daranno luogo a nuovi tipi di processori caratterizzati da istruzioni macchina semplici, a struttura regolare e dimensione fissa. o Sostituiranno quelli che sono stati i processori progettati fino a quel momento (denominati a loro volta: CISC).
  • Caratteristiche del CISC? o Le architetture CISC esprimevano molto lavoro in modo conciso (istruzioni più articolate espresse in una sola riga) che permettava: ▪ La generazione di eseguibili più corti e quindi poco spazio in memoria ▪ Dato che i tempi di accesso alle memorie erano alti, aveva senso esprimere grandi quantità di lavoro in poco spazio così da accedere meno alla memoria. ▪ L’uso della microprogrammazione contribuiva a generare instruction set sempre più complessi e articolati: - Il microprogramma era memorizzato su ROM e se fosse convenuto sarebbe bastato aggiungere un nuovo comando alla ROM arricchendo l’instruction set. - Si poteva addirittura cambiare l’intera ROM e quindi l’intero instruction set. o Tutta questa versatilità era alla fine una lama a doppio taglio: ▪ Avendo istruzioni di lunghezza variabile, alcune istruzioni potevano necessitare di 1 come 10 byte o come 20! Questo per non sprecare inutilmente spazio. ▪ Operandi messi a caso nell’istruzione: potevano trovarsi in posizioni diverse a seconda dell’istruzione o Inoltre, la parte di memoria in cui risiedevano le istruzioni da processare, veniva letta a blocchi, ed essendo istruzioni di lunghezza variabile, quando veniva letto un blocco non si sapeva ancora se si fosse letta una istruzione completa o meno, oppure se ne conteneva addirittura due. o Una volta individuata una istruzione, non sapendo dove si trovano gli operandi, bisognava individuare i bit che corrispondevano quest’ultimo. o Istruzioni più lunghe e complesse = datapath più complesso ed articolato
  • In cosa è meglio di RISC? o Nel paradigma architetturale RISC le istruzioni: ▪ Sono in numero ristretto

seguendo il lavoro di qualcuno che aveva imparato prima oppure, ancora più semplicemente, provando per conto proprio. Pochissimi programmi erano stati scritti, e naturalmente erano tutti in linguaggio macchina, dato che assembler e compilatori non erano ancora stati inventati (e neppure era chiaro che ci fosse bisogno di qualcosa come un linguaggio ad alto livello).

  • Initial Order o Con l’avvento di un nuovo computer chiamato EDSAC, nel 1949, venne introdotta una nuova forma mnemonica per le istruzioni macchina chiamate Initial Orders, facilmente comprensibili dall’essere umano: ▪ In sostanza il codice operativo delle istruzioni macchina era associato ad una lettera dell’alfabeto o Rappresentava una forma primitiva di assembler
  • Lo Short Code o Concepito da Mauchly per il BINAC (computer), in contemporanea agli Initial Orders, è considerato il primo linguaggio di programmazione ad alto livello (Non girò mai sul BINAC ma poi verrà usato sull’UNIVAC 1). o L’idea dello Short Code era quello di scrivere equazioni matematiche attraverso simboli e non più solo numeri : ▪ Ogni numero di un operando era riscritto attraverso un sumbolo o Con lo short code emergeva l’idea di codificare/immagazzinare nella memoria, non solo numeri ma anche simboli e caratteri alfanumerici attraverso codici numerici, poi successivamente tradotti ed interpretati.
  • Il compilatore di Corrado Bohm o Nel 1950 Corrado Bohm, italiano, definisce su carta un linguaggio ad alto livello, un linguaggio macchina ed un metodo di traduzione tra il primo ed il secondo. o Gli aspetti innovativi di questo lavoro furono i seguenti: ▪ L’uso dei concetti GOTO e IF-THEN-ELSE ▪ L’uso dello statement di assegnamento in tutte le istruzioni ▪ La possibilità di usare subroutine/funzioni ▪ Possibilità di scrivere un compilatore scritto nello stesso linguaggio dei programmi che deve compilare o L’intero compilatore era composto di sole 130 istruzioni per l’analisi sintattica e la generazione del codice macchina. o Inoltre, il compilatore genera codice in numero di passi proporzionale alla lunghezza del programma, rispetto ad altri linguaggi che ne richiedevano il doppio.
  • Il Fortran o Fa la sua comparsa nel 1957, il linguaggio più famoso di quegli anni ed anche il primo che sia sopravvissuto fino ai giorni nostri (ovviamente con diversi update). o Ha origine nel 1954 da un gruppo dell’IBM composto da Backus, Herrick e Ziller. I tre si riuniscono per creare un sistema “per la programmazione automatica” e si recano all’MIT per studiare un sistema progettato da Laning e Zierler

o Backus osservò come, in quegli anni, si pensava fosse impossibile che un compilatore avrebbe potuto generare codice efficiente e versatile. Tutti penavano che un compilatore potesse produrre solo codice macchina molto meno efficiente di quello scritto da un programmatore umano. o Anche Backus e il suo gruppo temevano che potesse succedere tutto ciò al loro sistema e che nessuno avrebbe voluto utilizzare un sistema così inefficiente o In ogni caso, alla fine del 1954 il gruppo di Backus completò le specifiche del FORTRAN in cui osservavano che ▪ Il fortran sarebbe stato capace di scrivere programmi facilmente comprensibili e, una volta compilato, efficienti da eseguire rispetto agli altri sistemi in cui era presente facilità di sviluppo del codice ma inefficienza (o viceversa). ▪ Non ritenevano fondamentale che il FORTRAN fosse svincolato dall’hardware ma invece che avesse una forma NON assembler-like , e quindi ad alto livello. ▪ Doveva essere facile da apprendere, a detta loro era necessario un ora di tutorial per apprenderlo. o Venne reso disponibile nell’aprile del 1957 dopo più di due anni di annunci e ritardi vari. Molti programmatori erano conviti del fatto che non avrebbe mai funzionato, ma circa un anno dopo il rilascio, metà dei computer IBM avevano al loro interno programmi scritti in FORTRAN o Ovviamente era presente di Bug e imperfezioni che verranno fixate con il tempo ( Ad esempio la presenza del GOTO , rimosso poi con il FORTRAN 77). o Quindi il FORTRAN è ricordato per essere il primo linguaggio ad alto livello in grado di generare codice altamente efficiente e avente una struttura del compilatore efficacie tanto da influenzare lo sviluppo dei linguaggi successivi

  • Il LISP o Dopo il FORTRAN, è il linguaggio più vecchio ancora in uso o Concepito tra il 1956 e il 1858 da John McCarthy per scrivere programmi in formalismo fortemente matematico (quello che chiameremo linguaggio di programmazione funzionale) per rappresentare e manipolare espressioni simboliche. o Molte furono le innovazioni: ▪ Primo linguaggio funzionale ▪ Aggiunta della ricorsione ▪ Uso di strutture dati come Alberi e Liste ▪ Memoria dinamica e garbage collector ▪ Composizione annidata di funzioni o Fu sviluppato inizialmente per un computer dell’IBM (IBM 704) ed era interpretato (il compilatore fu sviluppato nel 1962) o Alcune caratteristiche del LISP lo rendevano estremamente efficiente: ▪ Notazione prefissa per le espressioni ▪ la possibilità di implementare direttamente nel codice macchina dell’IBM 704 alcuni degli operatori principali del LISP (CAR e CDR in particolare) o Da ricordare che nel LISP tutto è rappresentato attraverso liste concatenate o Il LISP fu un successo soprattutto negli ambienti accademici e nel campo dell’intelligenza artificiale fino all’avvento del PROLOG.

ebbe successo tanto che dalla seconda metà degli anni 70, qualsiasi PC forniva un compilatore BASIC. o La fortuna del BASIC fu che era così leggero da poter girare su computer di potenza limitata ed allo stesso tempo sufficientemente ad alto livello e semplice tanto da poter essere usato da chiunque: contribuì in modo determinante nella diffusione tra il grande pubblico di una cultura informatica o Sebbene contribuì nella diffusione della cultura informatica, c’è da chiedersi se fosse una vera cultura : ▪ Il BASIC favoriva una programmazione non strutturata ▪ A questo proposito, Dijkstra scrive un articolo in cui critica il BASIC ed il COBOL, in quanto asserisce che linguaggi come il BASIC mutilasse la mente delle ed oltre ogni speranza di cura, mentre l’uso del COBOL paralizza la mente ed il suo insegnamento dovrebbe essere considerato un reato.

  • Cos’è lo Spaghetti Code o Era il nome con cui veniva denominato, in modo allegorico, il flusso computazionale di un programma scritto con codice non strutturato: ▪ Linguaggi come l’ALGOL, che favorivano la strutturata ma comunque contenevano il GOTO, permettevano comunque una programmazione non strutturata
  • Teorema di Bohm-Jacopini o Questo teorema, dimostrato e formulato nel 1966 dagli italiani Corrado Bohm e Giuseppe Jacopini, asserisce che qualsiasi funzione computabile può essere calcolata da un programma che utilizza solamente le seguenti istruzioni: ▪ Selezione (if then else) ▪ Iterazione (while, for) o Il teorema mostra che è possibile scrivere programmi senza l’uso del GOTO e quindi saltare dentro e fuori in modo disordinato da una parte all’altra del codice. o Da questo teorema nasceranno diversi dibattiti tra i sostenitori della programmazione strutturata e quelli invece contro. o Il nostro amico Dijkstra definisce il GOTO addirittura nocivo e dovrebbe essere abolito dai programmi in quanto ne complica l’analisi e il debugging.
  • Il Simula o Tecnicamente derivante dall’ALGOL e sviluppato tra il 1962 e il 1965 da Dahl e Nygaard, è stato pensato specificamente per compiere simulazioni (da cui il nome). Linguaggio a cui spetta il titolo di primo linguaggio OOP (Object Oriented Programming). o Per concepire l’idea di Classe ed oggetto, si ispirarono al concetto di record class inglobato nell’ALGOL: nella sua proposta, Hoare usava l’espressione di “record class” per indicare un generico concetto che si vuole modellare (la Classe) mentre i record sono le istanze della classe (gli oggetti) o Nel 1966 Dahl e Nygaard riescono a definire un modello di classi e superclassi con tanto di ereditarietà. o Con il Simula quindi vengono introdotti: ▪ Paradigma OOP ▪ Concetti di classe e sottoclasse ▪ Data abstraction

▪ Ereditarietà

  • Pascal o Dominò la scena dei linguaggi negli anni 70, presentato ufficialmente nel 1971 da Wirth con l’ambizione di: essere efficiente da compilare ed eseguire, permettere la scrittura di programmi ben strutturati ed organizzati. Inoltre, era obbiettivo del Pascal, diventare uno strumento di insegnamento per la programmazione (obbiettivo poi ampiamente raggiunto). o Il progetto del Pascal nasce dal tentativo di correggere alcune imperfezioni dell’ALGOL, in quanto assente del tipo CHAR e dei puntatori. Inoltre, era indipendente dalla piattaforma e quindi lo rendeva difficile da implementare alle diverse piattaforme hardware (scrivere il suo compilatore non era qualcosa di così banale e i suoi programmi erano spesso inefficienti) o Data l’assenza di varie implementazioni, il FORTRAN rimaneva il linguaggio preferito dagli ingegneri. L’ALGOL rimaneva solo un linguaggio per descrivere algoritmi. o Il Pascal incoraggiava la programmazione strutturata e modulare con tutte le caratteristiche ereditate dall’ALGOL e in più aveva: ▪ Sistema di tipi molto ricco e rigido ▪ Implementazione di nuovi tipi ▪ Meccanismo di type checking statico ▪ Sintassi elegante e facilmente leggibile o Il vero successo del Pascal fu l’introduzione di uno strato intermedio tra compilatore e codice macchina, il P-Code : ▪ Un programma Pascal non veniva tradotto immediatamente in codice macchina ma in istruzioni P-Code ▪ Successivamente il P-Code veniva interpretato da un altro modulo che lo mandava in esecuzione (come il ByteCode di Java). ▪ In questo modo il Pascal veniva fatto girare su piattaforme diverse o Verso la fine del 70 era ormai insegnato in tutte le università.
  • Il PROLOG o Come il LISP, non ha avuto molto successo. Il suo uso è stato confinato a poche università e centri di ricerca. o Esordisce nel 1972 ed ha un posto nella storia dei linguaggi come iniziatore del paradigma di programmazione logica e alla base del progetto FGCS o Nasce come dimostratore automatico di teoremi, usando come inferenza la regola di risoluzione o Una cosa particolare quindi del PROLOG e che funziona come dimostratore di teoremi per verificare il valore di verità di una proposizione, e come linguaggio per calcolare valori (?). o Nel PROLOG, tutti i programmi sono ricorsivi, il che porta ad un codice molto elegante e conciso.
  • Fifth Generation Computer System (FGCS) o Progetto ideato dal governo giapponese nel 1981 che consisteva nel progettare un supercomputer (usando il PROLOG come linguaggio) che sfruttava il parallelismo, il linguaggio naturale e l’AI. o Il progetto doveva segnare un profondo salto rispetto alle tecnologie precedenti (anche ai microprocessori). o Le macchina FGCS avrebbero dovuto eseguire operazioni logiche e quindi sarebbero state valutate in LIPS anziché FLOPS:

▪ In effetti i primi compilatori ADA erano lenti e producevano codice inefficiente o Il fatto che l’ADA prendesse le sue caratteristiche da altri linguaggi come l’ALGOL, il PASCAL ed il SIMULA e che introdusse altri costrutti articolati, non lo ha mai portato alla diffusione ed alla popolarità che ci si sarebbe aspettati.

  • Il linguaggio C o Il C è da considerare il linguaggio di programmazione più di successo della storia dell’informatica, considerandone la longevità e la diffusione. o Molti sono i linguaggi che si sono ispirati al C o diretti discendenti, come il C++, C#, l’Objective C… o La sua storia incomincia ai laboratori Bell quando si stava sviluppando il MULTICS OS. Tra i ricercatori del progetto c’erano Ritchie, Thompson e Kernighan. o Svilupparono il MULTICS rinominandolo per scherzo Unix. o Unix era scritto nell’assembler del PDP-7, ma successivamente utilizzarono un altro linguaggio ad alto livello che avevano chiamato “B” ed il relativo interprete (Il B derivava a sua volta dal BCPL che venne rinominato “Before C Programming Language) o Dal BCPL si deve la comparsa delle parentesi per la delimitazione di blocchi di codice: ▪ Thompson trasformo il BCPL in B rendendolo sintatticamente più conciso ed introdusse alcune notazioni familiari come: x++, x += y, == o Il B inizialmente era non tipato, ma dopo la modifica di Ritchie del 1972 (che introdusse il sistema di tipi scrivendo un nuovo compilatore) il linguaggio venne rinominato NB e dopo semplicemente C. o Il successo del C era dovuto soprattutto alle sue qualità: ▪ Portabilità: un programma C gira facilmente su qualsiasi piattaforma ▪ Modularità: grandi progetti posso essere spezzati in più moduli ▪ Efficienza: i programmi C girano più veloce dei programmi scritti in qualsiasi altro linguaggio ad alto livello. Ciò rende il C perfetto per la programmazione di sistemi operativi, sistemi embedded e per scrivere compilatori stessi. ▪ Compattezza: Possibilità di scrivere programmi molto sintetici (ma altrettanto oscuro e incomprensibili, sebbene funzionante). ▪ Tipi flessibili: al contrario del Pascal il C permette di combinare fra loro variabili di tipo diverso ▪ Gestione efficiente della memoria: con uso estensivo dei pointers ▪ Bitwise programming o Il C diede vita ad altri linguaggi, come le sue estensioni Object Oriented: ▪ Il C++ ▪ Objective C ▪ C-Sharp
  • Java e l’era di Internet o Java fu concepito alla Sun sotto la guida di G osling, nel 1990, con lo scopo di creare applicazioni complesse per piccoli dispositivi elettronici (l’idea centrale era quella di sviluppare software interattivo per le TV). o C’era dunque bisogno di un linguaggio con il quale era possibile sviluppare applicazioni che girassero su processori poco potenti: ▪ Il linguaggio più in voga in quel periodo era il C++ che però non era adatto per CPU di basse prestazioni.

o Gosling pensò di modificare il C++ per le esigenze del progetto (inizialmente chiamato C++ ++ --, nome di merda per indicare che erano state tolte alcune cose ed aggiunte altre. Successivamente ridenominato Oak). o Un evento epocale (nel 1993) rischiò di mandare all’aria tutto il progetto: l’avvento di Internet e del WWW : ▪ Con l’avvento di Internet, l’idea di un TV interattiva diventava quasi obsoleta. o Alla Sun furono bravi nel convertire il progetto in un’altra idea di successo: ▪ Con l’avvento del WWW, iniziarono a comparire i primi Browser Web (Il primo al CERN di Ginevra) ▪ La Sun ebbe quindi questa idea: Applicazioni scaricate da Internet insieme all’HTML ed eseguite localmente sul browser in modo da aggiungere capacità interattive alle pagine Web: Applet Java. o Il linguaggio delle Applet doveva essere cross-browser e indipendente dall’hardware o La sintassi del C++ venne conservata ed il nome venne cambiato in JAVA (dall’omonima varietà di caffè indonesiano) o Java fu rilasciato finalmente nel 1995, dopo grandi sforzi di marketing e con grandi aspettative da tutto il mondo informatico (non c’era tanto Hype dai tempi del FORTRAN). o Visto il successo, tutti i principali Browser vennero aggiornati incorporando la JVM per l’esecuzione delle Applet Java. o Java si estese poi oltre le semplici Applet, grazie alla sintassi simile al C++, diventando sempre più semplice ed affidabile. o Uno dei successi del Java fu la sua portabilità dovuta al bytecode (Idea già usata dal Pascal con il P-Code).

  • Linguaggi di Scripting o Un linguaggio di scripting è un linguaggio per scrivere script: uno script è un programma relativamente corto eseguito da un interprete. o A differenza di un linguaggio di programmazione tradizionale (che viene compilato ed eseguito) un linguaggio di scripting è ospitato da un ambiente software all’interno del quale lo script può essere scritto e fatto girare quasi istantaneamente: ▪ Una qualsiasi Shell Unix è un ambiente software in cui scrivere script ed eseguirlo. ▪ Anche un Browser Web è un ambiente in cui è possibile scrivere ed eseguire script
  • Linguaggi di scripting General Purpose o È un linguaggio che mette insieme le caratteristiche dei classici linguaggi di programmazione e le caratteristiche dei veri e propri linguaggi di scripting, come: ▪ Python ▪ Perl ▪ PHP ▪ Javascript ▪ Ruby

o Naturalmente il Resident Monitor doveva riuscire ad interpretare queste istruzioni di controllo, gestire l’I/O, far partire un programma e al termine dell’esecuzione riprendere il controllo della macchina. o Rispetto alla fase 1 quindi: ▪ Alla macchina veniva fornito un insieme di pacchetti di schede (non uno alla volta), separati da schede di controllo. ▪ Venivano caricati quindi più programmi in memoria e compariva la distinzione tra codice e dati ▪ Il Resident Monitor permetteva un’automazione dell’esecuzione di un gruppo di programmi. ▪ i dispositivi di input/output sono gli stessi rispetto alla fase 1 (lettori di schede perforate e lettori di nastri magnetici), ma ora possiamo inserire nella memoria computer più programmi da eseguire (ci penserà poi il resident monitor a lanciarli uno dopo l'altro), e questo fa risparmiare tempo. Infatti, mentre questi programmi girano, possiamo caricare su un altro nastro un successivo gruppo (batch, appunto) di programmi, che verranno gestiti allo stesso modo una volta finita l'esecuzione del gruppo precedente. Questo è più efficiente che caricare in memoria un programma alla volta, eseguirlo, e poi ripetere il tutto col programma successivo (Cit. Gunetti). o Tuttavia, i processori di quei tempi non fornivano una protezione hardware adeguata e il sistema era esente da protezione della memoria, quindi se un programma girava male bisognava spesso fare un reboot. o Il lavoro che eseguiva il Resident Monitor venne chiamato Batch Processing. o L’insieme di programmi che venivano fatti girare prendevano il nome di Batch Jobs o Le macchine su cui girava un Resident Monitor erano chiamate Batch System , ad esempio il Philco 2000: ▪ messo in commercio nel 1957 e anche uno die primi completamente a transistor su cui girava il sistema BKS (sistema batch)

  • Fase 3: Multiprogrammazione o In questa fase furono di enorme importanza i dispositivi di memorizzazione di massa ad accesso diretto, in quanto l’efficienza dei sistemi Batch era limitata dall’uso di dispositivi di massa ad accesso sequenziale e molto lenti. Vennero introdotte le memorie a tamburo rotante e successivamente gli Hard Disk. o Il termine Multiprogrammazione compare per la prima volta in un articolo di Strachey del 1959 il quale osserva che: ▪ Con l’utilizzo di un Hard Disk era possibile leggere contemporaneamente due programmi in simultanea dalla memoria rispetto ai nastri magnetici in quanto la testina di lettura/scrittura poteva spostarsi avanti e indietro in aree diverse del disco portando avanti in maniera quasi parallela diverse operazioni di lettura/scrittura. o Rispetto alla fase 2 , quindi, l’Hard Disk veniva usato come Buffer al posto dei nastri: ▪ Dalle schede perforate veniva letto il programma ed i dati, che venivano riversati sul disco. ▪ Una volta letto tutto, veniva fatto girare il programma ▪ Una volta finito il programma, l’output memorizzato sul disco veniva stampato o Inoltre, con l’introduzione degli interrupt, l’I/O poteva avvenire in maniera contemporanea: non era necessario che venisse prima letto tutto e poi stampato tutto. o Questo modo di operare degli Hard Disk (gestione dei programmi e dell’I/O), venne rinominato Spooling (Simultaneous Peripheral Operation On Line).

o Il termine Multiprogrammazione fu coniato per intendere qualcosa di diverso da quello che intendiamo oggi: si intendeva la possibilità di eseguire in maniera asincrona diverse operazioni di I/O. Successivamente il concetto fu generalizzato a programmi che si fermavano temporaneamente per eseguire I/O e che lasciavano la CPU libera permettendo l’esecuzione di un altro programma (modello di esecuzione che è noto come Multitasking o più propriamente Multitastking preemptive). o Primo Computer Multitasking: Atlas Computer ▪ Presentato nel 1961 con sistema operativo “Atlas”. ▪ Sviluppato da Kilburn, Payne e Howard è riconosciuto come il primo Computer multitasking e per molti il più importante passo avanti nella storia dei sistemi operativi ▪ Compaiono per la prima volta le System Call (inizialmente extracode) e memoria virtuale con paginazione su richiesta

  • Fase 4: Timesharing o Idea che nasce più o meno in contemporanea alla Multiprogrammazione in un report del 1959 di McCarthy in cui propone un’idea per ridurre il tempo richiesto per risolvere un problema: il time-sharing. Il computer dovrà occuparsi di altri utenti mentre uno degli altri utenti sta interagendo con qualche output del computer. o Poco tempo dopo McCarthy chiarisce la sua idea, ed è proprio qui che nasce l’idea di Time- Sharing: lui intendeva un sistema che interagisce simultaneamente con più utenti attraverso computer remoti. Tale sistema sembrerà agli utenti come se stesse utilizzando un computer privato (il sistema operativo è reso trasparente agli utenti). Inoltre, i programmi che si fermavano per operazioni di I/O non venissero spostati completamente in memoria di massa ma che rimanessero in memoria centrale: questo richiedeva di avere sufficientemente memoria da memorizzare un numero abbondante di programmi. Un ultimo requisito era che la memoria secondaria fosse sufficientemente grande da contenere i files degli utenti così che gli utenti non avessero bisogno di usare schede perforate o sistemi esterni di I/O. o CTSS ▪ Primo sistema operativo time-sharing sviluppato nel 1961 all’MIT ▪ L ‘obbiettivo del CTSS era quello di permettere a più persone di utilizzare il computer, attraverso un supervisor che alternava l’esecuzione dei vari programmi, assegnando un breve burst di CPU a ciascuno di essi, garantendo ad ogni utente di ricevere risposte in tempi ragionevoli. ▪ Una delle novità fu la possibilità di interagire con il sistema specialmente durante la fase di debugging ▪ I progettisti del CTSS si trovarono davanti a problemi che non erano mai stati affrontati prima: - Per permettere l’interattività, i programmi dovevano essere tutti tenuti in memoria, tenendo traccia delle diverse aree dei programmi per garantirne la protezione - Codice rilocabile dinamicamente - Al termine del quanto di tempo e alla ripresa dell’esecuzione di un programma, doveva ripartire nel punto in cui era rimasto - Operazioni di I/O sotto il controllo del sistema - …. ▪ Inizialmente il CTSS era in grado di gestire 3 utenti, successivamente 32