Edsger
Wybe Dijkstra เกิดในเมืองรอตเตอร์ดาม ประเทศเนเธอร์แลนด์
ในปี 1930 ทุกคนในครอบครัวล้วนเป็นบุคคลผู้ทรงความรู้ บิดาเป็นนักเคมีและมารดาเป็นนักคณิตศาสตร์
ตอนอายุได้ 12 ขวบ ท่านก็ได้เข้าเรียนในโรงเรียนสำหรับเด็กที่มีปัญญายอดเยี่ยม
ตอนอายุ 15 ปีท่านมีความคิดอยากจะเรียนกฎหมาย แต่ท่านได้คะแนนดีในวิชาเคมี
คณิตศาสตร์ และฟิสิกส์ ท่านจึงตัดสินใจเรียนฟิสิกเชิงทฤษฎีส์ที่มหาวิทยาลัย
Leiden ขณะที่เรียนท่านได้ทำงานพิเศษที่ศูนย์คณิตศาสตร์ในอัมส์เตอร์ดาม
และนั่นเองที่เป็นจุดเริ่มต้นที่ท่านสนใจในการเขียนโปรแกรม
ทันที่ที่เรียนจบท่านก็อยากจะทำในสิ่งที่ท่านอยากทำคือเขียนโปรแกรม
แต่การเขียนโปรแกรมยังไม่เป็นที่นิยมและชื่นชมในสมัยนั้น ท่านจึงยอมเป็นศาสตราจารย์ด้านฟิสิกส์เชิงทฤษฎี
อย่างไรก็ตามท่านก็ไม่ได้ทิ้งงานที่ศูนย์คณิตศาสตร์ จนกระทั่งท่านได้ทำงานที่บริษัท
Burroughs ในสหรัฐอเมริกา ท่านได้รับรางวัล ACM Turing Award
ในปี ค.ศ. 1972 ซึ่งเป็นรางวัลสูงสุดของบุคคลในวงการคอมพิวเตอร์
และท่านได้เป็นศาสตราจารย์ที่มหาวิทยาลัยเท็กซัสในปี 1984
ในปี
1956 ท่านได้คิดอัลกอริทึมหรือวิธีการหาระยะทางที่สั้นที่สุดหรือดีที่สุด
"shortest-path algorithm" อัลกอริทึมนี้ช่วยในการหาเส้นทางที่ดีที่สุดในการเดินทางระหว่างสองจุดหรือสองที่
ซึ่งสามารถนำไปประยุกต์ใช้ได้หลายงานเช่น การออกแบบวงจรไฟฟ้าให้ใช้สายทองแดงสั้นที่สุด
และด้วยวิธีนี้เองทำให้วิศวกรสร้างคอมพิวเตอร์ ARMAC ในเวลาต่อมา
สายทองแดงสั้น นั่นหมายถึงระยะเวลาในการส่งสัญญาณไฟฟ้าสั้นลงด้วย
ภายหลังแนวความคิดนี้ได้ถูกนำไปใช้กับการออกแบบวงจรภายในหน่วยประมวลผลและหน่วยความจำ
เพื่อเพิ่มความเร็วในการสื่อสารข้อมูลภายในคอมพิวเตอร์เอง
หรือแม้แต่ในการส่งข้อมูลระหว่างคอมพิวเตอร์ในระบบเครือข่ายซึ่งต้องหาเส้นทางเพื่อที่จะส่งข้อมูลได้เร็วที่สุดเช่นกัน
ผลงานที่สำคัญอีกอย่างหนึ่งการแก้ปัญหาการกินอาหารของนักปราชญ์
"dining philosophers problem" โจทย์มีอยู่ว่า มีนักปราชญ์อยู่
5 คนกำลังร่วมวงรับประทานอาหารเย็นกัน กลางโต๊ะอาหารนั้นมีอาหารอยู่เพียงจานเดียวและแต่ละคนมีจาน
1 ใบและมีตะเกียบวางอยู่ข้างจานด้านละอัน แต่ละคนจะต้องมีตะเกียบ
2 อันจึงจะกินอาหารได้ดังรูป
คำถามคือ
นักปราชญ์จะมีวิธีกินอย่างไรที่ต้องไม่เกิดสถานการณ์ที่สองคนที่อยู่ติดกันจะกินพร้อมกัน
ไม่มีใครที่ไม่ได้กิน และทุกคนได้กินอย่างยุติธรรมคือได้กินเท่ากัน
เพื่อน ๆ ลองแก้ปัญหาดูนะครับ
เหตุการณ์นี้เกิดขึ้นได้ในการทำงานของระบบปฏิบัติการ
ในกรณีที่มีงานหลาย งานเข้ามาใช้งานหน่วยประมวลผลพร้อมกัน
โดยที่งานเหล่านั้นต้องการทรัพยากรซึ้ากัน ต่างฝ่ายต่างรอให้มีการทำงานเกิดขึ้น
จึงไม่สามารถทำงานต่อได้ เช่น ในขณะที่ผู้ใช้สองคนใช้งานข้อมูลของตนเองอยู่
และต่างก็ต้องการใช้ข้อมูลของอีกฝ่ายที่ถูกใช้งานอยู่นั้นด้วย
จึงทำให้เกิดสภาวะนี้ขึ้น เรียกว่าสภาวะติดตายหรือ deadlock
ส่วนปัญหาที่มีคนที่ไม่ได้กินอาหารก็เทียบได้กับเหตุการณ์ที่งานที่รอคอยที่จะได้เข้าประมวลผล
แต่ไม่มีโอกาส เรียกว่า สภาวะอดอดอาหาร หรือ starvation นั่นเอง
นอกจากนี้เข้าได้เขียนเอกสารวิชาการ
กล่าวถึงข้อเสียของการเขียนโปรแกรมที่มีการกระโดดข้ามการทำงานด้วยคำสั่ง
GOTO (มาจาก go to: เป็นประโยคคำสั่งในภาษาคอมพิวเตอร์หลายภาษา
เป็นการสั่งให้โปรแกรมข้ามไปทำงานตรงตำแหน่งที่ระบุ) บ่อย
ๆ ว่ามีข้อเสียในการติดตามการทำงานของโปรแกรม ทำให้โปรแกรมซับซ้อนและแก้ไขได้ยากในกรณีที่เกิดข้อผิดพลาด
|