Quale compito affidò Dijkstra ai volontari, menzionato nel suo articolo "L'umile programmatore"?


65

Nell'articolo di Humble Programmer di Dijkstra , afferma che ha dato ad alcuni volontari un problema da risolvere:

“Ho condotto un piccolo esperimento di programmazione con volontari con esperienza, ma è emerso qualcosa di non intenzionale e inaspettato. Nessuno dei miei volontari ha trovato la soluzione ovvia ed elegante. A un'analisi più approfondita ciò si rivelò avere una fonte comune: la loro nozione di ripetizione era così strettamente connessa all'idea di una variabile controllata associata da intensificare, che furono mentalmente bloccati dal vedere l'ovvio. Le loro soluzioni erano meno efficienti, inutilmente difficili da capire, e ci sono voluti molto tempo per trovarle. ”

Qual è stato il problema che Dijkstra ha dato ai volontari? Quali erano le soluzioni?


3
Scommetto su qualcosa di ricorsivo. EWD654 "In onore di Fibonacci" sembra essere un buon candidato
moscerino

Questa domanda potrebbe andare bene finché le persone non la usano come un'opportunità per indovinare o speculare: può essere difficile da scoprire, ma ha una risposta e qui le domande storiche sono in argomento.

9
Quella citazione proviene da EWD340 "Very Humble Programmers". Non sono riuscito a trovare una descrizione esatta dell'esperimento, ma ecco un link alla trascrizione del suo intervento completo. cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html
Tyler Ferraro,

2
Qualcuno può trovare un preventivo Dijkstra gratuito per qualsiasi cosa? La mia citazione preferita su di lui è "l'arroganza nell'informatica si misura nei nano-Dijkstras" - Alan Kay
James Anderson,

Dobbiamo stare molto attenti quando diamo consigli ai giovani: a volte lo seguono! ... heh :-) fonte: en.wikiquote.org/wiki/Edsger_W._Dijkstra
Robert French,

Risposte:


11

Il "problema dei filosofi da pranzo" era il problema presentato.

Fondamentalmente ci sono 5 filosofi che devono mangiare. (immagina un piatto di cibo senza fine davanti a ogni filosofo), tra ogni piatto c'è una forchetta (5 piatti, 5 forchette, 5 filosofi).

Un filosofo può mangiare solo se tiene sia la forchetta a destra che la forchetta a sinistra. (solo due filosofi possono mangiare in un dato momento).

Una forcella può essere ritirata ogni volta che è disponibile e posata se viene trattenuta. Ogni forcella deve essere raccolta in modo interdipendente. (uno alla volta).

Mentre un filosofo non sta mangiando, stanno pensando (la necessità di alternare stati è ciò che guida il problema).

Come permetti a ciascuno di loro di mangiare e di alternare il pensiero (in modo che gli altri possano mangiare) senza creare un sistema deadlock (in cui un filosofo tiene una forchetta e aspetta l'altra, impedendo a un altro filosofo di mangiare).

Questo ha le sue radici nei sistemi concorrenti ed è una tipica domanda universitaria presentata quando si discute di Concorrenza.

Credo che siano stati sviluppati 4 o 5 algoritmi "ufficiali" per risolvere il problema, ma una rapida ricerca su google per "Problema dei filosofi da pranzo" ti farà ottenere una vaneità di risultati.

Se leggi la versione originale dell'articolo nelle note a pagina 866, si legge: "Atti del Congresso IFIP 1965, 213-217." Soluzioni di un problema nel controllo di programmazione concorrente ".

Il problema della concorrenza e delle risorse condivise è il "Problema dei filosofi da pranzo". :-)

Spero che aiuti.


6
Dal momento che questa è principalmente una domanda storica, qualche fonte?
yannis,

1
In realtà no, le fonti fornite non sembrano fare riferimento al problema dei filosofi da pranzo come quello che Dijkstra ha dato ai volontari. Mi sto perdendo qualcosa? Quello che sto cercando sono fonti credibili per supportare il tuo "problema dei filosofi da pranzo" era il problema presentato , non le descrizioni del problema stesso (anche se i tuoi collegamenti sono altamente informativi e interessanti).
yannis,

@Robert Grazie per i collegamenti. :) (non rimuoverli, potrebbero essere utili agli altri) Non vedo l'ora se fosse il problema che ha dato.
user712092,

4
@RobertFrench Quello che stiamo cercando è qual è stato il problema specifico menzionato da Dijkstra nella citazione nella domanda e dalle fonti che lo provano, non solo da qualsiasi problema formulato da Dijkstra. Non c'è nulla nella citazione che suggerisca persino che fosse uno dei suoi problemi, potrebbe essere davvero un problema. Naturalmente i filosofi di Dining sono uno degli originali di Dijkstra (con l'aiuto di CAR Hoare), nessuno lo sta discutendo, ma questo non ha nulla a che fare con la domanda .
yannis,

4
Questo è semplicemente sbagliato. "Soluzioni di un problema nel controllo di programmazione concorrente" è il problema dei filosofi da pranzo, ed è indicato nell'Humble Programmer come uno dei primi lavori di Dijkstra nella citazione, ma affermare che è anche il problema nella citazione non è verificabile.
yannis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.