Яке завдання Дайкстра дав волонтерам, про що згадувалося у його праці «Скільний програміст»?


65

У роботі Діккстра "Скірний програміст" він згадує, що дав деяким волонтерам проблему вирішити:

«Я провів невеликий експеримент з програмуванням із справді досвідченими волонтерами, але виникла щось зовсім ненавмисне та зовсім несподіване. Жоден з моїх волонтерів не знайшов очевидного і найелегантнішого рішення. При більш детальному аналізі виявилося, що це спільне джерело: їх поняття повторення було настільки тісно пов'язане з ідеєю асоційованої керованої змінної, яку потрібно посилити, що вони подумки були заблоковані вбачанні очевидного. Їх рішення були менш ефективними, непотрібними для розуміння, і знадобилося дуже багато часу, щоб знайти їх ».

У чому була проблема, яку Дайкстра надав волонтерам? Які рішення були?


3
Я ставлю на щось рекурсивне. EWD654 "На честь Фібоначчі", здається, хороший кандидат
гнат

Це питання може бути добре, доки люди не використовуватимуть це як можливість здогадуватися або міркувати: це може бути важко дізнатися, але у нього є відповідь, а історичні питання тут є актуальними.

9
Ця цитата надійшла від EWD340 "Дуже скромні програмісти". Я не зміг знайти точного опису, що таке експеримент, але ось посилання на стенограму його повної розмови. cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html
Тайлер Ферраро

2
Чи може хтось знайти цитату Діккстра, яка ні про що не дає ніякого відгуку? Моя улюблена цитата про нього - "зарозумілість у інформатиці вимірюється нано-Дейкстрасом" - Алан Кей
Джеймс Андерсон

Ми повинні бути дуже обережними, коли даємо поради молодим людям: іноді вони йдуть за нею! ... heh :-) Джерело: en.wikiquote.org/wiki/Edsger_W._Dijkstra
Роберт Френч

Відповіді:


11

"Проблема філософів, які обідають", була представлена ​​проблема.

В основному є 5 філософів, яким потрібно їсти. (уявіть собі тарілку, коли ніколи не закінчується їжа перед кожним філософом), між кожною тарілкою - виделка (5 тарілок, 5 виделок, 5 філософів).

Філософ може їсти лише в тому випадку, якщо він тримає як виделку праворуч, так і виделку ліворуч. (в будь-який час можна їсти лише два філософи).

Вилку можна забрати в будь-який час, коли вона є, і відкласти її, якщо вона тримається. Кожну вилку потрібно підбирати взаємозалежно. (по одному).

Поки філософ не їсть, вони думають (необхідність чергувати стани - це те, що рухає проблемою).

Як ви дозволяєте кожному з них їсти і чергувати мислення (так можуть їсти інші), не створюючи тупикової системи (де один філософ тримає одну вилку і чекає іншої, не даючи іншому філософу їсти).

Це має коріння в паралельних системах і є типовим питанням університету, що виникає під час обговорення Конкурсу.

Я вважаю, що для вирішення проблеми було розроблено 4 або 5 "офіційних" алгоритмів, але швидкий пошук в Google за "проблемою філософів, що їдять", отримає ваші результати.

Якщо ви читаєте оригінальну версію статті у виносках на сторінці 866, в ній зазначено: "Матеріали Конгресу IFIP 1965, 213-217." Рішення проблеми в паралельному керуванні програмуванням ".

Проблема в одночасності та спільних ресурсах - "Проблема філософів, що їдять". :-)

Сподіваюся, що це допомагає.


6
Оскільки це в основному історичне питання, які джерела?
янніс

1
Насправді ні, джерела, які ви надаєте, ніби не посилаються на проблему філософів, які їдять, як та, яку Дайкстра дав волонтерам. Я щось пропускаю? Що я шукаю - це достовірні джерела для підтвердження вашої проблеми "Філософи, що подають їжу ", - це проблема, яка була подана , а не описи самої проблеми (хоча ваші посилання є дуже інформативними та цікавими).
янніс

@Robert Дякую за посилання. :) (не видаляйте їх, вони можуть бути корисними для інших) Я з нетерпінням чекаю, чи це було проблемою, яку він дав.
користувач712092

4
@RobertFrench Те, що ми шукаємо, - це яка конкретна проблема, яку Дійкстра згадує у цитаті у запитанні, та джерела, які це підтверджують, а не будь-яка проблема, яку сформулював Дійкстра. У цитаті немає нічого, що навіть припускає, що це була одна з його власних проблем, це справді може бути будь-яка проблема. Звичайно, філософи "Їдальня" - це один із оригіналів Діккстри (за деякої допомоги від ЦАР Хоара), про це ніхто не обговорює, але це не має нічого спільного з питанням .
янніс

4
Це просто неправильно. "Рішення проблеми в одночасному керуванні програмуванням" - це проблема філософів, що подає їжу, і в програмі Humble вона посилається на одну з попередніх робіт Дійкстри в цитаті, але стверджує, що проблема також у цитаті не підтверджується.
янніс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.