Dijkstra, “The Humble Programmer” adlı makalesinde belirtilen gönüllülere hangi görevi verdi?


65

In Dijkstra'nın kağıt "Mütevazi Programcı" , kendisinin bazı gönüllülere çözmek için bir sorun verdi bahseder:

“Gerçekten deneyimli gönüllülerle küçük bir programlama denemesi yaptım, ancak oldukça istenmeyen ve beklenmedik bir şey ortaya çıktı. Gönüllülerimin hiçbiri bariz ve en zarif çözümü bulamadı. Daha yakından analiz edildiğinde, bunun ortak bir kaynağa sahip olduğu ortaya çıktı: tekrarlama nosyonları, adım atmak için ilişkili bir kontrollü değişken fikrine o kadar sıkı bir şekilde bağlıydı ki, barizleri görmeleri zihinsel olarak engellendi. Çözümleri daha az verimliydi, gereksiz yere zordu ve onları bulmak çok zaman aldı. ”

Dijkstra'nın gönüllülere verdiği problem neydi? Çözümler neydi?


3
Özyineli bir şeye bahse girerim. EWD654 "Fibonacci'nin onuruna" iyi bir aday gibi görünüyor
gnat

Bu soru, insanlar bunu tahmin etmek veya tahmin etmek için bir fırsat olarak kullanmadıkları sürece iyi olabilir: öğrenmesi zor olabilir, ancak bir cevabı var ve burada tarihsel sorular var.

9
Bu alıntı EWD340 "Çok Mütevazı Programcılar" dan geldi. Deneyin ne olduğuna dair tam bir açıklama bulamadım, ancak tam konuşmasının yazılı metnine bir link. cs.utexas.edu/~EWD/transentations/EWD03xx/EWD340.html
Tyler Ferraro

2
Herhangi biri bir şey hakkında ücretsiz olan bir Dijkstra fiyat teklifi bulabilir mi? Onun hakkındaki en sevdiğim alıntı "bilgisayar bilimlerindeki kibir nano-Dijkstras cinsinden ölçülüyor" - Alan Kay
James Anderson

Genç insanlara tavsiyelerde bulunurken çok dikkatli olmalıyız: bazen izlerler! ... heh :-) Kaynak: en.wikiquote.org/wiki/Edsger_W._Dijkstra
Robert French

Yanıtlar:


11

"Yemek filozofları sorunu" sunulan problemdi.

Temelde, yemesi gereken 5 filozof var. (Her filozofun önünde hiç bitmeyen bir tabak hayal edin), her tabak arasında bir çatal (5 tabak, 5 çatal, 5 filozof).

Bir filozof ancak çatalı hem sağa hem de çatalı sola tutuyorsa yiyebilir. (herhangi bir zamanda yalnızca iki filozof yiyebilir).

Kullanılabilir olduğu zaman bir çatal toplanabilir ve tutulursa bırakılabilir. Her çatal birbirine bağlı olarak toplanmalıdır. (bir seferde bir).

Bir filozof yemek yemezken, düşünüyorlar (alternatif durumlara ihtiyaç duyma, sorunu yönlendiren şeydir).

Birinin (bir filozofun bir çatalı tutup diğerini beklediği, başka bir filozofun yemek yemesini önlediği), kilitlenmeyen bir sistem oluşturmadan, her birinin düşünme ve alternatif düşünme (diğerlerinin yiyebilmesi için) yapmalarına nasıl izin verirsiniz?

Bunun kökleri eşzamanlı sistemlerde var ve Concurrency'i tartışırken sunulan tipik bir üniversite sorusu.

Sorunu çözmek için 4 ya da 5 "resmi" algoritmanın geliştirildiğine inanıyorum, ancak "Yemek felsefecileri sorunu" için Google’da hızlı bir arama yapılması size çeşitli sonuçlar verecektir.

Eğer varsa kağıdın orijinal versiyonunu okumak sayfa 866 üzerinde dipnotlar belirtir: "IFIP Kongresi'nde 1965, 213-217 Bildirileri." Eşzamanlı programlama kontrolünde bir sorun nedeniyle Çözümler ".

Eşzamanlılık ve paylaşılan kaynaklardaki sorun "Yemek Felsefesi Sorunu" dur. :-)

Umarım yardımcı olur.


6
Bu temelde tarihi bir soru olduğundan, herhangi bir kaynak var mı?
yannis

1
Aslında hayır, sağladığınız kaynaklar, Dijkstra'nın gönüllülere verdiği gibi Yemek felsefecileri sorununa referans vermiyor gibi görünüyor. Bir şey mi eksik? Aradığım şey, “Yemek filozofları problemi” nizi desteklemek için güvenilir kaynaklar. Sorunun kendi tanımları değil, sunulan bağlantı sorun oldu (bağlantılarınız oldukça bilgilendirici ve ilginç olsa da).
yannis

@Robert Bağlantılar için teşekkürler. :) (onları kaldırmayın, başkalarına yararlı olabilirler) Verdiği sorunun olup olmadığını dört gözle bekliyorum.
user712092

4
@RobertFrench Aradığımız şey Dijkstra'nın söz konusu alıntıda bahsettiği spesifik problemin neydi ve sadece Dijkstra'nın formüle ettiği herhangi bir problemi değil, bunu ispatlayan kaynaklar. Alıntıda kendi sorunlarından biri olduğunu öne süren hiçbir şey yok, gerçekten de herhangi bir sorun olabilir. Tabii ki Yemek filozofları Dijkstra'nın orijinallerinden biri (CAR Hoare'den yardım alarak), kimse bunu tartışmıyor, ancak bunun soru ile ilgisi yok .
yannis

4
Bu sadece düz yanlış. "Eşzamanlı programlama kontrolünde bir problemin çözümü" Yemek Felsefesi Sorunu'dur ve Humble Programcısında, Dijkstra'nın alıntıdaki önceki çalışmalarından biri olarak bahsedilir, ancak alıntıdaki sorunun da doğrulanamaz olduğunu iddia eder.
yannis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.