Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

27
Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054 Cervone Vincenzo TEC/0054 Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042 Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042 Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042 Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042 Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042 Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042 Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042 Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042 Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

description

Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054. Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042. - PowerPoint PPT Presentation

Transcript of Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Page 1: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Storia del Linguaggio di

programmazione CCervone Vincenzo TEC/0054Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Page 2: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Storia del linguaggio C

La nascita del linguaggio C e’ strettamente collegata a quella del sistema operativo UNIX, in quanto è stato sviluppato su questo sistema operativo anzi, lo stesso sistema operativo ed i suoi programmi, sono scritti in C.

Nonostante ciò, il linguaggio C non è legato solo alla programmazione dei sistemi operativi, ma con esso possono essere scritti (e sono stati scritti) grossi programmi di calcolo, word-processing e database.

Il linguaggio C nasce dall’evoluzione di alcuni linguaggi di programmazione. Vediamo quali:

La nascita del linguaggio C e’ strettamente collegata a quella del sistema operativo UNIX, in quanto è stato sviluppato su questo sistema operativo anzi, lo stesso sistema operativo ed i suoi programmi, sono scritti in C.

Nonostante ciò, il linguaggio C non è legato solo alla programmazione dei sistemi operativi, ma con esso possono essere scritti (e sono stati scritti) grossi programmi di calcolo, word-processing e database.

Il linguaggio C nasce dall’evoluzione di alcuni linguaggi di programmazione. Vediamo quali:

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Page 3: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Evoluzione storica del C

• Algol 60 Progettato da un comitato internazionale all'inizio del 1960.

• CPL Combined Programming Language, sviluppato a Cambridge e all'università di Londra nel 1963.

• BCPL Basic Combined Programming Language, sviluppato a Cambridge da Martin Richards nel 1967.

• B Sviluppato da Ken Thompson, Bell Labs, nel 1970.

• C Sviluppato da Dennis Ritchie, Bell Labs, nel 1972.

• Poi nel 1973 fu formato il comitato dell'American National Standards Institute (ANSI) con lo scopo di creare l'ANSI C, una standardizzazione del linguaggio C.

Page 4: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

1960 - ALGOL 60

L'Algol 60 fu progettato da un comitato internazionale all'inizio del

1960 alcuni anni dopo l'introduzione del FORTRAN. Questo

nuovo linguaggio all'epoca era complesso ed ebbe una grande

influenza sul progetto dei futuri linguaggi di programmazione. I

suoi autori prestarono molta attenzione alla regolarità della

sintassi, alla struttura modulare e ad altre caratteristiche di

solito associate ai linguaggi strutturati ad alto livello.

Sfortunatamente, l'Algol 60 non si diffuse mai veramente negli

Stati Uniti, a parere di molti per l'astrazione e la genericità del

linguaggio.

L'Algol 60 fu progettato da un comitato internazionale all'inizio del

1960 alcuni anni dopo l'introduzione del FORTRAN. Questo

nuovo linguaggio all'epoca era complesso ed ebbe una grande

influenza sul progetto dei futuri linguaggi di programmazione. I

suoi autori prestarono molta attenzione alla regolarità della

sintassi, alla struttura modulare e ad altre caratteristiche di

solito associate ai linguaggi strutturati ad alto livello.

Sfortunatamente, l'Algol 60 non si diffuse mai veramente negli

Stati Uniti, a parere di molti per l'astrazione e la genericità del

linguaggio.

Page 5: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

1963 - CPL

Il CPL (Combined Programming Language) è un linguaggio di

programmazione sviluppato congiuntamente dall'Università di

Cambridge e dall'Università di Londra fu pesantemente

influenzato dall'ALGOL.

Gli inventori del CPL intendevano riportare i concetti introdotti

dell'Algol 60 alla realtà dei computer veri. Però, come l'Algol 60,

il CPL era difficile da imparare e da implementare e per questo

fu anch'esso un fallimento.

Il CPL (Combined Programming Language) è un linguaggio di

programmazione sviluppato congiuntamente dall'Università di

Cambridge e dall'Università di Londra fu pesantemente

influenzato dall'ALGOL.

Gli inventori del CPL intendevano riportare i concetti introdotti

dell'Algol 60 alla realtà dei computer veri. Però, come l'Algol 60,

il CPL era difficile da imparare e da implementare e per questo

fu anch'esso un fallimento.

Page 6: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

1966 - BCPL

Martin RichardsMartin Richards

Il BCPL (Basic Combined Programming

Language) è un linguaggio di

programmazione sviluppato da Martin

Richards dell'Università di Cambridge,

in seguito alle difficoltà che aveva

incontrato nell'utilizzo del suo

predecessore, il CPL. Il primo

compilatore venne implementato

mentre Richards si trovava al MIT, nella

primavera del 1967. Il linguaggio venne

presentato per la prima volta al 1969

Spring Joint Computer Conference.

L'architettura del BCPL influenzò

pesantemente il linguaggio B, da cui

Dennis Ritchie in seguito sviluppa il C.

Il BCPL (Basic Combined Programming

Language) è un linguaggio di

programmazione sviluppato da Martin

Richards dell'Università di Cambridge,

in seguito alle difficoltà che aveva

incontrato nell'utilizzo del suo

predecessore, il CPL. Il primo

compilatore venne implementato

mentre Richards si trovava al MIT, nella

primavera del 1967. Il linguaggio venne

presentato per la prima volta al 1969

Spring Joint Computer Conference.

L'architettura del BCPL influenzò

pesantemente il linguaggio B, da cui

Dennis Ritchie in seguito sviluppa il C.

Page 7: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Le caratteristiche di pulizia, potenza e portabilità rendono

semplice la realizzazione di compilatori compatti (si

vocifera che alcuni compilatori potessero funzionare anche

con soli 16 KB di memoria).

Alcuni sistemi operativi vennero scritti, completamente o in

parte, utilizzando BCPL (ad esempio il TRIPOS o l'AmigaOS).

Le caratteristiche di pulizia, potenza e portabilità rendono

semplice la realizzazione di compilatori compatti (si

vocifera che alcuni compilatori potessero funzionare anche

con soli 16 KB di memoria).

Alcuni sistemi operativi vennero scritti, completamente o in

parte, utilizzando BCPL (ad esempio il TRIPOS o l'AmigaOS).

1966 - BCPL

Page 8: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

La principale caratteristica che rendeva il compilatore particolarmente portabile risiedeva nel fatto che esso era logicamente diviso in due parti:

la prima parte (frontend) si occupava di analizzare il codice sorgente e di generare un codice intermedio (O-code) per una macchina virtuale, la seconda (backend) traduceva l'O-code nel codice per la CPU bersaglio, su cui il programma doveva girare. In questo modo, quando era necessario scrivere un compilatore per una nuova CPU, era sufficiente riscrivere il backend. Questa tecnica divenne in seguito molto comune (ad esempio in Pascal o Java), ma il BCPL fu il primo linguaggio a specificare una macchina virtuale a questo scopo.

La principale caratteristica che rendeva il compilatore particolarmente portabile risiedeva nel fatto che esso era logicamente diviso in due parti:

la prima parte (frontend) si occupava di analizzare il codice sorgente e di generare un codice intermedio (O-code) per una macchina virtuale, la seconda (backend) traduceva l'O-code nel codice per la CPU bersaglio, su cui il programma doveva girare. In questo modo, quando era necessario scrivere un compilatore per una nuova CPU, era sufficiente riscrivere il backend. Questa tecnica divenne in seguito molto comune (ad esempio in Pascal o Java), ma il BCPL fu il primo linguaggio a specificare una macchina virtuale a questo scopo.

1966 - BCPL

Page 9: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Il linguaggio si caratterizza per avere un unico tipo di dati, il tipo word (un numero fisso di byte, di solito scelto per allinearsi con la parola della macchina). L'interpretazione del dato veniva fatta in base al tipo di operatori utilizzati.

Ad esempio, utilizzando il segno di addizione +, i dati venivano sommati come se si trattasse di numeri interi, mentre l'operatore ! (di dereferenziazione) trattava i dati come puntatori. Allo scopo di rendere la cosa possibile, l'implementazione del BCPL non prevedeva il type checking.

Nel 1979 esistevano implementazioni di BCPL per almeno 25 diverse architetture, oggi il BCPL è stato interamente soppiantato dal C.

Il BCPL è il linguaggio in cui si dice sia stato scritto il primo programma hello world.

Il linguaggio si caratterizza per avere un unico tipo di dati, il tipo word (un numero fisso di byte, di solito scelto per allinearsi con la parola della macchina). L'interpretazione del dato veniva fatta in base al tipo di operatori utilizzati.

Ad esempio, utilizzando il segno di addizione +, i dati venivano sommati come se si trattasse di numeri interi, mentre l'operatore ! (di dereferenziazione) trattava i dati come puntatori. Allo scopo di rendere la cosa possibile, l'implementazione del BCPL non prevedeva il type checking.

Nel 1979 esistevano implementazioni di BCPL per almeno 25 diverse architetture, oggi il BCPL è stato interamente soppiantato dal C.

Il BCPL è il linguaggio in cui si dice sia stato scritto il primo programma hello world.

1966 - BCPL

Page 10: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

La filosofia del BCPL può essere riassunta in queste righe,

liberamente tradotte dal libro "BCPL, the language and its

compiler":

“La filosofia del BCPL non è quella del tiranno che pensa di

sapere come vanno fatte le cose e detta ciò che è permesso e

ciò che non lo è: piuttosto il BCPL è un servo che offre i suoi

servigi al meglio delle sue possibilità, senza lamentarsi, anche

quando si trova di fronte ad un'apparente contraddizione. Si

assume che il programmatore sappia sempre quello che sta

facendo: egli non è costretto a sottostare a rigidi vincoli.”

La filosofia del BCPL può essere riassunta in queste righe,

liberamente tradotte dal libro "BCPL, the language and its

compiler":

“La filosofia del BCPL non è quella del tiranno che pensa di

sapere come vanno fatte le cose e detta ciò che è permesso e

ciò che non lo è: piuttosto il BCPL è un servo che offre i suoi

servigi al meglio delle sue possibilità, senza lamentarsi, anche

quando si trova di fronte ad un'apparente contraddizione. Si

assume che il programmatore sappia sempre quello che sta

facendo: egli non è costretto a sottostare a rigidi vincoli.”

Page 11: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

1970 - B

Kenneth Thompson, quando progettò il linguaggio B per una prima implementazione di UNIX, stava cercando di semplificare ulteriormente il CPL. Egli riuscì a creare un linguaggio molto scarno che si adattava bene a essere utilizzato sull'hardware di cui disponeva. Tuttavia, sia per il BCPL sia per il B si esagerò troppo nella ottimizzazione, ottenendo così linguaggi limitati, utili solo per trattare alcuni tipi di problemi.

Kenneth Thompson, quando progettò il linguaggio B per una prima implementazione di UNIX, stava cercando di semplificare ulteriormente il CPL. Egli riuscì a creare un linguaggio molto scarno che si adattava bene a essere utilizzato sull'hardware di cui disponeva. Tuttavia, sia per il BCPL sia per il B si esagerò troppo nella ottimizzazione, ottenendo così linguaggi limitati, utili solo per trattare alcuni tipi di problemi.

Kenneth ThompsonKenneth Thompson

Page 12: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

UNIX e il compilatore B furono subito trasferiti sulla nuova macchina. Anche se la PDP-11 era una macchina più grande della precedente PDP-7, rimaneva ancora abbastanza piccola rispetto agli standard attuali: aveva soltanto 24 K di memoria, dei quali 16 K erano utilizzati dal sistema, e 512 K di disco fisso.

UNIX e il compilatore B furono subito trasferiti sulla nuova macchina. Anche se la PDP-11 era una macchina più grande della precedente PDP-7, rimaneva ancora abbastanza piccola rispetto agli standard attuali: aveva soltanto 24 K di memoria, dei quali 16 K erano utilizzati dal sistema, e 512 K di disco fisso. Si pensò di riscrivere UNIX in B, ma il linguaggio B era lento per il suo progetto interpretativo. C'era anche un altro problema: il B era orientato alla parola, ma la PDP-11 era orientata al byte. Per questi motivi, nel 1971 si cominciò a lavorare a un successore del B, chiamato C.

Si pensò di riscrivere UNIX in B, ma il linguaggio B era lento per il suo progetto interpretativo. C'era anche un altro problema: il B era orientato alla parola, ma la PDP-11 era orientata al byte. Per questi motivi, nel 1971 si cominciò a lavorare a un successore del B, chiamato C.

Subito dopo che Ken Thompson ebbe implementato il linguaggio B, fu presentata una nuova macchina, chiamata PDP-11.

Subito dopo che Ken Thompson ebbe implementato il linguaggio B, fu presentata una nuova macchina, chiamata PDP-11.

Un PDP-7 come quello usato da Thompson per programmare il primo

UNIX

Un PDP-7 come quello usato da Thompson per programmare il primo

UNIX

Page 13: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

1972 - C

Fino alla fine degli anni '70, il C invase molti college e università per il suo stretto legame con Unix e la disponibilità di un compilatore. Presto molte organizzazioni indipendenti iniziarono ad usare una loro versione di C, creando notevoli problemi di compatibilità.

Fino alla fine degli anni '70, il C invase molti college e università per il suo stretto legame con Unix e la disponibilità di un compilatore. Presto molte organizzazioni indipendenti iniziarono ad usare una loro versione di C, creando notevoli problemi di compatibilità.

Dennis RitchieDennis Ritchie

Un collaboratore di Ken Thompson, Dennis Ritchie, restituì alcune generalità del BCPL al linguaggio B, con lo scopo di sviluppare una nuova versione, che venne ovviamente denominata "C".

La potenza e flessibilità del C apparve subito evidente e per questo il sistema operativo di Unix, scritto in assembly, venne riscritto immediatamente in C.

Un collaboratore di Ken Thompson, Dennis Ritchie, restituì alcune generalità del BCPL al linguaggio B, con lo scopo di sviluppare una nuova versione, che venne ovviamente denominata "C".

La potenza e flessibilità del C apparve subito evidente e per questo il sistema operativo di Unix, scritto in assembly, venne riscritto immediatamente in C.

Page 14: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Il C viene classificato come

linguaggio ad alto livello, la

scrittura delle istruzioni

cioè, era indipendente

dalla architettura del

calcolatore su cui le

istruzioni stesse saranno

eseguite.

Ken Thompson con Dennis Ritchie Ken Thompson con Dennis Ritchie

Page 15: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Il grande successo del C è dovuto a diversi fattori:

• La felice scelta del modo di astrazione dall'hardware, che pur essendo del tutto logico e generico rimane molto vicino all'hardware stesso. Infatti, il linguaggio C si basa su poche istruzioni chiave molto semplici, che spesso (come gli operatori di autoincremento, autodecremento e aritmetici con assegnazione) ricalcano l'assembly delle CPU e sono traducibili direttamente con una singola istruzione di linguaggio macchina;

• Il ruolo centrale dato al concetto di puntatore. Questo viene generalizzato fino a concidere con l'indirizzamento indiretto, un modo di accedere alla memoria hardware, caratteristico di tutte le moderne CPU. Ciò rende il C un linguaggio particolarmente efficiente.

Page 16: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Steve Johnson nella metà degli anni ‘70 scrisse un compilatore C trasportabile su sistemi diversi dal PDP-11 e da allora il C cominciò ad essere utilizzato come linguaggio in altri sistemi operativi come MS-DOS e CPM/80.

Steve Johnson nella metà degli anni ‘70 scrisse un compilatore C trasportabile su sistemi diversi dal PDP-11 e da allora il C cominciò ad essere utilizzato come linguaggio in altri sistemi operativi come MS-DOS e CPM/80.

Rispetto al linguaggio assembly il C ha in più di una struttura

logica definita e leggibile, funzioni in stile Pascal e

soprattutto il controllo sui tipi, che manca completamente in

assembly.

La grammatica e la sintassi del C sono molto libere e flessibili,

permettendo di scrivere istruzioni complesse e potenti in

poche righe di codice (ma anche istruzioni assolutamente

criptiche e illeggibili). In definitiva, il successo del C fu

decretato dall'essere un linguaggio creato da programmatori

esperti, per essere usato da programmatori esperti.

Rispetto al linguaggio assembly il C ha in più di una struttura

logica definita e leggibile, funzioni in stile Pascal e

soprattutto il controllo sui tipi, che manca completamente in

assembly.

La grammatica e la sintassi del C sono molto libere e flessibili,

permettendo di scrivere istruzioni complesse e potenti in

poche righe di codice (ma anche istruzioni assolutamente

criptiche e illeggibili). In definitiva, il successo del C fu

decretato dall'essere un linguaggio creato da programmatori

esperti, per essere usato da programmatori esperti.

Page 17: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

(1973 - 1980) Il primo compilatore che ebbe una certa

diffusione era presente nella versione 6 (V6) di Unix per

computer PDP-11 e solamente nel 1978 con il passaggio

alla V7, Unix ed il C furono portati su macchine diverse

dal PDP-11, e precisamente su Interdata 8/32 e VAX

11/780, quest’ultima con una nuova architettura a 32 bit.

(1973 - 1980) Il primo compilatore che ebbe una certa

diffusione era presente nella versione 6 (V6) di Unix per

computer PDP-11 e solamente nel 1978 con il passaggio

alla V7, Unix ed il C furono portati su macchine diverse

dal PDP-11, e precisamente su Interdata 8/32 e VAX

11/780, quest’ultima con una nuova architettura a 32 bit.

Page 18: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Negli anni '80 i compilatori erano basati principalmente sul

pcc di Johnson, ma nacquero molti compilatori indipendenti

che non erano conformi al pcc, ma che permisero la

diffusione del C praticamente su tutte le macchine più

popolari; per questo il comitato ANSI (American Standards

Institute) X3J11, nel 1983, iniziò a sviluppare uno standard

per il linguaggio C, aggiungendo importanti caratteristiche

ed ufficializzando molte caratteristiche presenti nei diversi

compilatori.

Negli anni '80 i compilatori erano basati principalmente sul

pcc di Johnson, ma nacquero molti compilatori indipendenti

che non erano conformi al pcc, ma che permisero la

diffusione del C praticamente su tutte le macchine più

popolari; per questo il comitato ANSI (American Standards

Institute) X3J11, nel 1983, iniziò a sviluppare uno standard

per il linguaggio C, aggiungendo importanti caratteristiche

ed ufficializzando molte caratteristiche presenti nei diversi

compilatori.

Page 19: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Nel medesimo periodo ci fu un'altra importante standardizzazione che mirava a definire l'interfaccia tra linguaggio e sistema operativo. Prendendo spunto proprio dall'ANSI89, fu creata la "Portable Operating System Interface" (POSIX) ad opera dell'IEEE (Institute of Electrical and Electronics Engeneers) che definisce, inoltre, i concetti di thread, socket, estensioni realtime e molto altro, in modo unico e indipendente dall'implementazione

Nel medesimo periodo ci fu un'altra importante standardizzazione che mirava a definire l'interfaccia tra linguaggio e sistema operativo. Prendendo spunto proprio dall'ANSI89, fu creata la "Portable Operating System Interface" (POSIX) ad opera dell'IEEE (Institute of Electrical and Electronics Engeneers) che definisce, inoltre, i concetti di thread, socket, estensioni realtime e molto altro, in modo unico e indipendente dall'implementazione

Page 20: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Questa grande libertà , la complessità sintattica del linguaggio (che come abbiamo visto contiene poche istruzioni di base) e il ruolo centrale dei puntatori, che è necessario usare praticamente fin dai primi programmi, ne fanno viceversa un linguaggio ostico e sconsigliabile ai neofiti, che cadono quasi subito in una serie di trappole che, se pure ovvie per un esperto, sono molto difficili da individuare ad un occhio inesperto.

Questa grande libertà , la complessità sintattica del linguaggio (che come abbiamo visto contiene poche istruzioni di base) e il ruolo centrale dei puntatori, che è necessario usare praticamente fin dai primi programmi, ne fanno viceversa un linguaggio ostico e sconsigliabile ai neofiti, che cadono quasi subito in una serie di trappole che, se pure ovvie per un esperto, sono molto difficili da individuare ad un occhio inesperto.

Page 21: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

La sua importanza tuttavia, crebbe solo dopo il 1978 con la pubblicazione da parte di Brian Kernighan e Dennis Ritchie del libro The C Programming Language nel quale il linguaggio venne definito in modo preciso.

La sua importanza tuttavia, crebbe solo dopo il 1978 con la pubblicazione da parte di Brian Kernighan e Dennis Ritchie del libro The C Programming Language nel quale il linguaggio venne definito in modo preciso.

Grazie alla particolare efficienza del codice prodotto dai

sui compilatori, il C venne utilizzato per riscrivere la

maggior parte del codice del sistema UNIX, riducendo

l'uso dell'assembly ad un piccolo gruppo di funzioni.

Grazie alla particolare efficienza del codice prodotto dai

sui compilatori, il C venne utilizzato per riscrivere la

maggior parte del codice del sistema UNIX, riducendo

l'uso dell'assembly ad un piccolo gruppo di funzioni.

Page 22: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

1980 - C++

Il C++ è un'estensione del C, sviluppato da Bjarne Stroustrup

all'inizio degli anni '80, presso i Bell Laboratories.

Il C++ fornisce una serie di funzioni che potenziano il C, ma,

cosa ancora più importante, fornisce le capacità di gestione

della programmazione di tipo object-oriented, con ampio

utilizzo delle classi.

Il C++ è un'estensione del C, sviluppato da Bjarne Stroustrup

all'inizio degli anni '80, presso i Bell Laboratories.

Il C++ fornisce una serie di funzioni che potenziano il C, ma,

cosa ancora più importante, fornisce le capacità di gestione

della programmazione di tipo object-oriented, con ampio

utilizzo delle classi.

Page 23: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Il linguaggio C++ venne utilizzato all'esterno del gruppo di

sviluppo di Stroustrup nel 1983 e, fino all'estate del 1987, il

linguaggio fu soggetto a una naturale evoluzione.

Uno degli scopi principali del C++ era quello di mantenere

piena compatibilità con il C.

L'idea era quella di conservare l'integrità di molte librerie C e

l'uso degli strumenti sviluppati per il C.

Il linguaggio C++ venne utilizzato all'esterno del gruppo di

sviluppo di Stroustrup nel 1983 e, fino all'estate del 1987, il

linguaggio fu soggetto a una naturale evoluzione.

Uno degli scopi principali del C++ era quello di mantenere

piena compatibilità con il C.

L'idea era quella di conservare l'integrità di molte librerie C e

l'uso degli strumenti sviluppati per il C.

Page 24: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Grazie all'alto livello di successo nel raggiungimento di questo obiettivo, molti programmatori trovano la transizione al linguaggio C++ molto più semplice rispetto alla transizione da altri linguaggi (ad esempio il FORTRAN) al C.

Il C++ consente lo sviluppo di software su larga scala. Grazie a un maggiore rigore sul controllo dei tipi, molti degli effetti collaterali tipici del C, divengono impossibili in C++.

Grazie all'alto livello di successo nel raggiungimento di questo obiettivo, molti programmatori trovano la transizione al linguaggio C++ molto più semplice rispetto alla transizione da altri linguaggi (ad esempio il FORTRAN) al C.

Il C++ consente lo sviluppo di software su larga scala. Grazie a un maggiore rigore sul controllo dei tipi, molti degli effetti collaterali tipici del C, divengono impossibili in C++.

Page 25: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Il miglioramento più significativo del linguaggio C++ è il

supporto della programmazione orientata agli oggetti (Object

Oriented Programming: OOP). Per sfruttare tutti i benefici

introdotti dal C++ occorre cambiare approccio nella soluzione

dei problemi. Ad esempio, occorre identificare gli oggetti e le

operazioni ad essi associate e costruire tutte le classi e le

sottoclassi necessarie.

Il miglioramento più significativo del linguaggio C++ è il

supporto della programmazione orientata agli oggetti (Object

Oriented Programming: OOP). Per sfruttare tutti i benefici

introdotti dal C++ occorre cambiare approccio nella soluzione

dei problemi. Ad esempio, occorre identificare gli oggetti e le

operazioni ad essi associate e costruire tutte le classi e le

sottoclassi necessarie.

Page 26: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Nonostante negli anni il C sia stato implementato sia con lo

standard ANSI, che in maniera proprietaria, grazie a questi

strumenti il C è diventato (ed è tutt'oggi) il linguaggio più

utilizzato al mondo, almeno fino all'avvento del C++

(chiamato originariamente "C con classi") che è stato anche

la spinta del miglioramento nel tempo del C attraverso lo

standard ANSI, di cui è stata rilasciata un'ultima versione

denominata ANSI99, che è supportata dalle ultime versioni

del gcc.

Nonostante negli anni il C sia stato implementato sia con lo

standard ANSI, che in maniera proprietaria, grazie a questi

strumenti il C è diventato (ed è tutt'oggi) il linguaggio più

utilizzato al mondo, almeno fino all'avvento del C++

(chiamato originariamente "C con classi") che è stato anche

la spinta del miglioramento nel tempo del C attraverso lo

standard ANSI, di cui è stata rilasciata un'ultima versione

denominata ANSI99, che è supportata dalle ultime versioni

del gcc.

Page 27: Storia del Linguaggio di programmazione C Cervone Vincenzo TEC/0054

Università degli Studi di Napoli Parthenope SICSI V CICLO classe A042

Il C ed il suo UNIX hanno influenzato tutto il mondo

dell'informatica, considerando che da esso sono scaturiti

colossi come SCO e Sun Microsytem, e prodotti come Linux

e BSD.

Il C ed il suo UNIX hanno influenzato tutto il mondo

dell'informatica, considerando che da esso sono scaturiti

colossi come SCO e Sun Microsytem, e prodotti come Linux

e BSD.