open day, "analisi numerica moderna e calcolo scientico: fortran, c e python

17

Click here to load reader

Upload: alumni-mathematica

Post on 10-May-2015

83 views

Category:

Science


4 download

DESCRIPTION

In occasione della call per le nuove adesioni all'associazione, Alumni Mathematica ha organizzato l'Open Day "Come la mathematica migliora il mondo". L'evento si è svolto il 4 Aprile 2014, nell'Aula X del Dipartimento di Matematica di Bari. In questo talk Prof.ssa Francesca Mazzia, Testimonial Alumni Mathematica, ci parla di una breve introduzione storica sull'analisi numerica "moderna" , sul calcolo scientifico e sui linguaggi di programmazione Fortran, C e Python. Vengono inoltre fatti cenni su alcuni progetti attuali che usano il Python.

TRANSCRIPT

Page 1: Open Day, "Analisi Numerica moderna e Calcolo Scientico: Fortran, C e Python

Analisi Numerica “moderna” e Calcolo Scientifico:Fortran, C e Python

Francesca Mazzia

Dipartimento di MatematicaUniversita di Bari

Francesca Mazzia (Univ. Bari) Analisi Numerica “moderna” e Calcolo Scientifico: Fortran, C e Python 1 / 17

Page 2: Open Day, "Analisi Numerica moderna e Calcolo Scientico: Fortran, C e Python

Analisi Numerica Moderna e Calcolo Scientifico

L’Analisi Numerica “moderna” si puo dire che e iniziata nel 1947 conl’articolo

John von Neumann e Herman Goldstine, Numerical Inverting of Matricesof High Order (Bulletin of the AMS, Nov. 1947).

uno dei primi lavori che studia gli errori di arrotondamento e include unadiscussione su quello che oggi si chiama calcolo scientifico.

Francesca Mazzia (Univ. Bari) Analisi Numerica “moderna” e Calcolo Scientifico: Fortran, C e Python 2 / 17

Page 3: Open Day, "Analisi Numerica moderna e Calcolo Scientico: Fortran, C e Python

Analisi Numerica Moderna e Calcolo Scientifico

Sebbene l’analisi numerica abbia origini molto piu antiche, quella che sipuo chiamare analisi numerica “moderna” e caratterizzata dalla sinergiafra:

computer programmabili,

analisi matematica,

opportunita di risolvere problemi grandi e complessi nelle applicazioni.

La necessita di risolvere applicazioni sempre piu complesse come quelledella fluidodinamica computatazionale e della meteorologia, hanno guidatolo sviluppo dei computer e dei linguaggi di programmazione e dipendonofortemente dallo sviluppo dell’analisi numerica e della modellizzazionematematica.

Francesca Mazzia (Univ. Bari) Analisi Numerica “moderna” e Calcolo Scientifico: Fortran, C e Python 3 / 17

Page 4: Open Day, "Analisi Numerica moderna e Calcolo Scientico: Fortran, C e Python

Il Fortran

Il Fortran e uno dei linguaggi dei linguaggi di programmazione piuutilizzati in ambito fisico–matematico:

e nato nel 1953 da un’idea di John Backus;

e stato il primo linguaggio di programmazione di alto livello dellastoria;

primo ad utilizzare un compilatore;

primo a semplificare la traduzione di formule matematiche e fisiche; ilnome deriva da Formula Translation System, sistema di traduzionedelle formule.

Francesca Mazzia (Univ. Bari) Analisi Numerica “moderna” e Calcolo Scientifico: Fortran, C e Python 4 / 17

Page 5: Open Day, "Analisi Numerica moderna e Calcolo Scientico: Fortran, C e Python

Il Fortran

Il progetto originale prevedeva lo sviluppo di un linguaggio diprogrammazione che andasse al di la del linguaggio macchina e fossepiu vicino alla sintassi e alla semantica del linguaggio naturale.

In questo modo, sosteneva Backus, la programmazione sarebbe statapiu semplice e intuitiva e il tempo di realizzazione dei programmisarebbe drasticamente calato.

Fra i vari livelli di standardizzazione i piu’ importanti sono:FORTRAN 77,Fortran 90/95,Fortran 2003 (object-oriented programming),Fortran 2008 (concurrent programming),il prossimo step e il Fortran 2015.

Francesca Mazzia (Univ. Bari) Analisi Numerica “moderna” e Calcolo Scientifico: Fortran, C e Python 5 / 17

Page 6: Open Day, "Analisi Numerica moderna e Calcolo Scientico: Fortran, C e Python

Il C

Sviluppato tra il 1969 e il 1973 da Dennis Ritchie e Kevin Thompson,all’interno dei laboratori di ricerca dell’AT & T il linguaggio C e unlinguaggio di programmazione general-purpose tra i piu utilizzati.

Molti linguaggi hanno preso in prestito parti, piu o meno grandi, dellastruttura di C. Per esempio, Java, JavaScript, PHP, C++ e Python.

Per questo motivo, imparare a programmare in C potrebbe essere un’utilebase di partenza per l’apprendimento di linguaggi piu attuali.

Francesca Mazzia (Univ. Bari) Analisi Numerica “moderna” e Calcolo Scientifico: Fortran, C e Python 6 / 17

Page 7: Open Day, "Analisi Numerica moderna e Calcolo Scientico: Fortran, C e Python

Il C

La standardizzazione e avvenuta nel 1989 e nel 1990;

nel 1989 fu l’ANSI (American National Standard Institute) a definirele strutture, le funzioni e le keywords standard di C (C89);

nel 1990 le stesse specifiche furono definite come standard dall’ISO(International Organization for Standardization) (C90).

Con il passare degli anni furono necessarie diverse revisioni eimplementazioni di nuove funzioni, per rendere il linguaggio C piuattinente alle necessita ed esigenze dei programmatori.

Nel 1999 venne rilasciata la versione conosciuta come C99, mentre nel2011 il C11.

Francesca Mazzia (Univ. Bari) Analisi Numerica “moderna” e Calcolo Scientifico: Fortran, C e Python 7 / 17

Page 8: Open Day, "Analisi Numerica moderna e Calcolo Scientico: Fortran, C e Python

Python

Python e un linguaggio di programmazione di alto livello.

Ideato dal programmatore olandese Guido Van Rossum nel 1991, Python sidistingue per la sua facilita d’utilizzo e per essere molto simile all’ingleseparlato.

Sono queste due caratteristiche a rendere Python adatto a chi deveprogrammare tutti i giorni: non necessita di una grande processo diapprendimento, ma e allo stesso tempo potente (soprattutto perapplicazioni statistico-matematiche) e versatile.

La seconda versione e del 2000, la terza, chiamata anche Python 3000 opy3k, e stata rilasciata nel 2008.

Francesca Mazzia (Univ. Bari) Analisi Numerica “moderna” e Calcolo Scientifico: Fortran, C e Python 8 / 17

Page 9: Open Day, "Analisi Numerica moderna e Calcolo Scientico: Fortran, C e Python

Python

Alla base di Python, una filosofia di programmazione ben definita edenunciata dallo stesso Van Rossum.

In una proposta inviata al DARPA ( Defense Advanced Research ProjectsAgency) dal nome: “Computer Programming for Everybody”(https://www.python.org/doc/essays/cp4e/)

lo sviluppatore olandese spiega quali sono i quattro punti cardinali del suolinguaggio:

semplice, intuitivo e potente;

open source;

codice facilmente comprensibile, come un linguaggio naturale;

permettere di programmare in pochi giorni e consentire tempi disviluppo brevi.

Francesca Mazzia (Univ. Bari) Analisi Numerica “moderna” e Calcolo Scientifico: Fortran, C e Python 9 / 17

Page 10: Open Day, "Analisi Numerica moderna e Calcolo Scientico: Fortran, C e Python

The Zen of Python

I principi “filosofici” sono esplicitati nel documento “PEP 20 (The Zen ofPython)”. (http://legacy.python.org/dev/peps/pep-0020/)

Di questo documento sono divenuti celebri alcuni brevi aforismi cherendono perfettamente l’idea di cosa ci sia stato (e continua ad esserci)dietro la nascita di Python.

Francesca Mazzia (Univ. Bari) Analisi Numerica “moderna” e Calcolo Scientifico: Fortran, C e Python 10 / 17

Page 11: Open Day, "Analisi Numerica moderna e Calcolo Scientico: Fortran, C e Python

The Zen of Python

Beautiful is better than ugly. (Bello e meglio di brutto)

Explicit is better than implicit. (Esplicito e meglio di implicito)

Simple is better than complex. Complex is better than complicated.(Semplice e meglio di complesso, complesso e migliore di complicato)

Sparse is better than dense. (Sparso e meglio di denso)

Readability counts. (La leggibilita conta)

Special cases aren’t special enough to break the rules. Althoughpracticality beats purity.(I casi speciali non sono speciali abbastanza da infrangere le regole anchese la praticita sconfigge la purezza)

Francesca Mazzia (Univ. Bari) Analisi Numerica “moderna” e Calcolo Scientifico: Fortran, C e Python 11 / 17

Page 12: Open Day, "Analisi Numerica moderna e Calcolo Scientico: Fortran, C e Python

The Zen of Python

Errors should never pass silently. Unless explicitly silenced.(Gli errori non devono mai essere ignorati, a meno che non siano daignorare esplicitamente)

In the face of ambiguity, refuse the temptation to guess.(Di fronte all’ambiguita, fuggi la tentazione di indovinare)

There should be one– and preferably only one –obvious way to do it.Although that way may not be obvious at first unless you’re Dutch.(Ci dovrebbe essere uno e preferibilmente un solo ovvio modo per farlo,anche se quel modo potrebbe non essere ovvio a prima vista a meno chetu non sia olandese)

Now is better than never. Although never is often better than *right* now.(Ora e meglio di mai, anche se mai e spesso meglio di subito)

Francesca Mazzia (Univ. Bari) Analisi Numerica “moderna” e Calcolo Scientifico: Fortran, C e Python 12 / 17

Page 13: Open Day, "Analisi Numerica moderna e Calcolo Scientico: Fortran, C e Python

The Zen of Python

If the implementation is hard to explain, it’s a bad idea. If theimplementation is easy to explain, it may be a good idea.(Se l’implementazione e difficile da spiegare e una cattiva idea, se e facileda spiegare potrebbe essere una buona idea)

Francesca Mazzia (Univ. Bari) Analisi Numerica “moderna” e Calcolo Scientifico: Fortran, C e Python 13 / 17

Page 14: Open Day, "Analisi Numerica moderna e Calcolo Scientico: Fortran, C e Python

Python

Pur essendo improntato alla semplicita e all’immediatezza di utilizzo,Python potrebbe ancora risultare difficile per i programmatori alle primearmi.

Per tutti loro, nella sezione wiki del sito sono raccolti articoli introduttivi,guide e tutorial relativi ai primi passi da muovere nel mondo Python.Viene spiegato quali programmi installare e come farlo, come realizzare iprimi algoritmi ed i primi programmi; quali funzioni utilizzare e quandoutilizzarle.

Grazie alla numerosa comunita di supporto, inoltre, e stato realizzato unpreziosissimo tutorial divenuto con il passare degli anni sempre piu precisoe puntuale. Qualsiasi dubbio o incertezza si possa avere nel corso delproprio lavoro puo essere risolto facendo appello a questa guida.

Francesca Mazzia (Univ. Bari) Analisi Numerica “moderna” e Calcolo Scientifico: Fortran, C e Python 14 / 17

Page 15: Open Day, "Analisi Numerica moderna e Calcolo Scientico: Fortran, C e Python

Python: progetto DARPA

Nel 2013 il DARPA (Defense Advanced Research Projects Agency) hafinanziato con 3 milioni di dollari lo sviluppo delle librerie Python per i“big data”.

Il finanziamento, assegnato alla compagnia Continuum Analytics, sarautilizzato per lo sviluppo della libreria Python Blaze e del sistema divisualizzazione chiamato Bokeh.Blaze estendera la libreria NumPy per il calcolo numerico e la libreriaSciPy per il calcolo scientifico in modo da renderle utilizzabbili permanipolare grandi mole di dati “big data”.Bokeh e una libreria Python per la visualizzazione di big dataobiettivo principale: “ develop computational techniques and softwaretools for processing and analyzing the vast amount ofmission-oriented information for Defense activities.”

Francesca Mazzia (Univ. Bari) Analisi Numerica “moderna” e Calcolo Scientifico: Fortran, C e Python 15 / 17

Page 16: Open Day, "Analisi Numerica moderna e Calcolo Scientico: Fortran, C e Python

Python: ForecastWatch.com

ForecastWatch.com usa Python per aiutare la meteorologia.

ForecastWatch.com un servizio di Intellovations.

Oltre 36,000 previsioni meteo vengono raccolti ogni giorno per oltre 800citta degli Stati Uniti, e successivamente confrontati con i dati realiclimatologici.

Questi confronti sono utilizzati dai meteorologi per migliorare le loroprevisioni del tempo.

Sono utilizzati anche dai consumatori per capire meglio la probabileaccuratezza di una previsione.

Francesca Mazzia (Univ. Bari) Analisi Numerica “moderna” e Calcolo Scientifico: Fortran, C e Python 16 / 17

Page 17: Open Day, "Analisi Numerica moderna e Calcolo Scientico: Fortran, C e Python

Python: Air Traffic Control

Frequentis e uno dei fornitori leader a livello mondiale di soluzioni nelcampo della gestione del traffico aereo, la sicurezza pubblica e i trasporti.

Frequentis ha utilizzato Python nella sua famiglia di prodotti TAPtools:strumenti di controllo del traffico aereo.

Questi strumenti sono utilizzati dai controllori del traffico aereo permonitorare le condizioni atmosferiche, controllare l’illuminazione dellapista, monitorare e controllare gli strumenti di aiuto alla navigazione.

Francesca Mazzia (Univ. Bari) Analisi Numerica “moderna” e Calcolo Scientifico: Fortran, C e Python 17 / 17