T1 introduzione

413 views

Published on

Published in: Business, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
413
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

T1 introduzione

  1. 1. Parte 1 Cenni storici Linguaggi dinamici – A.A. 2009/2010 1
  2. 2. Un po’ di storia (1970-1980) „ L'invenzione dei linguaggi riflette il periodo storico e le necessità dei programmatori „ Sistemi di grandi dimensioni: „ sistemi di calcolo di grandi dimensioni i t i l l di di i i „ interfacce testuali „ Amministrazione di mainframe (scripting) „ Tali necessità hanno portato a: p „ C (veloce, poco portabile, adatto al calcolo) „ Assembly (molto veloce, non portabile, adatto veloce portabile all'interfacciamento con l'hardware) „ Shell (lento portabile, adatto per manutenzione) (lento, portabile Linguaggi dinamici – A.A. 2009/2010 2
  3. 3. Un po’ di storia (1980-1990) „ L'informatica prende piede su media e piccola scala „ Singoli PC (Workstation) „ Reti l R ti locali li „ Sempre più persone hanno il compito di “amministrare” un calcolatore „ Nasce il primo linguaggio di scripting “serio”: Perl (Larry Wall, 1987) „ Portabile „ Orientato alla manipolazione dei file di testo (utile per gestire le configurazioni) Linguaggi dinamici – A.A. 2009/2010 3
  4. 4. Un po’ di storia (1990-2000) „ Invenzione (1991) e successivo boom (1995) del World Wide Web „ Nascono linguaggi nuovi per poter programmare applicazioni Web based con Web-based maggiore semplicità rispetto al C „ PHP (PHP H (PHP: Hypertext P t t Preprocessor), 1994 ) „ I linguaggi esistenti si adattano per non perdere terreno „ Perl „ C Linguaggi dinamici – A.A. 2009/2010 4
  5. 5. Un po’ di storia (1990-2000) „ I programmatori cominciano a comprendere a fondo due grandi verità „ L'hardware delle macchine diventa più potente con un ritmo simile alla legge di Moore „ Scrivere codice a basso livello diventa sempre più difficile, per via dell aumentata complessità difficile dell'aumentata delle architetture „ Comincia a diffondersi il concetto di “linguaggio ad alto livello general purpose” „ Python (G id Van R P th (Guido V Rossum, 1991) „ Ruby (Yukihiro Matsumoto, 1993) „ Java (James Gosling, 1995) Linguaggi dinamici – A.A. 2009/2010 5
  6. 6. Un po’ di storia (2000-) „ L'uso dei linguaggi di alto livello si estende a progetti su larga scala „ I programmatori si rendono conto che il ciclo di sviluppo del software è più semplice e breve „ I linguaggi di alto livello sono corredati di una miriade di librerie per le funzioni più disparate ii d lib i l f i i iù di t „ Nasce il framework: linguaggio ad alto livello unito ad una serie di librerie general-purpose „ C#/.NET (Anders Hejlsberg, 2000) ( j g, ) „ Mono (Miguel De Icaza, Novell, 2001) Linguaggi dinamici – A.A. 2009/2010 6
  7. 7. Un rapido sguardo ai giorni nostri Linguaggi dinamici – A.A. 2009/2010 7
  8. 8. Un rapido sguardo ai giorni nostri Linguaggi dinamici – A.A. 2009/2010 8
  9. 9. I segreti del successo „ I cardini del successo dei linguaggi di scripting, scripting dei linguaggi di alto livello, dei livello framework sono sempre gli stessi „ Assenza di dettagli ostici (puntatori gestione (puntatori, della memoria): il programmatore si concentra esclusivamente sul problema da risolvere „ Presenza massiccia di librerie: il programmatore scrive solo il codice che serve „ Portabilità: il programmatore scrive il codice solo una volta Linguaggi dinamici – A.A. 2009/2010 9
  10. 10. Assenza di dettagli ostici „ Nei linguaggi come il C, al programmatore è lasciato ogni dettaglio: „ Gestione della memoria „ Gestione dei puntatori G ti d i t t i „ Rilascio delle risorse „ Tali task non sono funzionali al problema che si intende risolvere, e rallentano il ciclo di sviluppo del software „ Nei linguaggi di scripting moderni, tali aspetti g gg p g , p sono gestiti automaticamente Linguaggi dinamici – A.A. 2009/2010 10
  11. 11. Presenza massiccia di librerie „ Nei linguaggi come il C, la vera libreria di riferimento è la libreria del C „ Piuttosto complessa da usare „ Fornisce solo servizi “di base” F i l i i b ” „ Parecchi dei compiti richiesti da un applicativo moderno non sono presi in considerazione „ Servizi di calcolo scientifico, interfacce grafiche complesse, supporto per il Web „ Nei linguaggi di scripting moderni, tali g gg p g funzionalità sono fornite da apposite librerie Linguaggi dinamici – A.A. 2009/2010 11
  12. 12. Portabilità „ Nei linguaggi come il C, la portabilità si ottiene tramite strumenti a dir poco complessi (autotools, codice condizionato) „ Richiede parecchio lavoro allo sviluppatore (scrittura delle macro AC_XYZ) „ Utilizzo non immediato per l utente inesperto l'utente (./configure –prefix=/usr/local ...) „ Nei linguaggi di scripting moderni il codice moderni, scritto è perfettamente portabile „ funziona in diversi ambienti operativi senza f i i di i bi ti ti i alcuna modifica Linguaggi dinamici – A.A. 2009/2010 12
  13. 13. Parte 1 I linguaggi dinamici g gg Linguaggi dinamici – A.A. 2009/2010 13
  14. 14. Linguaggi statici e dinamici „ Linguaggio statico: è un linguaggio ad alto livello in cui le operazioni effettuate a livello di esecuzione (run time) sono legate (quasi) esc us a e te all'esecuzione di codice esclusivamente a esecu o e d cod ce (se s si esclude la gestione dello stack) „ C, assembly „ Linguaggio dinamico: è un linguaggio ad alto livello in cui le operazioni effettuate a livello di esecuzione (run time) non sono legate esclusivamente all'esecuzione di codice all esecuzione „ Java, Perl, Python, Ruby Linguaggi dinamici – A.A. 2009/2010 14
  15. 15. Linguaggio statico „ Ha una fase di compilazione, in cui il codice sorgente viene tradotto in un formato a basso livello esclusivo per l'architettura considerata „ La traduzione da codice sorgente a codice macchina è 1:1 (rappresentazione fedele) „ Fornisce tipi di dati semplici, identificati a F i ti i d ti li i id tifi ti livello di compilazione e difficilmente mutabili attempo di esecuzione i „ Permette l'esecuzione ad una velocità elevata „ Non fornisce strumenti di controllo, né semplificazioni; è tutto lasciato al p programmatore Linguaggi dinamici – A.A. 2009/2010 15
  16. 16. Linguaggio dinamico „ Ha una fase di compilazione, in cui il codice sorgente viene tradotto in un formato a basso livello indipendente dall'architettura co s de ata considerata (bytecode) „ Il bytecode viene interpretato in maniera efficiente da un interprete tenendo conto interprete, dell'architettura considerata „ L'esecuzione non è così veloce come in un linguaggio statico „ L'interprete si serve di alcune funzioni interne 'i i l f i ii per allocare, deallocare, referenziare memoria in i maniera automatica i t ti Linguaggi dinamici – A.A. 2009/2010 16
  17. 17. L'ambiguità dei linguaggi dinamici „ Un'altra caratteristica saliente dei linguaggi dinamici è quella di sapersi “modificare” modificare durante l'esecuzione (Metaprogramming) „ Eseguire funzioni diverse a seconda delle condizioni operative „ Cambiare il codice di una funzione „ Creare strutture dati di forma “variabile” nel tempo Linguaggi dinamici – A.A. 2009/2010 17
  18. 18. Linguaggi dinamici: pro e contro „ Pro: „ La scrittura di codice è estremamente semplificata rispetto ai linguaggi statici „ La L scrittura di un software diventa la scrittura itt ft di t l itt del suo scheletro, grazie alla presenza delle librerie „ Funziona su ogni piattaforma (o quasi...) „ Contro: C „ Estremamente più lento (~10 volte) del codice macchina nativo „ Incoraggia la programmazione “sloppy” Linguaggi dinamici – A.A. 2009/2010 18
  19. 19. Google Go ƒ Google ha recentemente (nov 2009) introdotto il linguaggio Go ƒ Linguaggio dinamico Æ semplicità g gg p ƒ Ma con una attenzione alla velocità di esecuzione ƒ Non ad oggetti (!) ƒ htt // http://www.golang.org l Linguaggi dinamici – A.A. 2009/2010 19

×