Lavoro fatto con cura... ripercorre tutti i passi salienti della vita di un grande... costruzione a partire dalle sue memorie e SENZA l'ausilio di wikipedia.
Spero sia utile a qualcuno.
International Journal of Engineering Research and DevelopmentIJERD Editor
Electrical, Electronics and Computer Engineering,
Information Engineering and Technology,
Mechanical, Industrial and Manufacturing Engineering,
Automation and Mechatronics Engineering,
Material and Chemical Engineering,
Civil and Architecture Engineering,
Biotechnology and Bio Engineering,
Environmental Engineering,
Petroleum and Mining Engineering,
Marine and Agriculture engineering,
Aerospace Engineering.
International Journal of Engineering Research and DevelopmentIJERD Editor
Electrical, Electronics and Computer Engineering,
Information Engineering and Technology,
Mechanical, Industrial and Manufacturing Engineering,
Automation and Mechatronics Engineering,
Material and Chemical Engineering,
Civil and Architecture Engineering,
Biotechnology and Bio Engineering,
Environmental Engineering,
Petroleum and Mining Engineering,
Marine and Agriculture engineering,
Aerospace Engineering.
La Institución educativa Elias Mejia Angel cuenta con 403 estudiantes de estratos bajos que presentan problemas de consumo de drogas y alcohol, bajo rendimiento académico e inasistencia. Para formar a los estudiantes de manera integral y minimizar estos problemas, la escuela implementará estrategias de emprendimiento social desde preescolar hasta grado 11, incluyendo contenidos flexibles, aprendizaje basado en proyectos, y ferias para desarrollar habilidades emprendedoras y mejorar la calidad educativa. Los docentes comprometidos
This document provides a curriculum vitae for Yelena Istileulova. It outlines her educational background which includes degrees from universities in Kazakhstan, the UK, USA, and current PhD studies in Slovenia. It also details her extensive professional experience managing projects for international organizations and conducting evaluations, consultancy and expert work for the EU. Finally, it lists her achievements, awards, skills and publications in the field of management, higher education and project evaluation.
Microkeeper is payroll and timekeeping software that offers:
- Automated payslip generation from time and attendance data including breaks, overtime rules and leave accrual.
- Integration with accounting software like Xero and payroll clearing houses.
- Reporting and access from any device with internet access and 256-bit encryption for security.
- Time and attendance tracking via fingerprint, NFC cards/fobs or smartphones.
- Rostering and scheduling tools including SMS notifications and budgeting.
- Pricing starts at free for 1 employee and scales up based on number of employees.
International Journal of Engineering Research and DevelopmentIJERD Editor
Electrical, Electronics and Computer Engineering,
Information Engineering and Technology,
Mechanical, Industrial and Manufacturing Engineering,
Automation and Mechatronics Engineering,
Material and Chemical Engineering,
Civil and Architecture Engineering,
Biotechnology and Bio Engineering,
Environmental Engineering,
Petroleum and Mining Engineering,
Marine and Agriculture engineering,
Aerospace Engineering.
International Journal of Engineering Research and DevelopmentIJERD Editor
Electrical, Electronics and Computer Engineering,
Information Engineering and Technology,
Mechanical, Industrial and Manufacturing Engineering,
Automation and Mechatronics Engineering,
Material and Chemical Engineering,
Civil and Architecture Engineering,
Biotechnology and Bio Engineering,
Environmental Engineering,
Petroleum and Mining Engineering,
Marine and Agriculture engineering,
Aerospace Engineering.
La Institución educativa Elias Mejia Angel cuenta con 403 estudiantes de estratos bajos que presentan problemas de consumo de drogas y alcohol, bajo rendimiento académico e inasistencia. Para formar a los estudiantes de manera integral y minimizar estos problemas, la escuela implementará estrategias de emprendimiento social desde preescolar hasta grado 11, incluyendo contenidos flexibles, aprendizaje basado en proyectos, y ferias para desarrollar habilidades emprendedoras y mejorar la calidad educativa. Los docentes comprometidos
This document provides a curriculum vitae for Yelena Istileulova. It outlines her educational background which includes degrees from universities in Kazakhstan, the UK, USA, and current PhD studies in Slovenia. It also details her extensive professional experience managing projects for international organizations and conducting evaluations, consultancy and expert work for the EU. Finally, it lists her achievements, awards, skills and publications in the field of management, higher education and project evaluation.
Microkeeper is payroll and timekeeping software that offers:
- Automated payslip generation from time and attendance data including breaks, overtime rules and leave accrual.
- Integration with accounting software like Xero and payroll clearing houses.
- Reporting and access from any device with internet access and 256-bit encryption for security.
- Time and attendance tracking via fingerprint, NFC cards/fobs or smartphones.
- Rostering and scheduling tools including SMS notifications and budgeting.
- Pricing starts at free for 1 employee and scales up based on number of employees.
Introduzione all'elettronica con i microcontrollori: ArduinoStefano Varano
Spiegazione dell'accessibilità dell'elettronica da parte di artisti, designer e architetti con l'introduzione di schede di prototipazione rapida
Se lo volete riusare, per favore citate la fonte
Introduzione all'elettronica con i microcontrollori: ArduinoStefano Varano
Spiegazione dell'accessibilità dell'elettronica da parte di artisti, designer e architetti con l'introduzione di schede di prototipazione rapida
Se lo volete riusare, per favore citate la fonte
2. Biografia
• Madre matematico, padre chimico.
• Istruzione:
• Gymnasium Erasmianum a Rotterdam.
• Università di Leiden - Matematica e Fisica Teorica.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
3. “
”
Oh, no! Impara le formule e ricordati sempre che
sei sulla strada sbagliata se hai bisogno di
piu’ di cinquerighe.
Brechtje Cornelia Kluyver
… il suo stile sarà sempre caratterizzato da
SEMPLICITA’ ed ELEGANZA (qualità e correttezza)…
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
4. EDSAC
E’ il terzo computer della storia
a programma memorizzato
basato sull’ architettura di von Neumann.
Note tecniche:
• Composto da 3.000 valvole termoioniche;
• Input « schede perforate »;
• Output « telescrivente »;
• Superfice di 20 m2;
• Capacita di elaborazione 650 [istruzioni/secondo];
Settembre 1951 Cambridge - Corso programmazione
(Electronic Delay Storage Automatic Calculator)
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
5. 1952…
• Assunzione presso il dipartimento di calcolo al Centro Matematico di
Amsterdam.
• Contributo nella progettazione di:
• ARRA
• ARRA II
• FERTA
• ARMAC
Collaborazione con:
Scholten
Loopstra
Blaauw
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
6. “
”
Nel 1955 ho preso la decisione di non diventare un fisico teorico, ma un
programmatore [...] perche’ la programmazione rappresentava una sfida
intellettuale piu’grande.
Edsger Dijkstra
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
7. “
”
Nessuno di noi era stato formato come matematico[...] credo fermamente che
questo quadro,checomprendeva unasolida formazione in 5 linguestraniere,
abbiaavutouna grandeinfluenza sul modo incuiabbiamolavorato.
Edsger Dijkstra
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
8. ARRA I…
• Non funzionò mai correttamente…
alla sua presentazione si ruppe e da li non fu più riparato.
Note tecniche:
• 4 anni di sviluppo
• Composto da 1.200 relè connessi alla macchina
• Tempo di switch inaffidabile
• Input « nastro di carta perforata »
• Output « telescrivente »
• Memoria a tamburo
• 3 registri gestivano parole da 30 bit
• Assenza del Clock (segnale di « end-operation »)
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
9. ARRA II…
Una copia della macchina (FERTA) fu realizzata con qualche piccola
modifica per la Fokker (avionica).
Note tecniche:
• Non fu un evoluzione di ARRA I, ma una
macchina innovativa
• Introduzione del Clock di sistema
• Input « nastro di carta perforata »
• Output « telescrivente »
• Memoria a tamburo
(1024 parole – 2 istruzione per ogni parola)
• 2 registri
• Routine di controllo introdotte da Dijkstra
(inaffidabilità delle memorie a tamburo)
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
10. ARMAC…
• Successore ARRA II (50 volte più veloce)
• Ultima macchina del centro –
– poi società spin-off (Electrologica Nv)
• Coesistenza di memoria a tamburo e memoria
magnetica
• Registro di Jump (implementazione di subroutine
di «salto»)
• Completa divisione tra:
Progettazione e
Costruzione
Programmazione
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
11. “
”
La prima cosa che abbiamofatto èstata quella di scrivere un manuale diprogrammazione
per la prossima macchina, compresa la sua completa descrizione funzionale […] Questo
documento e’ servito da contratto tra me e loro: essi sapevano quello che avrebbero
dovutocostruireeiosapevoquellocheavrei dovutosviluppare.
…basi dell’analisi delle specifiche funzionali del Software…
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Edsger Dijkstra
12. “A note on two problemsin connectionwith graphs”
(1959)
Consideriamo n nodi, alcuni o tutti accoppiati, i quali sono connessi
da un ramo. Ogni ramo ha una lunghezza nota. Ci limitiamo al caso
in cui esiste almeno un percorso tra due nodi qualsiasi.
• Algoritmo dell’albero ricoprente minimo (o Minimum Spanning
Tree, MST).
• L’algoritmo dei cammini minimi (o Shortest Paths, SP), passato
poi alla storia come « L’ Algoritmo di Dijkstra ».
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
13. Algoritmodell’alberoricoprenteminimo
Problema 1: Costruire l’albero della lunghezza minima totale tra n nodi.
Definiamo
• « I » rami definitivamente assegnati all’albero in costruzione.
• « II » rami tra i quali il prossimo ramo sarà aggiunto a I.
• « III » rami scartati o non ancora considerati.
• « A » nodi connessi dai rami I.
• « B » nodi rimanenti tali che uno ed uno solo ramo II porterà ad essi.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
14. Algoritmodell’alberoricoprenteminimo
Poniamo:
• Arbitrariamente un solo nodo come unico nodo A.
• Tutti i rami che terminano nel nodo A come rami di tipo II.
Step 1: Il più breve ramo II è promosso a I, quindi il nodo collegato è promosso ad A.
Step 2: Consideriamo i rami che vanno dal nuovo A ad ogni B. Se il ramo considerato è
più breve del rispettivo II, allora il primo rimpiazza il secondo (che viene scartato),
altrimenti viene scartato.
Ripetere: fino a quando non abbiamo più rami di tipo II e i nodi di tipo B.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
23. Algoritmodeicammini minimi
Problema 2: Trovare il cammino della lunghezza minima totale tra due nodi dati P e Q,
costruito in modo incrementale.
Definiamo
• « A » nodi per i quali il cammino minimo da P è noto.
• « B » nodi connessi ad almeno un A, tra i quali il prossimo nodo sarà aggiunto ad A.
• « C » nodi rimanenti.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
24. Algoritmodeicammini minimi
Definiamo:
• « I » rami che si trovano sul cammino minimo tra P e i nodi A.
• « II » rami tali che uno ed un solo ramo II porterà a ciascun B, tra i quali il prossimo
ramo sarà aggiunto a I.
• « III » rami scartati o non ancora considerati.
Poniamo:
• Tutti i nodi come C, tutti i rami come III.
• P come unico nodo A.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
25. Algoritmodeicammini minimi
Step 1:
• Ogni ramo che collega il nuovo A ad un B viene confrontato con i rispettivi II: se il
cammino è minore allora il primo sostituisce il secondo, altrimenti viene scartato.
• I nodi C collegati al nuovo A vengono promossi a B, i rispettivi rami a II.
Step 2:
• Ogni B può essere connesso a P in un solo modo: usando rami I ed un solo ramo II.
Il nodo B alla distanza minima da P è promosso ad A, il corrispondente ramo a I.
Ripetere: Fino a quando il nodo Q è promosso a tipo A.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
32. Linguaggio «ALGOL60» & «Compilatore»
Sviluppato congiuntamente da un comitato di informatici statunitense ed europeo
o Per quasi 30 anni considerato lo standard nella rappresentazione di algoritmi.
o Blocchi di istruzione delimitati da BEGIN END;
o Introdusse il concetto di Stack;
o Celebre la frase di Tony Hoare (inventore del quick sort);
« Qui c’è un linguaggio cosi avanzato che non è solo un
miglioramento rispetto ai suoi predecessori, ma anche rispetto ai suoi
successori »
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
33. “
”
Abbiamo scritto il compilatore in doppia copia, pienamente
consapevoliche stavamofacendola storia.
Apporto significativo di due grandi menti:
John Backus
Peter Naur
Edsger Dijkstra
Grammatiche
BNF
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
34. “Recursiveprogramming”
Definiamo:
• Subroutine (o funzione) un particolare costrutto sintattico che permette
di raggruppare, all'interno di programma « main » , una sequenza
di istruzioni in un unico blocco espletando così una determinata
operazione o elaborazione sui dati del programma, in modo tale che a
partire da determinati input restituisca determinati output.
«Stack, vettore e mutua esclusione» attribuiti a Dijkstra dall’Oxford Dictionary
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
(1960)
35. Considerazione iniziale:
• Ogni subroutine ha il proprio spazio di memoria privato.
Conseguenze:
• Spreco di memoria: Lo spazio allocato per tutte le subroutine è
generalmente maggiore di quello di cui hanno simultaneamente bisogno.
• Terminazione incorretta: impossibilità di chiamare una subroutine
mentre una o più precedenti attivazioni della stessa non sono ancora
terminate, senza perdere la possibilità di terminare correttamente in seguito.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“Recursiveprogramming”
(1960)
36. Stack
Idea: memorizzare una sequenza di unità informative, che cresce e decresce
da una sola estremità. Quando un’unità non interessa più viene rimossa.
n locazioni di memoria consecutiveStack pointer: quantità amministrativa
che punta alla prima locazione di
memoria libera
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
37. Analogia conle espressioni algebriche
Associando parentesi tonde alla operazioni di push e pop, si ottiene una
struttura nidificata corretta di parentesi tonde.
Lo stack è usato per memorizzare i risultati intermedi delle operazioni
elementari richieste nella valutazione di un’espressione algebrica.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
38. Stackreservations
All’interno di una subroutine distinguiamo:
• Parametri: argomenti della funzione.
• Variabili locali: introdotte dalla subroutine.
• Risultati intermedi: analoghi a quelli del main.
L’esecuzione di una subroutine richiede:
• Link: indirizzo dove salvare i dati dell’unità aritmetica nello stack.
• Return address: indirizzo per il ripristino dei dati dallo stack all’unità aritmetica.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
39. “
”
Le subroutine devono comparire solo una volta nella memoria, ma possono
avere piu’ « incarnazioni » da un punto di vista dinamico: l’attivazione « piu’
interna » provoca la stessa porzione di testo in una parte superiore dello stack.
Quindi la subroutine e’ sviluppata in un elemento definito che puo’ essere usato
in maniera completamente ricorsiva.
Edsger Dijkstra
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
40. • 1962 – nominato prof. di matematica presso l’Università
Technische Hogeschool di Eindhoven, (corso di Analisi numerica).
• Forma un piccolo gruppo di studenti (scienziati del computer)
che insieme a lui daranno i natali ad una serie di progetti
riguardanti:
Operating system T.H.E.
GoTo Statement & Programmazione strutturata
Risoluzione di problematiche relative alla
« programmazione concorrente ».
Introduzione a concetto di semaforo.
42. • I filosofi condividono un tavolo rotondo con 5 posti.
• Passano la vita pensando e mangiando
Problema
• Gli spaghetti sono difficili da mangiare; un filosofo
per mangiare deve usare due bacchette (risorse)
Conseguenza
• Due filosofi consecutivi, non potranno mai mangiare
contemporaneamente
Begin
think;
eat;
end
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
43. Semafori (Mutex)
Sezione critica
• è una porzione di codice che accede a
una risorsa condivisa, tra più processi in
esecuzione in un sistema concorrente
• Variabile intera non negativa «di scopo
speciale» ovvero garantire l’accesso in
mutua esclusione alla sezione critica
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
44. • Problema: «è necessario caratterizzare un processo in attesa»
• Soluzione: «tratteremo la variabile « s » non come un semplice valore integer,
ma con un significato particolare… quello di semaforo… e per far ciò essa
dovrà essere sempre non-negativa»
• Dijkstra definisce due operazioni atomiche complementari:
"prolagen" (testare & decrementare) P(s) : s : = s-1
"verhogen" (incrementare) V(S) : s : = s+1
1 0
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
45. • Ciò impone che:
• Sempre eseguita => incremento
• Se « S = 0 » => fase di verifica
operazione rigettata (vincolo violato).
processo in esecuzione passa in stato wait e viene posto in un buffer (di
processi relativi allo specifico semaforo) nell’attesa che un altro processo
esegua una V su di esso e risvegli un «dormiente» (FIFO) che potrà cosi
completarsi.
• Se « S = 1 » => decremento
V
P
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
47. Soluzione « strutture condivise »
• state [5] Vettore dello stato di ciascun filosofo
(valori possibili: PENSA {0}, AFFAMATO {1}, MANGIA{2})
• Mutex = 1 Semaforo per mutua esclusione in Sezione critica
- inizializzato a 1 - ( libero )
• prisem[5] = 0 Vettore di semafori mutex (uno per ogni risorsa -
forchetta-) inizializzato a 0 ( occupato )
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
48. while (TRUE) {
think();
take_forks(i);
eat();
put_forks(i);
}
Soluzione « definitiva »
Se le forchette non sono
libere si blocca
Segnala che le forchette
sono libere
Ogni filosofo [i] esegue questo pezzo di codice « concorrentemente »
con gli altri filosofi per tutta la durata della sua vita
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
49. {
P (mutex);
state[i] = AFFAMATO;
test(i);
V (mutex);
P (prisem[i]);
}
« take_fork(i) »
L’ i-esimo filosofo
segnala di essere affamato
L’i-esimo filosofo verifica se ha la
disponibilità delle due forchette
L’ i-esimo filosofo si blocca se le
forchette non sono libere; egli è
affamato ma deve aspettare che l’
(i-1)-esimo o (i+1)-esimo finisca
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
50. {
if (state[i] == AFFAMATO &&
state[(i+5-1) mod 5] != MANGIA &&
state[(i + 1) mod 5)] != MANGIA)
state[i] = MANGIA;
V(prisem[i]);
}
« test (i) »
sem[i] va a 1 solo se l’ i-esimo
filosofo può mangiare; altrimenti
esso si blocca dopo la test(i) nella
take_forks(i)
Forchetta a SX dell’
i-esimo filosofo
L’ i-esimo filosofo può mangiare
Forchetta a DX dell’
i-esimo filosofo
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
51. P (mutex);
state[i] = PENSA;
test ((i + 1) mod 5);
test ((i + 5 - 1) mod 5);
V (mutex);
« put_forks(i) »
Esso deve quindi allertare i vicini di
posto (DX e SX) che le sue forchette
sono libere
Se il filosofo i-esimo decide di
smettere di mangiare e tornare a
pensare
Se i filosofi DX e/o SX sono affamati (e quindi in attesa sul relativo semaforo
della risorsa ove hanno invocato la P in precedenza) e le loro forchette sono
libere, allora vengono sbloccati dalla test
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
52. • L’ algoritmo di Dijkstra « I 5 filosofi » risolve quindi 2 problematiche
critiche nella programmazione concorrente:
Il deadlock che può verificarsi se ciascuno dei filosofi tiene in mano una
forchetta senza mai riuscire a prendere l'altra
Come??? Con questo algoritmo, un filosofo prende le forchette solo se
sono entrambe libere…
La starvation che può verificarsi indipendentemente dal deadlock se uno dei
filosofi non riesce mai a prendere entrambe le forchette.
Come??? Utilizzando come meccanismo di mutua esclusione le code di
attesa, assicurando cosi un equo accesso alle risorse
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
53. SistemaOperativo<<THE >>
• 1° SO a strati della storia (6 ma in realtà solo una convenzione progettuale,
poiché tutte le parti del sistema venivano alla fine collegate insieme in un unico
programma oggetto).
• Sistema di tipo Batch
• Multi-programming System: processi concorrenti sequenziali cooperavano
mediante l’impiego di semafori per la sincronizzazione.
• Utilizzo di un algoritmo di schedulazione della CPU basato su priorità,
che venivano ricalcolate ogni 2 secondi ed erano inversamente proporzionali al
tempo in cui la CPU era stata usata recentemente (negli ultimi 8-10 secondi).
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
59. << Go to statement considered harmful
1968>>
<< Notes on Structured Programming
1969 >>
Problema Soluzione
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
60. “
”
La qualità dei programmi e’ una funzione decrescente della densità
di dichiarazioni GOTO […] sono sempre piu’ convinto che la struttura in
questione debba essere abolita da tutti i linguaggi di programmazione ad alto
livello.
EdsgerDijkstra
…The go to statement as it stands is just too primitive, it is too
much an invitation to make a mess of one's program…
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
61. • Un qualunque algoritmo può
essere implementato in codice
sorgente, pseudocodice o
diagramma di flusso,
utilizzando tre sole strutture
dette strutture di controllo:
I. la sequenza;
II. la selezione;
III. il ciclo (iterazione);
• Applicare ricorsiva ad istruzioni elementari (ad es. di istruzioni eseguibili con il
modello di base della macchina di Turing).
Teorema di Böhm-Jacopini
Operazioni I/O
Operazioni di
Assegnazione
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
62. “Notes on structured programming”
COMPUTAZIONE
• « Dimensionamento » in termini di
quantità di informazioni ed operazioni
coinvolte.
EFFICACIA
• « Organizzazione » delle risorse HW.
MASSIMA RESA
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
(1969)
63. “
”
Non si puo’ considerare la programmazione come la minimizzazione del
costo di una performance. L’arte di programmare e’ l’arte di organizzare
la complessità, di gestire ilcaos bastardo nelmodo piùefficacepossibile.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
EdsgerDijkstra
64. PROGRAMMAZIONE
• Costrutti e diagrammi di flusso:
• If-Then-Else;
• Case Of;
• While-Do;
• Repeat-Until;
• (In)affidabilità del Testing.
• « Linguaggio ad alto livello » ed astrazione dall’hardware sottostante.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“Notes on structured programming”
(1969)
65. CORRETTEZZA DI UN PROGRAMMA
• Programma ha senso solo durante l’esecuzione, un teorema ha senso di per sé.
• Programmazione ben strutturata attraverso successive scomposizioni.
dimostrazione di correttezza senza ricorrere a dispendioso processo intellettuale
Induzione per enumerazione Principio di induzione Astrazione
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“Notes on structured programming”
(1969)
66. “
”
Il programma e la prova di correttezza andrebbero sviluppati in parallelo.
Inizialmente ci si chiede quale struttura dovrebbe avere la dimostrazione, poi si
costruisce un programma per soddisfare i requisiti della stessa, infine lo si usa in
senso euristico. In questo modo il programma risulta corretto per costruzione.
Edsger Dijkstra
• Utilizzo di strutture ben conosciute e/o familiari.
• Scelta di programmi intellettualmente gestibili (soluzione algoritmica).
• Lunghezza delle dimostrazioni: a « misura d’uomo ».
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
67. • I grandi sistemi devono essere costruiti partendo da molti piccoli componenti;
• Ogni componente deve essere definito solo dalla sua interfaccia e non dalla sua
implementazione;
• La progettazione dovrebbe iniziare dalla “separazione degli interessi”, cioè
separando i diversi aspetti del problema e concentrando l’attenzione su
ciascuno di essi;
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“Notes on structured programming”
(1969)Filosofia
68. Algoritmodelbanchiere
“Een algorithme ter voorkoming van de dodelijke omarming” (EWD-108)
• Indica se un sistema, in cui operano processi concorrenti su
istanze di risorse disponibili, si troverebbe in uno stato sicuro o
meno, nel caso soddisfacesse una specifica richiesta di risorse da
parte di un determinato processo evitando una situazione di
deadlock.
• Il deadlock (o stallo) è una situazione in cui due o più processi si
bloccano a vicenda, aspettando che uno esegua una certa azione.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
70. • Fissata una situazione di allocazione di k-istanze di
m-risorse ad n-processi al tempo « t0 »
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
71. • Il processo P1 richiede l’allocazione di risorse (1,0,2)
• Ricavo il vettore Necessità (Max - Assegnate)
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
72. R ≤ N
R ≤ D
Simulazione
allocazione
risorse per Pj
D = D – R
A = A + R
N = N – R
Verifica:
Stato
SICURO
Assegnazione
effettiva delle
risorse
D = D – R
A = A + R
N = N – R
• Pj deve attendere.
• Ripristino vecchio
stato di allocazione
risorse
ERRORE.
Superato
Max n
richieste
• Pj deve
attendere.
• Risorse non
disponibili
si
si
sino
no
no
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
73. Sicuro
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“Simulazione”
• Il processo P1 richiede l’allocazione di risorse (1,0,2)
74. STATO SICURO
• Concetto introdotto da Dijkstra tra il 1965 e 1966 quando sviluppò il suo
sistema operativo multiprogrammabile THE.
• E’ uno stato in cui è possibile allocare tutte le risorse richieste
da un processo senza che quest'ultimo comporti
un deadlock con un altro processo.
• Osservazioni:
Uno stato sicuro non implica che tutte le allocazioni di risorse avverranno con
successo, MA solo che esiste almeno un modo sicuro per allocare tutte le risorse.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
82. • L’esecuzione dell’algoritmo di sicurezza mostra che la
sequenza < P1, P3, P4, P0, P2 >
soddisfa i requisiti di sicurezza.
• La Richiesta (1,0,2) può essere
soddisfatta senza rischiare un deadlock.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
83. … Oggi …
• Difficile applicazione
• costoso in termini economici.
• allocazione delle risorse non deterministica (concetto richiesto dall’Algoritmo
del Banchiere).
• la maggior parte dei S.O. non considera il problema di eventuali deadlock, in
quanto evento raro, data l'abbondanza delle risorse a disposizione.
• oggigiorno la gestione dei deadlock è sicuramente più critica nei database che
non nei sistemi operativi.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
84. “
”
L’induzione matematica puo’ portare ad argomentazioni molto compatte ed
efficaci – in breve: Belle! – e, quando riconosciamo la battaglia contro il
caos, il disordine e l’indomita complessita’, come una delle principali
vocazionidell’informatica,dobbiamoammettere che…
Edsger Dijkstra
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
BeautyisourBusiness
85. “The humble programmer” – Turing Award (1972)
La nostra metodologia di programmazione migliorerà se:
• Avremo apprezzamento della sua tremenda difficoltà.
• Utilizzeremo linguaggi di programmazione modesti ma
eleganti.
• Rispetteremo le intrinseche limitazioni della mente umana.
avvicinarsi alla programmazione UMILMENTE
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
A.C.M. – Association for Computing Machinery
86. «…unoceano tra me edilmio capo…»
• Ingresso nel mondo dell’industria (ricercatore presso la Burroughs
Corporation) – il grosso del lavoro nel suo studio a casa (Olanda).
• Fonda l’ETAC noto come il « Club del martedì pomeriggio ».
• Periodo florido per gli articoli.
• Forte attaccamento al mondo dell’ Università.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
87. “
”
Ventotto anni fa (1959) ho scritto EWD 0 […] dopo che ebbi mischiato le pagine tra i
manoscritti per la seconda volta, decisi che sarebbe stato meglio mettere fine alla
confusione e li numerai (Ewd0, Ewd1, Ewd3…).
Questo è ilmodo incui e’ iniziata.
Edsger Dijkstra
Le relazioni EWD
Un informale ma efficace veicolo di diffusione delle idee
Scritti con la macchina da scrivere o con la penna stilografica
L’ultimo (Ewd1318) risale all’ aprile 2002
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
88. UniversitàdelTexas–Austin–
• Cattedra di Informatica in cui ripercorre tutti gli argomenti
affrontati nella sua vita.
• La sua semplicità si nota anche dal suo stile di insegnamento:
tutto alla lavagna, senza proiettore e senza seguire un libro di
testo.
• Fonda l’ETAC noto come il « Club del martedì pomeriggio ».
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
89. Conclusioni
• Dijkstra lavorò tutta la vita alla professionalizzazione
accademica della programmazione ed all’autonomia
dell’informatica come scienza.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Computer inteso come strumento
90. In Memorium Edsger W. Dijkstra
« Semplicità,bellezza ed eloquenza sonostate le sue caratteristiche
distintive, e la sua insistenzasenza compromessi sull’eleganzanella
programmazione e sullamatematica e’ statauna fonte d’ispirazioneper
migliaia »
A.C.M. – Association for Computing Machinery
91. Grazie per la cortese attenzione…
Presentazione a cura di Nava Giovanni & Semperboni Cristian
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Editor's Notes
Team composto da:
1 ing meccanico con esperienza di calcolo numerico
2 fisici sperimentali
Lui fisico teorico in berbe
S Dijkstra realizza una relazione in cui elenca le istruzioni che mette a disposizione senza fornire come sono state realizzate….