Il laboratorio di Fisica Computazionale: strumentazione

Documenti analoghi
Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

1. BASI DI DATI: GENERALITÀ

Linguaggi di programmazione

Generazione Automatica di Asserzioni da Modelli di Specifica

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Corso di Informatica

Introduzione al Calcolo Scientifico

Progettaz. e sviluppo Data Base

Progettaz. e sviluppo Data Base

Linguaggi e Paradigmi di Programmazione

4. Un ambiente di sviluppo per Java

Introduzione ai linguaggi di programmazione

INFORMATICA 1 L. Mezzalira

Approccio stratificato

TECNICO SUPERIORE PER L AUTOMAZIONE INDUSTRIALE

Introduzione a Dev-C++

Concetti di base di ingegneria del software

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

FONDAMENTI di INFORMATICA L. Mezzalira

MANUALE DELLA QUALITÀ Pag. 1 di 6

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

RUOLO CENTRALE DEL DS NELL ACCOGLIENZA DEGLI ALUNNI DISABILI COME SENSIBILIZZARE E RESPONSABILIZZARE I DIRIGENTI

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Traduzione ed esecuzione di programmi. Dispensa 08

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE

Introduzione al Calcolo Scientifico

GESTIONE AVANZATA DEI MATERIALI

Ambienti di Sviluppo

Automazione Industriale (scheduling+mms) scheduling+mms.

Base di dati e sistemi informativi

La Macchina Virtuale

Le fattispecie di riuso

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

capitolo 8 LA CHECKLIST PER LA VALUTV ALUTAZIONEAZIONE TECNOLOGICA

SCUOLA PRIMARIA Anno Scolastico 2014/2015 CURRICOLO DI TECNOLOGIA OBIETTIVI DI APPRENDIMENTO AL TERMINE DELLA CLASSE TERZA DELLA SCUOLA PRIMARIA

IL PROCESSO DI FABBRICAZIONE (sviluppo nuovo prodotto)

Programma del Corso. Dati e DBMS SQL. Progettazione di una. Normalizzazione

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

REGIONE MARCHE GIUNTA REGIONALE

LINUX. Che cos'e` un sistema operativo?

Il modello di ottimizzazione SAM

Il database management system Access

Database. Si ringrazia Marco Bertini per le slides

Il Sistema Operativo (1)

CENTRALE UNICA DI SOCCORSO

Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009. Prof. Raffaele Nicolussi

TECNICHE DI SIMULAZIONE

Programmazione per la disciplina Informatica PROGRAMMAZIONE DI MATERIA: INFORMATICA SECONDO BIENNIO AMMINISTRAZIONE FINANZA E MARKETING

Ministero dell istruzione, dell università e della ricerca. Liceo Tecnologico. Indirizzo Informatico, Grafico e Comunicazione

Project Cycle Management La programmazione della fase di progettazione esecutiva. La condivisione dell idea progettuale.

Linguaggi di programmazione

Panoramica: che cosa è necessario

IL SISTEMA INFORMATIVO

ISTITUTO TECNICO ECONOMICO MOSSOTTI

La Metodologia adottata nel Corso

Architetture Applicative

leaders in engineering excellence

Syllabus C310 - Insegnamenti disciplinari

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE

7. Architetture Software

COME SVILUPPARE UN EFFICACE PIANO DI INTERNET MARKETING

La progettazione centrata sull utente nei bandi di gara

Dispensa di Informatica I.1

SCUOLA PRIMARIA I.C. di CRESPELLANO PROGRAMMAZIONE ANNUALE DI TECNOLOGIA E INFORMATICA

CP Customer Portal. Sistema di gestione ticket unificato

Software di base. Corso di Fondamenti di Informatica

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

GESTIONE AVANZATA DEI MATERIALI

Architettura di un sistema operativo

I Sistemi Operativi. Confronto Windows MAC OS X Linux

Liceo Tecnologico. Indirizzo Informatico e Comunicazione. Indicazioni nazionali per Piani di Studi Personalizzati

Relazione finale progetto II anno. Bibliotech Il sito della biblioteca scolastica

Modulo: Scarsità e scelta

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico

PIANO DI LAVORO ANNUALE DELLA DISCIPLINA Tecnologie e Progettazione di Sistemi Classi QUINTE A.S

InitZero s.r.l. Via P. Calamandrei, Arezzo

Alternanza scuola lavoro: che cosa significa

LICEO SCIENTIFICO STATALE "N. COPERNICO" Via Garavaglia, BOLOGNA Tel. 051/ Fax 051/ cod. mecc.

SOFTWARE A SUPPORTO DELLA GESTIONE AMMINISTRATIVA DELLO SPORTELLO UNICO SPECIFICA DEI REQUISITI UTENTE

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Programmi. Algoritmi scritti in un linguaggio di programmazione

SCHEDA PER LA PROGRAMMAZIONE DELLE ATTIVITA DIDATTICHE. Dipartimento di INFORMATICA Classe 3 Disciplina INFORMATICA

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

Realizzazione di una chat su protocollo HTTP

I quattro ordini di scuola a confronto Elisabetta Malaguti

REALIZZAZIONE DI UN LABORATORIO REMOTO PER ESPERIENZE DI ROBOTICA EDUCATIVA: LATO CLIENT

I WEBQUEST SCIENZE DELLA FORMAZIONE PRIMARIA UNIVERSITÀ DEGLI STUDI DI PALERMO. Palermo 9 novembre 2011

Protezione. Protezione. Protezione. Obiettivi della protezione

Introduzione al sistema operativo Il file system: file, directory,...

PROTOS GESTIONE DELLA CORRISPONDENZA AZIENDALE IN AMBIENTE INTRANET. Open System s.r.l.

Architetture Informatiche. Dal Mainframe al Personal Computer

Architetture Informatiche. Dal Mainframe al Personal Computer

manifatturiera e per i servizi

MESA PROJECT ITIS G. Cardano Pavia New Curriculum

LINGUAGGI DI PROGRAMMAZIONE

SDD System design document

Transcript:

http://www.laureescientifiche.units.it/ Il laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università di Trieste (aggiornamento e formazione insegnanti; corso CIRD - CP e M IDIFO3: Lab_A I15) L hardware per la fisica computazionale Strumenti software sistemi operativi programmazione pre- e post-processing Criteri di valutazione per le scelte SW

L hardware per la fisica computazionale Non è un problema: qualsiasi computer di tipo generale attualmente in commercio dispone di una potenza di calcolo superiore a quanto necessario per il più ambizioso progetto ragionevole per studenti delle superiori.

Strumenti SW: sistema operativo Il sistema operativo (S.O.) gestisce tutte le componenti HW del computer e sovrintende a tutte le attività (processi). In questo momento il panorama delle possibilità è ristretto a due grandi famiglie: Unix (in tutte le varianti, inclusi MacOsX e Linux) e Windows (in tutte le varianti e versioni attualmente disponibili). Dal punto di vista delle funzionalità di base e del supporto ad attività computazionali non c è una differenza sostanziale tra le due alternative. In genere, la scelta è legata a vincoli esterni e considerazioni che esulano dal contesto computazionale (budget, sicurezza,conoscenze, risorse informatiche preesistenti.). Una considerazione a parte può esser fatta sulla disponibilità di strumenti di sviluppo per le due piattaforme. Un analisi dell offerta di mercato lungo questa linea, che esula dallo scopo di questo corso, dovrà tener conto dei vincoli di budget e delle politiche generali stabilite a riguardo, nel contesto operativo concreto (es. necessità relative a software specifico per altre attività)

Strumenti SW: programmazione I linguaggi di programmazione assolvono un duplice scopo: 1. comunicazione uomo-macchina: descrivere ad un livello più astratto del linguaggio macchina i passi di elaborazione da compiere; 2. comunicazione tra esseri umani (programmatorealtri programmatori, programmatore-utilizzatori, programmatore-con-se-stesso);

Strumenti software: programmazione I linguaggi di programmazione possono essere classificati secondo diverse categorie. Qui ci limiteremo a quelle più rilevanti per la valutazione degli strumenti in ambito computazionale. -Livelli -Espressività -Efficienza della traduzione in linguaggio macchina -Maturità -Standardizzazione -Base utilizzatori -Software esistente -Curva di apprendimento -Disponibilità di ambienti di sviluppo

Programmazione - livelli dei linguaggi Tradizionalmente si assegna ad un linguaggio di programmazione un livello tanto più alto quanto più ci si allontana dalle particolarità dell HW e ci si avvicina alla descrizione del problema in termini del linguaggio naturale per la/le discipline ad esso rilevanti. Esempio: calcolo della derivata in x della funzione f(x)=x 2 : Assembler (generato dal compilatore) MAIN : pushl subl call leal call leal leal call leal %ebp %esp, %ebp $376, %esp $options.0.1502, 4(%esp) $8, (%esp) _gfortran_set_options $.LC0, -352(%ebp) $3, -348(%ebp) $128, -360(%ebp) $5, -356(%ebp) -360(%ebp), %eax %eax, (%esp) _gfortran_st_read $4, 8(%esp) -20(%ebp), %eax %eax, 4(%esp) -360(%ebp), %eax %eax, (%esp) _gfortran_transfer_real $4, 8(%esp) -16(%ebp), %eax %eax, 4(%esp) leal -360(%ebp), %eax %eax, (%esp) call _gfortran_transfer_real leal -360(%ebp), %eax %eax, (%esp) call _gfortran_st_read_done flds -20(%ebp) flds -16(%ebp) faddp %st, %st(1) fld %st(0) fmulp %st, %st(1) flds -20(%ebp) flds -16(%ebp) fsubrp %st, %st(1) fmul %st(0), %st fsubrp %st, %st(1) flds.lc1 fdivrp %st, %st(1) flds -16(%ebp) fdivrp %st, %st(1) fstps -12(%ebp) $.LC0, -352(%ebp) $5, -348(%ebp)

Programmazione - livelli dei linguaggi Esempio: calcolo della derivata in x=2 della funzione f(x)=x 2 : C Fortran Mathematica #include <stdio.h> int main(void){ float h,x,der; scanf("%f%f",&x,&h); der=( (x+h)*(x+h)-(x-h)*(x-h))/2/h; printf("%f \n",der); } program deri real :: h,x,der read*,x,h der=( (x+h)**2-(x-h)**2)/2/h print*,der end program deri In[3]:= F[x_]:=x^2 In[4]:= F'[x] Out[4]= 2 x In[5]:= F'[2] Out[5]= 4 basso alto livello alto livello altissimo livello Un linguaggio di altissimo livello come Mathematica permette di aderire in modo completo alla descrizione del problema nell ambito specifico. Per contro si perde l informazione sull approccio e gli algoritmi utilizzati.

Programmazione - espressività Linguaggi dello stesso livello possono avere diversa espressività in funzione dei diversi tipi dati, strutture di controllo ed espandibilità disponibili Es. Coordinata x della posizione di un pianeta Posizione(1,I) Pianeta[i].coordinata_x

Programmazione - Efficienza della traduzione in linguaggio macchina Programmi scritti in linguaggi di programmazione di vario livello vengono tradotti con vari meccanismi in applicazioni in linguaggio macchina (intepreti, compilatori, bytecode intermedi). I diversi meccanismi possono fornire diversi livelli di efficienza e, anche all interno di un dato meccanismo, per esempio linguaggi compilati, l efficienza della traduzione varia da software a software e, in alcuni casi può anche essere esplicitamente modificata (livelli di ottimizzazione). Poco importante per le applicazioni didattiche.

Programmazione - maturità Ogni linguaggio di programmazione subisce un evoluzione analoga a quella dei linguaggi naturali. Alcuni linguaggi hanno più di 50 anni di vita (Fortran, Cobol, ) E subiscono un processo di evoluzione continua, ma hanno comunque raggiunto una notevole stabilità (compatibilità all indietro). Altri, più recenti, sono ancora sottoposti a frequenti modifiche sostanziali, richiedendo in alcuni casi cambiamenti anche pesanti nei codici sviluppati.

Programmazione - standardizzazione Per alcuni linguaggi, si è proceduto ad una standardizzazione che garantisce comportamenti dei codici coerenti ed equivalenti su piattaforme HW e SW diverse. Il processo di standardizzazione rende più lenta l evoluzione del linguaggio ma in genere rappresenta un vantaggio per il programmatore. La presenza di standard pubblici rende non ambiguo il comportamento dei codici e garantisce la portabilità dei programmi a livello sorgente (o almeno dovrebbe garantire).

Programmazione - base di utilizzatori La presenza di un numeroso gruppo di utilizzatori, pur non essendo un obbligo, garantisce: 1. interesse allo sviluppo del linguaggio e degli strumenti SW collegati anche da parte di aziende; 2. esistenza di documentazione, tutorial gruppi di discussione in rete, ; 2. spinta all evoluzione del linguaggio 3. possibilità di confronto con altri programmatori su temi di comune interesse

Programmazione - SW esistente Per ogni linguaggio di programmazione esistono biblioteche di programmi e sottoprogrammi che implementano moltissime funzionalità utili in diversi ambiti applicativi. Utile un indagine su quanto è disponibile per il proprio campo di interesse.

Programmazione - curva di apprendimento La velocità di apprendimento è un parametro difficile da misurare. Tuttavia, proprio in ambiente didattico riveste una particolare importanza. In genere linguaggi non fortemente tipizzati possono risultare di più facile apprendimento perché meno rigidi su un aspetto importante della sintassi: la necessità di dichiarare esplicitamente il tipo dati delle variabili. Questo vantaggio va però soppesato in confronto ad una maggiore disciplina di programmazione a livello di un primo linguaggio Va anche tenuto conto della semplificazione per l apprendimento offerta dagli strumenti di sviluppo disponibili.

Programmazione: ambiente di sviluppo IDE (Integrated Development Environment): SW di sviuppo, in genere costituito da un editor, un compilatore (o interprete), un sistema automatico di costruzione di applicazioni e un debugger fortemente integrati e spesso accessibili mediante un interfaccia grafica. A volte con sistemi di controllo versione. Alcuni sono multilinguaggio (NetBeans, Eclipse, Visual Studio), altri legati ad un singolo linguaggio e/o su singola piattaforma (Delphi, VB) Debugger: strumenti per l esecuzione controllata di programmi in fase di sviluppo. Per ottimizzarne le prestazioni è necessario un certo grado di compatibilità ed integrazione con i compilatori. In ambiente Unix interessante interfaccia grafica (DDD). Text editors. Molti, alcuni mono-piattaforma, altri multipiattaforma. Generici/orientati a linguaggi (Notepad, Jedit, Nedit, Emacs, vi/vim, )

Programmazione: paradigmi Con paradigmi di programmazione si intende i diversi approcci all analisi e alla descrizione di un problema in vista della sua implementazione a livello di codice. I linguaggi di alto livello correntemente usati per attività computazionali sono tutti di tipo imperativo (elaborazione come sequenza di istruzioni). Sono però possibili scelte di analisi molto diverse da approcci procedurali a quelli orientati agli oggetti. Approccio proceduurale: separazione tra dati e azioni da compiere su di essi. Approccio ad oggetti: dati ed azioni sui dati sono integrati in entità uniche.

Programmazione: paradigmi Quale paradigma scegliere? Risposta opportunistica: quello che si conosce meglio Risposta pedagogica : quello che distrae meno dal problema computazionale

pre- e post-processing Preparazione dei dati secondo un determinato formato richiesto da un applicazione, estrazione di alcuni campi, ricerca di dati, visualizzazione, trasformazione dei dati, sono attività utili (alcune indispensabili ) nel laboratorio computazionale. Molte di queste attività possono essere svolte mediante strumenti di programmazione leggeri (tools e linguaggi di scripting) che ricoprono un ruolo di collante tra applicazioni diverse. Alcuni linguaggi di programmazione (Tcl/Tk, Python, Perl, ) hanno caratteristiche comuni con linguaggi di scripting puri (come le shell unix o powershell (o mingw/cygwin) su windows). Per la visualizzazione invece, data la sua importanza e specificità, occorre una discussione a parte.

scripting I linguaggi di scripting automatizzano operazioni di trasformazione/ preparazione dei dati e lancio di applicazioni, rendendone più semplice la ripetibilità ma anche la documentazione. Conoscenza di tecniche di scripting e tools di manipolazione dei dati sono utili (principalmente per il docente) ma non indispensabili nel laboratorio computazionale.

Visualizzazione Non è impossibile costruire un proprio programma per visualizzare i risultati computazionali o inserire in un programma numerico le chiamate a librerie di visualizzazione più o meno integrate col linguaggio. Diverse possibilità multipiattaforma: linguaggi con grafica integrata (Java, Python, Tcl/Tk) o librerie di grafica (PGLplot, DISLIN, ) Tuttavia, la pratica computazionale richiede di poter tornare sull analisi dei dati in tempi successivi. L analisi dei dati è sempre un processo dinamico e investigativo in cui occorre poter modificare in tempo reale le modalità di visualizzazione e anche modificare al volo, in modo anche complesso, i dati originali. Un approccio modulare, in cui la produzione dei dati sia una fase nettamente separata da quella della loro analisi si rivela, alla lunga, più produttivo e più facilmente mantenibile nel tempo.

Strumenti di visualizzazione multipiattaforma Queste considerazioni motivano verso la scelta di uno strumento di visualizzazione che offra anche possibilità di modifica e fltro degli stessi dati. Grafica 2D, alcune capacità 3D: gnuplot, xmgr/xmgrace Modellizzazione di molecole: jmol

Per saperne di più Linguaggi di programmazione (in generale): http://it.wikipedia.org/wiki/linguaggio_di_programmazione http://it.wikipedia.org/wiki/programmazione_orientata_agli_oggetti Scripting: Bash: http://www.gnu.org/software/bash/ Tcl/Tk: http://www.tcl.tk/ Python: http://www.python.it/ Visualizzazione: Gnuplot: http://www.gnuplot.info/ Xmgr/xmgrace http://plasma-gate.weizmann.ac.il/grace/ DISLIN: http://www.mps.mpg.de/dislin/ PGPLOT: http://www.astro.caltech.edu/~tjp/pgplot/

Per saperne di più Linguaggi di programmazione : C http://www.physics.drexel.edu/courses/comp_phys/general/c_basics/ C++ http://www.cplusplus.com/doc/tutorial/ Fortran http://www.cs.mtu.edu/~shene/courses/cs201/notes/fortran.html Java http://download.oracle.com/javase/tutorial/

Per saperne di più Compilatori: Fortran: G95 (per arie piattaforme): http://www.g95.org/ Gfortran: http://gcc.gnu.org/wiki/gfortran (ma sullo stesso sito anche per I compilatori C e C++ http://gcc.gnu.org/install/binaries.html ) Solo Windows: Silverfrost Compilatore ed ambiente integrato. Java : Java Development Kit (JDK)