Jakie zadanie powierzył wolontariuszom Dijkstra, o którym wspomniano w jego pracy „The Humble Programmer”?

65

W artykule Dijkstry „Humble Programmer” wspomina, że ​​dał niektórym ochotnikom problem do rozwiązania:

„Przeprowadziłem mały eksperyment programistyczny z naprawdę doświadczonymi wolontariuszami, ale pojawiło się coś zupełnie niezamierzonego i zupełnie nieoczekiwanego. Żaden z moich wolontariuszy nie znalazł oczywistego i najbardziej eleganckiego rozwiązania. Po bliższej analizie okazało się, że ma to wspólne źródło: ich pojęcie powtarzania było tak ściśle związane z ideą powiązanej kontrolowanej zmiennej, która ma zostać wzmocniona, że ​​mentalnie nie można było dostrzec oczywistości. Ich rozwiązania były mniej wydajne, niepotrzebnie trudne do zrozumienia, a znalezienie ich zajęło im bardzo dużo czasu. ”

W czym problem Dijkstra podał wolontariuszom? Jakie były rozwiązania?

użytkownik712092
źródło
3
Postawiłbym na coś rekurencyjnego. EWD654 „Na cześć Fibonacciego” wydaje się być dobrym kandydatem
komara
To pytanie może być w porządku, pod warunkiem, że ludzie nie wykorzystają go jako okazji do odgadnięcia lub spekulacji: może to być trudne do znalezienia, ale zawiera odpowiedź, a pytania historyczne są na ten temat.
9
Ten cytat pochodzi z EWD340 „Very Humble Programmers”. Nie byłem w stanie znaleźć dokładnego opisu eksperymentu, ale tutaj jest link do transkrypcji jego pełnej wypowiedzi. cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html
Tyler Ferraro
2
Czy ktoś może znaleźć wycenę Dijkstra, która jest do czegoś bezpłatna? Mój ulubiony cytat o nim brzmi: „arogancja w informatyce jest mierzona w nano-Dijkstrasie” - Alan Kay
James Anderson
Musimy być bardzo ostrożni, udzielając porad młodszym ludziom: czasami postępują zgodnie z nimi! ... heh :-) źródło: en.wikiquote.org/wiki/Edsger_W._Dijkstra
Robert French

Odpowiedzi:

11

Przedstawiony problem stanowił „Problem filozofów kulinarnych”.

Zasadniczo jest 5 filozofów, którzy muszą jeść. (wyobraź sobie talerz z niekończącym się jedzeniem przed każdym filozofem), między każdym talerzem znajduje się widelec (5 talerzy, 5 widelców, 5 filozofów).

Filozof może jeść tylko wtedy, gdy trzyma widelec po prawej i widelec po lewej. (tylko dwóch filozofów może jeść w danym momencie).

Widelec można podnieść w dowolnym momencie i odłożyć, jeśli jest trzymany. Każdy widelec musi być podnoszony niezależnie. (pojedynczo).

Podczas gdy filozof nie je, myśli. (Przyczyną problemu jest potrzeba naprzemiennych stanów).

Jak pozwalasz każdemu z nich jeść i naprzemiennie myśleć (aby inni mogli jeść) bez tworzenia zakleszczonego systemu (w którym jeden filozof trzyma jeden widelec i czeka na drugiego, uniemożliwiając innemu filozofowi jedzenie).

Ma to swoje korzenie w systemach współbieżnych i jest typowym pytaniem uniwersyteckim omawianym podczas omawiania Współbieżności.

Wierzę, że opracowano 4 lub 5 „oficjalnych” algorytmów, aby rozwiązać problem, ale szybkie wyszukiwanie w Google hasła „Problem filozofów kulinarnych” da ci bardzo różne wyniki.

Jeśli czytasz oryginalną wersję artykułu w przypisach na stronie 866, stwierdza on: „Postępowanie Kongresu IFIP 1965, 213–217”. „Rozwiązania problemu w jednoczesnej kontroli programowania”.

Problemem współbieżności i współdzielonych zasobów jest „Problem filozofów kulinarnych”. :-)

Mam nadzieję, że to pomaga.

Robert French
źródło
6
Ponieważ jest to głównie pytanie historyczne, jakieś źródła?
yannis
1
Właściwie nie, źródła, które podajesz, nie odnoszą się do problemu filozofów kulinarnych, takiego jak ten, który Dijkstra podał wolontariuszom. Czy coś brakuje? To, czego szukam, to wiarygodne źródła wsparcia dla twojego problemu „Problem filozofów kulinarnych” to zgłoszony problem , a nie opis samego problemu (chociaż twoje linki są bardzo pouczające i interesujące).
yannis
@Robert Dzięki za linki. :) (nie usuwaj ich, mogą być przydatne dla innych) Nie mogę się doczekać, czy to był problem, który podał.
user712092,
4
@RobertFrench To, czego szukamy, to był konkretny problem, o którym wspomina Dijkstra w cytacie w pytaniu, oraz źródła, które to potwierdzają, a nie tylko problem sformułowany przez Dijkstrę. W cytacie nie ma nic, co sugerowałoby, że był to jeden z jego własnych problemów, może to być naprawdę każdy problem. Oczywiście filozofowie gastronomii to jeden z oryginałów Dijkstry (z pewną pomocą CAR Hoare), nikt o tym nie debatuje, ale to nie ma nic wspólnego z pytaniem .
yannis
4
To jest po prostu źle. „Rozwiązania problemu w sterowaniu programowaniem współbieżnym” to problem filozofów gastronomicznych, który jest przywoływany w Humble Programmer jako jeden z wcześniejszych prac Dijkstry w cytacie, ale twierdzenie, że jest to również problem w cytacie, jest niemożliwe do zweryfikowania.
yannis