Linguaggi di Programmazione

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

C C++ &.
I Linguaggi di programmazione
Traduzione ed Interpretazione
Software di base: Linguaggi di Programmazione
Analisi e progettazione
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A1 Introduzione a Java.
Recupero debito quarto anno Primo incontro
Informatica Recupero debito quarto anno Terzo incontro.
Evoluzione dei linguaggi di programmazione
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
I linguaggi di programmazione
Linguaggi di programmazione
Generalità Linguaggio e Macchina Astratta
Dr. Francesco Fabozzi Corso di Informatica
Anno Accademico Corso di Informatica Informatica per Scienze Biologiche e Biotecnologie Anno Accademico
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
JavaScript Laboratorio di Applicazioni Informatiche II mod. A.
E-learning e tecnologia dei learning object:
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.
INTRODUZIONE AD OMNET++
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
Primi Elementi di Programmazione in C++
Progettazione di una base di dati
Presentazione a cura diSlide n.1 AVIPA 1. Presentazione generale dell'ambiente software Viterbo, 10 Dicembre 2008.
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
A.Natali DL Maggio1999 Oggetti Concetti fondamentali.
...dal bit al linguaggio R. In principio era il bit… …Per intenderci 0 e 1, il linguaggio macchina. Tra gli anni '40 e gli anni '50, la programmazione.
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
1 Programmazione = decomposizione basata su astrazioni (con riferimento a Java)
Introduzione a C#.
L’ingegneria del software
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
Introduzione alla programmazione Object Oriented
Profilo di un grande matematico
Problem Posing and Solving nel Sistema Educativo
CONCETTI DI BASE 1.0 FONDAMENTI 1.1 HARDWARE 1.2 SOFTWARE 1.3 RETI
Ingegneria del software Modulo 2 -Il software come prodotto Unità didattica 2 -I costi del software Ernesto Damiani Università degli Studi di Milano Lezione.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
Programma di Informatica Classi Prime
Linguaggi di programmazione dalla prima generazione alla quinta ed attuale.
Intelligenze artificiali (I.A.)
Lezione 1 Panoramica sui paradigmi di programmazione
la traduzione dei programmi
Programmazione ad oggetti
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali (corso TIE) CORSO LAUREA MAGISTRALE IN SCIENZE E TECNOLOGIE DELLE PRODUZIONI ANIMALI.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
CMS per la scuola con JOOMLA
LINGUAGGI DI PROGRAMMAZIONE Per comunicare comandi e dati ad un computer occorre un particolare linguaggio detto LINGUAGGIO MACCHINA, che è un insieme.
29 giugno – 7 luglio 2007Ignazio TestoniOrdine degli Ingegneri Provincia di Catania I linguaggi di programmazione  In principio era il bit anni '40 
SISTEMI DIDATTICI PER L’ E- LEARNING
Concetti Fondamentali sulla Programmazione
1 Macchine astratte, linguaggi, interpretazione, compilazione.
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
L’Open Source per i flussi documentali Roma - Piazza Cardelli, 3 giugno 2004 Provincia di Prato 1.
Le basi di dati.
I linguaggi di programmazione -GALBIATI ALBERTO -ESPOSITO MATTIA.
LINGUAGGI DI PROGRAMMAZIONE E' un linguaggio formale dotato di una sintassi ben definita che viene utilizzato per scrivere programmi che realizzano algoritmi.
UML Unified Modelling Language Linguaggio per la modellazione unificato.
Sistemi distribuiti Sistema distribuito indica una tipologia di sistema informatico costituito da un insieme di processi interconnessi tra loro in cui.
Se vuoi imparare davvero qualcosa, insegnala!. Umilmente IMPARARE IL PENSIERO COMPUTAZIONALE IMPARARE A PROGRAMMARE IL PENSIERO COMPUTAZIONALE PER OGNI.
Migrazione a Win2003 Server a cura del Prof. Arturo Folilela.
Programmazione orientata agli Oggetti Introduzione a Java.
Dal problema al programma – ciclo di sviluppo del software La scrittura del programma è solo una delle fasi del processo di sviluppo di un'applicazione.
1 Informatica di Base Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Transcript della presentazione:

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

Lady Augusta Ada Byron, contessa di Lovelace (1815 – 1852) 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 all’università di Cambridge ha progettato l’”Analytical 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 l’US-DoD, nel 1979, chiamerà ADA il linguaggio di programmazione ad alto livello che viene ancor oggi usato nella sua versione object-oriented, “ADA 95”.

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

Si apre l’era dell’informatica… Anni ’40: linguaggio macchina e Assembly Anni ’50: ForTran e AlgoL, calcolo scientifico Con l’aumentare 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 l’AlgoL, primi linguaggi ad “alto livello”, in quanto permettono un’astrazione maggiore da parte del programmatore nella scrittura del codice.

Si apre l’era dell’informatica… 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.

Si apre l’era dell’informatica… 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 d’olio 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.

Si apre l’era dell’informatica… 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 nell’essere stato il precursore della programmazione orientata agli oggetti, introducendo il concetto di “classe”.

Si apre l’era dell’informatica… 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 1970: Pascal, ideato a fini didattici 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.

Si apre l’era dell’informatica… 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 1970: Pascal, ideato a fini didattici 1972: linguaggio C Il C segna un’importante 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 un’implementazione algoritmica chiara, elegante ed efficiente, ne fanno un linguaggio per programmatori professionisti.

…gli anni dell’object-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: È 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. Incapsulazione È l’attributo che consente ad un’interfaccia del programma di essere utilizzata per una classe generale di azioni, che corrispondono ai metodi degli oggetti di appartenenza. Polimorfismo È il processo grazie al quale un oggetto acquisisce le proprietà di un altro oggetto di classificazione più generica. Ereditarietà

…gli anni dell’object-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).

…gli anni dell’object-oriented programming… 1979: Ada, per grandi progetti in ambienti critici 1983: C++, estensione object-oriented del C L’essenza 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++.

…gli anni dell’object-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 l’elemento base è l’azione dell’utente sul sistema, considerata in base ad uno schema temporale. Queste caratteristiche rendono il linguaggio facile da usare ma, nello stesso tempo, potente e flessibile.

…gli anni dell’object-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 L’entusiasmante 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.

…gli anni dell’object-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.

…gli anni dell’object-oriented programming… 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 dell’OOP vanno ricercate nell’efficienza 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. …gli anni dell’object-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

…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 l’esterno devono servirsi dell’interfaccia 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. L’interfaccia di un componente deve essere separata dalla sua implementazione, in modo che il client dipenda solo dall’interfaccia 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 nell’interfaccia 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 all’interno va dalle 5 alle 10.

…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, che può esaminare mediante programmazione gli attributi di ogni elemento, eliminando quegli errori di programmazione che incidono sull'aumento dei costi di sviluppo.

…oggi, component-oriented programming… 2000: C#, successore orientato ai componenti del C++ 2001: 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.

…oggi, component-oriented programming… 2000: C#, successore orientato ai componenti del C++ 2001: 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.

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

…l’aspect-oriented programming è in arrivo! La programmazione orientata agli aspetti rappresenta un ulteriore sviluppo dell’OOP 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 ASPECT ORIENTED OBJECT ORIENTED

…l’aspect-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.

…l’aspect-oriented programming è in arrivo! 2002: AspectJ, estensione integrata AOP del Java 2002: ArchJava, basato sul Java, sperimentale ArchJava ha un’implementazione strettamente collegata all’architettura 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.

…l’aspect-oriented programming è in arrivo! 2002: AspectJ, estensione integrata AOP del Java 2002: ArchJava, basato sul Java, sperimentale 2003: AspectC++, sarà un’estensione AOP del C++ Con il progetto AspectC++, ancora in corso di sperimentazione, si avrà finalmente la possibilità di estendere i nuovi funzionali concetti dell’aspect-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 dell’anno venturo.

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