La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Storia e sviluppo dei Seminario a cura di Paolo Liberati Linguaggi di Programmazione.

Presentazioni simili


Presentazione sul tema: "Storia e sviluppo dei Seminario a cura di Paolo Liberati Linguaggi di Programmazione."— Transcript della presentazione:

1 Storia e sviluppo dei Seminario a cura di Paolo Liberati Linguaggi di Programmazione

2 Il linguaggio nasce dal programmatore Il primo programmatore della storia è una donna: Lady Augusta Ada Byron, contessa di Lovelace (1815 – 1852) Insigne matematica, collabora con Charles Babbage, che alluniversità di Cambridge ha progettato lAnalytical Engine. Nel 1843 scrive per lui il famoso articolo in cui suggerisce il linguaggio di programmazione per far calcolare a tale macchina i numeri di Bernoulli. In suo onore lUS-DoD, nel 1979, chiamerà ADA il linguaggio di programmazione ad alto livello che viene ancor oggi usato nella sua versione object-oriented, ADA 95.

3 Si apre lera dellinformatica… Anni 40: linguaggio macchina e Assembly Agli albori dellinformatica lunico linguaggio disponibile era il linguaggio macchina, consistente nella comunicazione diretta tra il programmatore ed il calcolatore in codice binario. Lestrema difficoltà a realizzare programmi anche minimamente complessi portò presto alla creazione del linguaggio Assembly, che semplicemente associa mnemonici letterali alle sequenze di bit.

4 Con laumentare del progresso tecnologico si ha la necessità di disporre di linguaggi adatti alla creazione di programmi per il calcolo matematico e scientifico. Nascono così, grazie a John Backus, il ForTran e lAlgoL, primi linguaggi ad alto livello, in quanto permettono unastrazione maggiore da parte del programmatore nella scrittura del codice. Si apre lera dellinformatica… Anni 40: linguaggio macchina e Assembly Anni 50: ForTran e AlgoL, calcolo scientifico

5 Si apre lera dellinformatica… Anni 40: linguaggio macchina e Assembly Anni 50: ForTran e AlgoL, calcolo scientifico 1960: CoBOL, programmi di gestione aziendale Nel tentativo di implementare un primitivo concetto di portabilità, il CoBOL viene ideato per applicazioni nei campi dell'amministrazione e del commercio, per l'organizzazione dei dati e la manipolazione dei file.

6 Si apre lera dellinformatica… Anni 40: linguaggio macchina e Assembly Anni 50: ForTran e AlgoL, calcolo scientifico 1960: CoBOL, programmi di gestione aziendale 1964: BASIC, general purpose per principianti La diffusione a macchia dolio dei primi microcomputer fece la fortuna di questo linguaggio distribuito in bundle. Destinato a facilitare la programmazione anche agli utenti meno esperti, il BASIC è un linguaggio semplice da imparare e da utilizzare. Pur essendo un linguaggio portabile e di alto livello, trova il suo limite nel fatto di essere non strutturato.

7 Si apre lera dellinformatica… Anni 40: linguaggio macchina e Assembly Anni 50: ForTran e AlgoL, calcolo scientifico 1960: CoBOL, programmi di gestione aziendale 1964: BASIC, general purpose per principianti 1967: SimULA, primo linguaggio object-oriented Originariamente progettato per la creazione di simulazioni discrete, non ha avuto una grande diffusione, ma la sua importanza risiede nellessere stato il precursore della programmazione orientata agli oggetti, introducendo il concetto di classe.

8 Si apre lera dellinformatica… Anni 40: linguaggio macchina e Assembly Anni 50: ForTran e AlgoL, calcolo scientifico 1960: CoBOL, programmi di gestione aziendale 1964: BASIC, general purpose per principianti 1970: Pascal, ideato a fini didattici 1967: SimULA, primo linguaggio object-oriented Il principio chiave di questo linguaggio di programmazione è l'ordine, raggiunto tramite un forte concetto di tipizzazione dei dati, il controllo delle dichiarazioni e la programmazione strutturata. Il Pascal viene sviluppato come strumento di insegnamento.

9 Si apre lera dellinformatica… Anni 40: linguaggio macchina e Assembly Anni 50: ForTran e AlgoL, calcolo scientifico 1960: CoBOL, programmi di gestione aziendale 1964: BASIC, general purpose per principianti 1970: Pascal, ideato a fini didattici 1972: linguaggio C Il C segna unimportante svolta nella storia della programmazione: definito a ragione il linguaggio di più basso livello tra quelli ad alto livello, unisce potenza, portabilità e facilità di utilizzo ad una notevole flessibilità e possibilità di controllo. La sue caratteristiche strutturali, tali da consentire unimplementazione algoritmica chiara, elegante ed efficiente, ne fanno un linguaggio per programmatori professionisti. 1967: SimULA, primo linguaggio object-oriented

10 …gli anni dellobject-oriented programming… Con il modello di programmazione orientato agli oggetti, si ha la possibilità di creare classi di oggetti contenenti sia una struttura dati caratterizzante che i metodi per poter operare su di essa. I tre meccanismi fondamentali comuni a tutti i linguaggi OOP sono: Incapsulazione Polimorfismo Ereditarietà È la proprietà che consente la creazione delle entità oggetto, che attraverso di essa sono protette da accessi esterni da parte di altre porzioni del programma. È lattributo che consente ad uninterfaccia del programma di essere utilizzata per una classe generale di azioni, che corrispondono ai metodi degli oggetti di appartenenza. È il processo grazie al quale un oggetto acquisisce le proprietà di un altro oggetto di classificazione più generica.

11 …gli anni dellobject-oriented programming… 1979: Ada, per grandi progetti in ambienti critici Pur non nascendo orientato agli oggetti, l'Ada è un linguaggio ad alto livello di tipo strutturato fortemente tipizzato che consente di creare programmi modulari, facilmente manutenibili; permette, inoltre, di manipolare dati astratti e definire unità di programmazione generalizzate, ossia indipendenti dai tipi di dato in input, e di gestire processi concorrenti. L'organizzazione del linguaggio è completata da procedure e funzioni, blocchi e "package" (questi ultimi permettono di raggruppare subroutine e dati in un'unica struttura).

12 …gli anni dellobject-oriented programming… 1979: Ada, per grandi progetti in ambienti critici 1983: C++, estensione object-oriented del C Lessenza del C++ è stata concepita con lo scopo di permettere ai programmatori di comprendere e gestire programmi più estesi e complessi. Le sue funzionalità orientate agli oggetti consentono di strutturare i programmi con maggiore chiarezza, estendibilità e facilità di manutenzione senza alcuna perdita di efficienza, e realizzare sistemi software di altissime prestazioni. Il C++ rappresenta senza dubbio uno strumento utile e sempre più utilizzato nel mondo del software industriale. È un linguaggio solido, maturo e adatto alla realizzazione di qualsiasi tipo di applicazione: da quelle real time a quelle che operano su basi di dati, da applicazioni per utenti finali a sistemi operativi. Statisticamente, mentre si svolge questo seminario, 5 persone diventano nuovi programmatori C++.

13 …gli anni dellobject-oriented programming… 1979: Ada, per grandi progetti in ambienti critici 1983: C++, estensione object-oriented del C 1991: VisualBasic, parziale OOP in ambiente grafico Sebbene questo linguaggio, evoluzione del BASIC, sia stato criticato nelle sue prime versioni perché un po limitato nelle funzionalità rispetto ai suoi contemporanei, col tempo è risultato essere un prodotto molto versatile, e viene oggi largamente utilizzato. I suoi innovativi punti di forza sono sostanzialmente due: innanzitutto la progettazione ora può avvenire in un più comodo ambiente visuale, tecnologia che ha influenzato le successive release per gli ambienti di tutti i linguaggi più diffusi; in secondo luogo viene introdotto il concetto di programmazione ad eventi (event driven), ovvero lelemento base è lazione dellutente sul sistema, considerata in base ad uno schema temporale. Queste caratteristiche rendono il linguaggio facile da usare ma, nello stesso tempo, potente e flessibile.

14 …gli anni dellobject-oriented programming… 1979: Ada, per grandi progetti in ambienti critici 1983: C++, estensione object-oriented del C 1991: VisualBasic, parziale OOP in ambiente grafico 1995: Java, molto portabile, orientato al web Lentusiasmante peculiarità di Java risale alla sua indipendenza dalla piattaforma di utilizzo, il che ne fa un linguaggio essenzialmente nato per la grande rete Internet, che poi si è esteso a tutti i livelli di applicazione. La sua grande portabilità deriva dal sistema di compilazione, che non produce codice macchina, come negli altri linguaggi di programmazione, bensì codice chiamato Bytecode, che poi verrà interpretato dalla Java Virtual Machine propria del sistema operativo di destinazione.

15 …gli anni dellobject-oriented programming… 1979: Ada, per grandi progetti in ambienti critici 1983: C++, estensione object-oriented del C 1991: VisualBasic, parziale OOP in ambiente grafico 1995: Java, molto portabile, orientato al web 1996: Delphi, evoluzione visuale del Pascal con OOP Con il Delphi è stato introdotto il concetto di sviluppo visuale e orientato alla gestione degli eventi come nel Visual Basic, senza perdere però i vantaggi della compilazione Pascal. Nonostante esistessero già precedenti versioni del Pascal orientate agli oggetti, il Delphi segna un punto di svolta per questo linguaggio, restituendone una versione completamente rivista ed ottimizzata per lo sviluppo di applicativi in ambiente 32-bit.

16 …gli anni dellobject-oriented programming… 1979: Ada, per grandi progetti in ambienti critici 1983: C++, estensione object-oriented del C 1991: VisualBasic, parziale OOP in ambiente grafico 1995: Java, molto portabile, orientato al web 1996: Delphi, evoluzione visuale del Pascal con OOP La programmazione orientata agli oggetti vede il suo vero sviluppo dagli anni 80, riprendendo concetti di base già implementati anni prima in linguaggi ad uso dedicato. Le ragioni del successo dellOOP vanno ricercate nellefficienza derivante dalla definizione di classi di oggetti virtuali che ottimizzano il codice, rendendone riutilizzabili le componenti grazie ai concetti chiave di incapsulamento, ereditarietà e polimorfismo.

17 …oggi, component-oriented programming… La programmazione orientata ai componenti, che si è molto sviluppata in questi ultimi anni, rappresenta l'evoluzione naturale del modello object-oriented. Il concetto di componente unisce un piccolo gruppo di oggetti, che comunicano liberamente tra loro, ma che per comunicare con lesterno devono servirsi dellinterfaccia del componente, risultando così protetti e organizzati in una struttura interna invisibile dal di fuori. La comunicazione tra componenti può essere definita in termini di componente client e componente server. Linterfaccia di un componente deve essere separata dalla sua implementazione, in modo che il client dipenda solo dallinterfaccia del server; questa si compone di tante interfacce oggetto, ognuna delle quali racchiude il set di messaggi inviabili ad un certo oggetto. La relazione tra oggetti e interfacce è comunque di tipo molti-a-molti. Ogni tipo usato nella definizione dei messaggi deve essere definito nellinterfaccia di un componente. In un linguaggio COP deve essere possibile specificare un componente senza doverlo implementare, e successivamente richiederlo al sistema attraverso le specifiche date. Ogni implementazione di un componente può usare altri componenti. In media un buon componente usa dai 3 ai 6 altri componenti. Il numero di classi allinterno va dalle 5 alle 10.

18 …oggi, component-oriented programming… 2000: C#, successore orientato ai componenti del C++ Il C# è il primo linguaggio component-oriented basato su C/C++; esso consente di applicare a qualsiasi oggetto metadati con definizione del tipo ed estensibili, in linea con quanto previsto dal modello COP. L'architetto di un progetto può definire attributi specifici di un dominio, quindi applicarli a qualunque classe di elementi del linguaggio, interfacce e così via. Il linguaggio migliora la produttività dello sviluppatore, c he può esaminare mediante programmazione gli attributi di ogni elemento, eliminando quegli errori di programmazione che incidono sull'aumento dei costi di sviluppo.

19 …oggi, component-oriented programming… 2000: C#, successore orientato ai componenti del C : ComponentJ, linguaggio COP basato sul Java ComponentJ è un linguaggio di programmazione basato su Java che modella la rappresentazione e la manipolazione dei componenti in un contesto orientato agli oggetti e imperativo. I componenti sono le unità di programmazione che vengono definite usando moduli base nelle operazioni di composizione (costrutti espliciti del linguaggio che combinano gli elementi esistenti in uno più grande). I componenti risultanti possono essere instanziati chiamando gli oggetti e usati in un linguaggio imperativo.

20 …oggi, component-oriented programming… 2000: C#, successore orientato ai componenti del C : ComponentJ, linguaggio COP basato sul Java 2002: ACOEL, COP sperimentale basato sul Java Linguaggio ancora in fase di standardizzazione, ACOEL è un altro esempio di component-oriented programming basato sul potente linguaggio Java. ACOEL si modella su due punti fondamentali: usa ibridi per configurare i servizi forniti da un componente senza mostrare la sua implementazione interna, e aggiunge un supporto per i tipi virtuali e le relazioni dei sottotipi tra i componenti.

21 …oggi, component-oriented programming… 2000: C#, successore orientato ai componenti del C : ComponentJ, linguaggio COP basato sul Java 2002: ACOEL, COP sperimentale basato sul Java Perché la programmazione orientata ai componenti? La programmazione COP nasce per superare i problemi che lOOP presenta nella realizzazione di progetti molto estesi. Questi problemi sono simili a quelli che resero necessario il passaggio dalla semplice programmazione strutturata allobject-oriented, ma per progetti enormemente più grandi. La confusione generata dallinterazione di un grande numero oggetti viene superata modellando un ulteriore raggruppamento: è nato il concetto di componente.

22 …laspect-oriented programming è in arrivo! La programmazione orientata agli aspetti rappresenta un ulteriore sviluppo dellOOP e si basa sul concetto chiave della separazione dei compiti. Gli aspetti saranno le porzioni di codice trasversale, scritto in modo chiaro e concentrato in un unico punto, che le varie classi coinvolte dovranno includere e/o eseguire per l'espletamento di un determinato compito. Esempio OBJECTORIENTEDOBJECTORIENTED ASPECTORIENTED ASPECTORIENTED

23 …laspect-oriented programming è in arrivo! 2002: AspectJ, estensione integrata AOP del Java AspectJ è un linguaggio aspect-oriented in continuità con il Java, compatibile con la Virtual Machine che caratterizza questo linguaggio. È stato progettato per essere semplice da imparare e da usare ed è dotato di licenza open source. Supporta una modularizzazione chiara dei compiti trasversalmente incrociati, concernente in: controllo e manipolazione degli errori, sincronizzazione, risposte che tengono conto del contesto, ottimizzazione delle prestazioni, monitorizzazione e logging, supporto per il debug, protocolli multioggetto.

24 …laspect-oriented programming è in arrivo! 2002: AspectJ, estensione integrata AOP del Java 2002: ArchJava, basato sul Java, sperimentale ArchJava ha unimplementazione strettamente collegata allarchitettura software, per garantire che la comunicazione a controllo di flusso sia conforme alle specifiche strutturali. A differenza dei tradizionali linguaggi OOP, è dotato di apposite strutture per la modellizzazione dei nuovi concetti di programmazione, supportando una effettiva razionalizzazione dei modelli che tiene conto del ciclo di vita del codice. ArchJava può essere considerato un linguaggio di programmazione orientato agli aspetti con un supporto per la separazione dei compiti strutturali da quelli procedurali.

25 …laspect-oriented programming è in arrivo! 2002: AspectJ, estensione integrata AOP del Java 2002: ArchJava, basato sul Java, sperimentale 2003: AspectC++, sarà unestensione AOP del C++ Con il progetto AspectC++, ancora in corso di sperimentazione, si avrà finalmente la possibilità di estendere i nuovi funzionali concetti dellaspect- oriented programming al mondo C/C++. Il linguaggio sta nascendo come estensione del C++ e, sebbene siano stati già rilasciati i primi prototipi, una versione ufficiale è prevista in uscita solo per i primi mesi dellanno venturo.

26 UNIVERSITÀ DEGLI STUDI DI CAMERINO Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Dipartimento di Matematica e Informatica FINE


Scaricare ppt "Storia e sviluppo dei Seminario a cura di Paolo Liberati Linguaggi di Programmazione."

Presentazioni simili


Annunci Google