Storia della Programmazione

1,285 views
1,139 views

Published on

A little presentation about the Programming History

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,285
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • Storia della Programmazione

    1. 1. Corso di Programmazione 1.- Storia della Programmazione lugcr.it
    2. 2. Storia della Programmazione <ul><li>Perchè Storia </li></ul><ul><ul><li>non mi piaceva già a scuola... </li></ul></ul><ul><li>Come siamo arrivati qui? </li></ul><ul><li>Rendere omaggio a chi ci ha preceduto </li></ul><ul><li>Le macchine le fanno gli uomini </li></ul><ul><li>Evoluzione, non Rivoluzione </li></ul>
    3. 3. Storia della Terra <ul><li>Mettere le cose in prospettiva </li></ul>Milioni d'anni fa 4567- 542- 65- 251- 65- 145- 251- 199- dinosauri mammiferi 23- Grandi erbivori 23- 5,3- 1,8- 0,01- Australopithecus Glaciazioni uomo
    4. 4. Storia dell'Umanità <ul><li>Un briciolo nella storia della Terra </li></ul>10.000- 1000- 1500- 5.000- 2500- 800- 300- ✞ 0- Attila Maometto Carlo Magno Al-Khwārizmī S. Agostino S. Francesco Gengis Khan C. Colombo L. da Vinci B. Pascal ✞ aD - 1.00 0- 1.50 0- 1.80 0- Galileo Galilei Costantino J. Jacquard 1.80 0- 1.90 0- C. Babbage Ada Lovelace G. Boole H. Hollerith Alan Turing J, Von Newmann D.Ritchie Grace Hopper . . . G. Liebniz
    5. 5. Muhammad ibn Mūsā al-Khwārizmī <ul><li>Persia (iraq) 783-850 </li></ul><ul><li>“Kitāb al-djabr wa 'l-muqābala” (Libro sulla ricomposizione e sulla riduzione) </li></ul><ul><ul><li>Algebra </li></ul></ul><ul><li>“Algoritmi de numero Indorum” </li></ul><ul><ul><li>Traduzione latina di uno dei suoi libri. </li></ul></ul><ul><ul><li>Introduce in occidente lo Zero e la Numerazione posizionale </li></ul></ul>c=a+b a=105 b= 17 105 + 17 12 2 1 c= 122
    6. 6. Analisi e Algoritmi <ul><li>Analisi: dividere un problema in parti più piccole </li></ul><ul><ul><li>Definizione del problema (patterns) </li></ul></ul><ul><ul><li>Ipotesi di soluzione (flow-chart) </li></ul></ul><ul><ul><li>Implementazione (linguaggio) </li></ul></ul><ul><ul><li>Test e ricomincia (utenti) </li></ul></ul><ul><li>Diversi livelli di dettaglio </li></ul><ul><ul><li>Analisi top-bottom, Implementazione bottom-top </li></ul></ul><ul><li>Algoritmi: Sequenza di passi per arrivare alla soluzione </li></ul><ul><ul><li>Ordinamento </li></ul></ul>
    7. 7. Blaise Pascal <ul><li>Francia 1623-1662 </li></ul><ul><li>Matematica delle coniche </li></ul><ul><li>Filosofo e religioso </li></ul><ul><li>Macchina aritmetica (pascalina) </li></ul>
    8. 8. Gottfried Liebniz <ul><li>Germania 1646-1716 </li></ul><ul><li>Filosofo, Matematico, Teologo </li></ul><ul><li>Rivale di Newton </li></ul><ul><li>Perfezionò la Pascalina per farla moltiplicare e dividere </li></ul><ul><li>Calcolo infinitesimale (integrali e derivate) </li></ul><ul><li>Numerazione binaria </li></ul>
    9. 9. Numerazione Binaria Nella numerazione posizionale, ogni colonna è una potenza successiva di un numero chiamato base Es.: 7451 0001 1101 0001 1011 0x 1D1B Binaria (base 2) Decimale (base 10) Esadecimale (base 16) 7451 7 x 1000 (10 3 ) = 7000 4 x 100 (10 2 ) = 400 5 x 10 (10 1 ) = 50 1 x 1 (10 0 ) = 1 7451 1110100011011 1 x 4096 (2 12 ) = 4096 1 x 2048 (2 11 ) = 2048 1 x 1024 (2 10 ) = 1024 0 x 512 (2 9 ) = 0 1 x 256 (2 8 ) = 256 0 x 128 (2 7 ) = 0 0 x 64 (2 6 ) = 0 0 x 32 (2 5 ) = 0 1 x 16 (2 4 ) = 16 1 x 8 (2 3 ) = 8 0 x 4 (2 2 ) = 0 1 x 2 (2 1 ) = 2 1 x 1 (2 0 ) = 1 7451
    10. 10. Joseph Jacquard <ul><li>Francia 1752-1834 </li></ul><ul><li>Telaio automatico a schede perforate </li></ul><ul><li>Prima macchina programmabile </li></ul><ul><li>Distrutta dai tessitori nel Expo 1801 </li></ul>
    11. 11. Charles Babbage <ul><li>Inghilterra 1791-1871 </li></ul><ul><li>Macchina Analitica a Vapore </li></ul><ul><li>Complessità estrema (25.000 pezzi) </li></ul><ul><li>Primo calcolatore programmabile </li></ul><ul><li>Costruito funzionante in 1991 </li></ul><ul><li>Calcolo tabelle logaritmi e astronomiche </li></ul><ul><li>Usava le schede perforate di Jacquard </li></ul><ul><li>Stampante </li></ul>
    12. 12. Ada Byron Lovelace <ul><li>Inghilterra 1815-1852 </li></ul><ul><li>Collaboratrice di Babbage </li></ul><ul><li>Preparava i programmi per la Macchina Analitica </li></ul><ul><li>Primo programmatore </li></ul><ul><li>Figlia del poeta Lord Byron </li></ul><ul><li>Linguaggio ADA in suo onore </li></ul>
    13. 13. George Boole <ul><li>Inghilterra 1815-1864 </li></ul><ul><li>Algebra applicata a problemi logici </li></ul><ul><li>Base teorica per processori e programmi </li></ul>Operatori Binari Booleani Somma Binaria Booleana 0 +1 01 1 +1 10 Unità = a XOR b Riporto = a AND b AND 1 0 1 1 0 0 0 0 OR 1 0 1 1 1 0 1 0 1 0 NOT 0 1 XOR 1 0 1 0 1 0 1 0
    14. 14. Herman Hollerith <ul><li>USA 1860-1929 </li></ul><ul><li>Macchina statistica elettrica a schede perforate </li></ul><ul><li>Censo americano 1890 </li></ul><ul><li>Fondò Tabulating Machines Company che diventò International Business Machines nel 1924 </li></ul><ul><li>Codifica numerica delle informazioni (socio Billings) </li></ul>
    15. 15. Codifica numerica delle informazioni <ul><li>Numeri interi </li></ul><ul><ul><li>Rappresentazione binaria </li></ul></ul><ul><li>Virgola Mobile </li></ul><ul><ul><li>Mantissa e esponente </li></ul></ul><ul><li>Caratteri e Testi </li></ul><ul><ul><li>Codifiche Ascii e Unicode </li></ul></ul><ul><ul><li>Separazione testo e formattazione </li></ul></ul><ul><li>Immagini e Suoni </li></ul><ul><ul><li>Bitmap, vettoriali </li></ul></ul><ul><ul><li>Waveform e MIDI </li></ul></ul><ul><ul><li>Formati lossless e compressi </li></ul></ul>
    16. 16. Alan Turing <ul><li>Inghilterra 1912-1954 </li></ul><ul><li>Porto l'informatica al livello di scienza </li></ul><ul><li>Teorico dell'informatica moderna </li></ul><ul><ul><li>Macchina di Turing (computer moderno) </li></ul></ul><ul><ul><li>Test di Turing (intelligenza artificiale) </li></ul></ul><ul><li>Il “Nobel di informatica” si chiama “Premio Turing” </li></ul>
    17. 17. Macchina di Turing <ul><li>Artificio matematico per risolvere il “problema della decidibilità” di Hilbert (Dato un sistema formale, esiste un metodo per determinare se una formula qualsiasi e' un teorema in quel sistema formale?) </li></ul><ul><li>Ogni problema finito può essere risolto da una macchina che esegua un numero finito di operazioni di complessità finita </li></ul>
    18. 18. Alan Turing (2) <ul><li>Sviluppò la macchina per la decodifica di “Enigma”, la codifica degli “U-boat” </li></ul><ul><ul><li>Computer programmabile a relé </li></ul></ul><ul><ul><li>Velocità era fondamentale </li></ul></ul><ul><ul><li>Cluster </li></ul></ul><ul><ul><li>Distinzione Hw e Software </li></ul></ul><ul><ul><li>Affascinante storia di spie </li></ul></ul><ul><ul><li>Tutto distrutto dopo la guerra </li></ul></ul>
    19. 19. Alan Turing (3) <ul><li>Prototipo dello scienziato matto </li></ul><ul><ul><li>Pigiama invece di camicia </li></ul></ul><ul><ul><li>Calcoli in base 32 scritti al contrario </li></ul></ul><ul><ul><li>Maschera Antigas in bicicletta </li></ul></ul><ul><ul><li>Maratoneta a livello olimpionico </li></ul></ul><ul><li>Castrato Chimicamente perché omosessuale </li></ul><ul><li>Morto con una mela avvelenata (logo Apple?) </li></ul>
    20. 20. John Von Neumann <ul><li>Ungheria - USA 1903-1957 </li></ul><ul><li>Teorico in numerosi campi della scienza e geopolitica (insiemi, MAD (mutually assured destruction) , idrodinamica, giochi, economia, ...) </li></ul><ul><li>Responsabile CED a “Los Alamos” </li></ul><ul><li>Dati e istruzioni nella stessa memoria. I programmi sono dati </li></ul><ul><li>I computer moderni si basano su architetture di von Neumann </li></ul>
    21. 21. Architettura di un Computer <ul><li>Componenti fondamentali di un computer </li></ul>Input (stdin) Programmi CPU fetch/store Dati Output (stdout, stderr) Dati
    22. 22. Grace Hopper <ul><li>USA 1906-1992 </li></ul><ul><li>Programmatore nei primi grossi computer, ENIAC, Mark 1, UNIVAC </li></ul><ul><li>Primo Compilatore Linguaggio “A” </li></ul><ul><li>COBOL </li></ul><ul><li>Primo baco (falena in relé di Mark II) </li></ul><ul><li>Regalava “nanosecondi” </li></ul><ul><li>Ammiraglio US Navy, incrociatore con suo nome </li></ul>
    23. 23. Linguaggi di programmazione <ul><li>Trasmettere Algoritmi al Computer per la loro esecuzione </li></ul><ul><li>Tipi di Linguaggio </li></ul><ul><ul><li>Cavi </li></ul></ul><ul><ul><li>Linguaggio Macchina Binario </li></ul></ul><ul><ul><li>Assembler </li></ul></ul><ul><ul><li>Compilatori </li></ul></ul><ul><ul><li>Interpreti </li></ul></ul><ul><li>Funzioni, Librerie e Sistemi Operativi </li></ul>
    24. 24. Donald Knuth <ul><li>USA 1938- </li></ul><ul><li>Analisi formale di algoritmi </li></ul><ul><li>The Art of Computer Programming la bibbia della programmazione $2,56 a errore </li></ul><ul><li>TeX (numeri di versioni come approssimazioni di π ) </li></ul>
    25. 25. Algoritmi <ul><li>Algoritmi: Sequenza di passi per arrivare alla soluzione </li></ul><ul><ul><li>Ordinamento </li></ul></ul><ul><ul><ul><li>Selezione (Briscola Sort) </li></ul></ul></ul><ul><ul><ul><li>Inserimento (Bubble Sort) </li></ul></ul></ul><ul><ul><ul><li>Interscambio Quick Sort </li></ul></ul></ul><ul><ul><li>Strutture di dati </li></ul></ul><ul><ul><ul><li>Vettori, Liste, Code, Pile, alberi </li></ul></ul></ul><ul><ul><ul><li>Strutture complesse </li></ul></ul></ul><ul><li>Nicklaus Wirth (pascal, “algoritmi+Strutture Dati = Programmi”) </li></ul><ul><li>Efficienza </li></ul><ul><ul><li>N , N*log(O), N*O, N O </li></ul></ul>
    26. 26. Dennis Ritchie <ul><li>USA 1941- </li></ul><ul><li>Insieme con Ken Thompson creò nel Bell labs UNIX a partire di MULTICS </li></ul><ul><li>Insieme a Brian Kernighan il linguaggio “C” derivato del linguaggio “B” di Thompson </li></ul><ul><li>Pioniere della generazione di Berkeley (ma lui era di Harvard) </li></ul>
    27. 27. Troppo vicini per entrare nella Storia *più influenti nell'industria che nella scienza <ul><li>Richard Stallman (GCC, emacs, GPL) </li></ul><ul><li>Steve Jobs * </li></ul><ul><li>Bill Gates * </li></ul><ul><li>Linus Torvalds * </li></ul><ul><li>James Gosling (java) </li></ul><ul><li>Larry Wall (perl) </li></ul><ul><li>Guido Van Rossum (python) </li></ul><ul><li>Uno di noi... </li></ul>
    28. 28. Linguaggi (1) I Classici <ul><li>177 in Wikipedia </li></ul><ul><ul><li>Fortran </li></ul></ul><ul><ul><ul><li>FORmula TRANslation </li></ul></ul></ul><ul><ul><ul><li>Anni 50 IBM </li></ul></ul></ul><ul><ul><ul><li>Calcoli Matematici e Scientifici </li></ul></ul></ul><ul><ul><ul><li>ENORME libreria di funzioni </li></ul></ul></ul><ul><ul><li>COBOL </li></ul></ul><ul><ul><ul><li>COmmon Business Oriented Language </li></ul></ul></ul><ul><ul><ul><li>Inizio Anni 60 </li></ul></ul></ul><ul><ul><ul><li>Gestionali, banche, assicurazioni </li></ul></ul></ul><ul><ul><ul><li>Molto Discorsivo </li></ul></ul></ul><ul><ul><ul><ul><li>ADD RIGA TO TOTALE </li></ul></ul></ul></ul><ul><ul><ul><li>80% del Sw in uso attualmente </li></ul></ul></ul>
    29. 29. Linguaggi (2) i didattici <ul><ul><li>Basic </li></ul></ul><ul><ul><ul><li>Beginners All purpose Symbolic Instruction Code </li></ul></ul></ul><ul><ul><ul><li>Inizio Anni 60 </li></ul></ul></ul><ul><ul><ul><li>Nato come Linguaggio Accademico Semplificato </li></ul></ul></ul><ul><ul><ul><li>Interpretato e Compilato </li></ul></ul></ul><ul><ul><ul><li>Non Strutturato all'inizio , solo GOTO </li></ul></ul></ul><ul><ul><ul><li>Presente nel firmware dei computer anni 70-80 </li></ul></ul></ul><ul><ul><ul><li>Paul Allen- Bill Gates (Altair, BASICA, GWBASIC, QBASIC) </li></ul></ul></ul><ul><ul><ul><li>Visual-Basic </li></ul></ul></ul><ul><ul><li>Pascal </li></ul></ul><ul><ul><ul><li>Nicklaus Wirth 1970 </li></ul></ul></ul><ul><ul><ul><li>Linguaggio didattico per la programmazione strutturata </li></ul></ul></ul><ul><ul><ul><li>Macintosh </li></ul></ul></ul><ul><ul><ul><li>Object Pascal </li></ul></ul></ul><ul><ul><ul><li>Borland TurboPascal - Delphi </li></ul></ul></ul>
    30. 30. Linguaggi (3) il “C” <ul><ul><li>C </li></ul></ul><ul><ul><ul><li>Ritchie 1972 </li></ul></ul></ul><ul><ul><ul><li>Linguaggio strutturato minimalista </li></ul></ul></ul><ul><ul><ul><li>Istruzioni molto semplici, ma combinate in funzioni </li></ul></ul></ul><ul><ul><ul><li>“ il linguaggio di alto livello di livello più basso” </li></ul></ul></ul><ul><ul><ul><li>Accesso diretto alla memoria </li></ul></ul></ul><ul><ul><ul><li>Array come aritmetica di puntatori </li></ul></ul></ul><ul><ul><ul><li>Preprocessore </li></ul></ul></ul><ul><ul><ul><li>Operatori complessi ( ++, /=, ...) </li></ul></ul></ul><ul><ul><ul><li>Sistemi di chiamata diventati standard </li></ul></ul></ul><ul><ul><ul><li>Molto efficiente in tempo e spazio </li></ul></ul></ul><ul><ul><ul><li>Molto adatto a sistemi di basso livello </li></ul></ul></ul><ul><ul><ul><ul><li>Sistemi Operativi, Compilatori e tools, Librerie di Funzioni </li></ul></ul></ul></ul><ul><ul><li>C++ e Objective C </li></ul></ul><ul><ul><ul><li>Estensioni Object Oriented del C </li></ul></ul></ul><ul><ul><ul><li>C++ rigoroso </li></ul></ul></ul><ul><ul><ul><li>OC molto dinamico </li></ul></ul></ul>
    31. 31. Linguaggi (4) Virtual Machines <ul><ul><li>Java </li></ul></ul><ul><ul><ul><li>James Gosling 1995 </li></ul></ul></ul><ul><ul><ul><li>Sintassi derivata dal C++, ma più rifinita </li></ul></ul></ul><ul><ul><ul><li>Virtual Machine, compilato in bytecode (JIT) </li></ul></ul></ul><ul><ul><ul><li>Garbage collector </li></ul></ul></ul><ul><ul><ul><li>Controllato da Sun (fino adesso, GPL) </li></ul></ul></ul><ul><ul><ul><li>Tutto è un oggetto </li></ul></ul></ul><ul><ul><ul><ul><ul><li>nel bene (ordinato) </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>nel male (prolisso) </li></ul></ul></ul></ul></ul><ul><ul><ul><li>Molto diffuso oggi (Cobol del 3° Millennio) </li></ul></ul></ul><ul><ul><ul><li>Molte librerie </li></ul></ul></ul><ul><ul><li>C# </li></ul></ul><ul><ul><ul><li>Il Java MicroSoft </li></ul></ul></ul><ul><ul><ul><li>Piu vicino al C++ come sintassi </li></ul></ul></ul><ul><ul><ul><li>.NET </li></ul></ul></ul>
    32. 32. Linguaggi (5) Scripts e oltre <ul><ul><li>Perl </li></ul></ul><ul><ul><ul><li>Espressivo e Conciso, Molti moduli in CPAN </li></ul></ul></ul><ul><ul><ul><li>Macinare dati e CGI (spamassassin, slashdot...) </li></ul></ul></ul><ul><ul><ul><li>Write only </li></ul></ul></ul><ul><ul><li>Python e Ruby </li></ul></ul><ul><ul><ul><li>Umanizzare il Perl </li></ul></ul></ul><ul><ul><ul><li>Evoluzione dei linguaggio di scripting a linguaggi completi, moderni </li></ul></ul></ul><ul><ul><li>PHP e JavaScript </li></ul></ul><ul><ul><ul><li>HTML lato server e client </li></ul></ul></ul><ul><ul><ul><li>Basic dell'era Internet </li></ul></ul></ul><ul><ul><ul><li>AJAX </li></ul></ul></ul><ul><ul><li>SQL </li></ul></ul><ul><ul><li>PostScript </li></ul></ul><ul><ul><li>... </li></ul></ul>
    33. 33. Questa è la fine...

    ×