คลังเอกสารต้นฉบับของ Edsger W. Dijkstra
(cs.utexas.edu)- คลังออนไลน์ที่เก็บรักษางานวิจัยและงานเขียนของ Edsger W. Dijkstra หนึ่งในผู้บุกเบิกยุคก่อตั้งวิทยาการคอมพิวเตอร์
- ครอบคลุมผลงานในสาขาหลัก เช่น การออกแบบอัลกอริทึม, ภาษาโปรแกรม, ระบบปฏิบัติการ, การประมวลผลแบบกระจาย, การตรวจพิสูจน์เชิงรูปแบบ
- เปิดเผยต้นฉบับหมายเลข EWD ที่เขียนตลอดกว่า 40 ปีมากกว่า 1,000 ชิ้นในรูปแบบ PDF พร้อม ฉบับถอดความและฉบับแปล ที่ค้นหาได้
- จัดระเบียบข้อมูลเสริมอย่างเป็นระบบ เช่น การอ้างอิงข้ามระหว่างต้นฉบับ, บทสรุป, ข้อมูลลิขสิทธิ์, วิดีโอบรรยายและสัมภาษณ์
- เป็นฐานความรู้ที่เชื่อมต่อไปยัง ชุดปาฐกถาที่ระลึก และชุมชนวิจัยที่สืบทอดแนวคิดกับปรัชญาการศึกษาของ Dijkstra
ชีวิตและผลงานของ Dijkstra
- Edsger Wybe Dijkstra เป็นหนึ่งในบุคคลสำคัญที่วางรากฐานให้วิทยาการคอมพิวเตอร์ โดยสร้างคุณูปการระดับพื้นฐานในหลายด้าน เช่น การออกแบบอัลกอริทึม ภาษาโปรแกรม ระบบปฏิบัติการ การประมวลผลแบบกระจาย ข้อกำหนดเชิงรูปแบบ และการออกแบบการพิสูจน์ทางคณิตศาสตร์
- ตลอดเส้นทางอาชีพกว่า 40 ปีที่ครอบคลุมทั้งภาควิชาการและอุตสาหกรรม เขาได้รับรางวัลมากมาย รวมถึง ACM Turing Award
- เขายังให้ความสนใจอย่างลึกซึ้งต่อความสัมพันธ์ระหว่างการศึกษา วิทยาการคอมพิวเตอร์เชิงวิชาการ และอุตสาหกรรมซอฟต์แวร์
คอลเลกชันต้นฉบับ EWD
- ตลอดเวลากว่า 40 ปี Dijkstra ติดต่อโต้ตอบกับเพื่อนนักวิทยาศาสตร์อย่างคึกคัก และเผยแพร่ บันทึกเชิงเทคนิค รายงานการเดินทาง และข้อคิดเห็นที่มีหมายเลขต่อเนื่อง ภายใต้ชื่อ “EWDs”
- ด้วยการแพร่หลายของเครื่องถ่ายเอกสารและความสนใจที่สูง การแจกจ่ายแบบไม่เป็นทางการจึงมีจำนวนถึงหลายพันฉบับ
- แม้ต้นฉบับส่วนใหญ่จะไม่เคยตีพิมพ์ แต่ภาควิชาวิทยาการคอมพิวเตอร์แห่งมหาวิทยาลัยเท็กซัสได้ เก็บถาวรมากกว่า 1,000 ชิ้นอย่างถาวรในรูปเอกสาร PDF แบบบิตแมป
- ต้นฉบับต้นทาง สมุดบันทึก จดหมาย และภาพถ่าย ถูกเก็บรักษาไว้ที่ Briscoe Center for American History ของมหาวิทยาลัยเท็กซัส
ดัชนีและวิธีเข้าถึง
- มีดัชนีให้สองแบบ
- ดัชนี BibTeX: มีข้อมูลบรรณานุกรม
- ดัชนีเฉพาะกิจ (Ad-hoc): แสดงเฉพาะชื่อเรื่องเพื่อให้ค้นหาได้รวดเร็ว
- มีตารางเทียบหมายเลข EWD กับปีที่เผยแพร่ รวมถึงลิงก์ไปยังรายงานทางเทคนิคของศูนย์คณิตศาสตร์ (CWI) วิทยานิพนธ์ปริญญาเอก และเอกสารอื่น ๆ
- ต้นฉบับบางส่วนได้รับการตีพิมพ์แล้ว และ ลิขสิทธิ์ของเอกสารเหล่านั้นเป็นของสำนักพิมพ์
การถอดความและการแปล
- มีการเพิ่ม ฉบับถอดความที่ค้นหาได้ เพื่อผู้พิการทางสายตาอย่างต่อเนื่อง
- ต้นฉบับภาษาดัตช์บางส่วนถูกแปลเป็นอังกฤษ, EWD1036 เป็น ภาษาสเปน, และ EWD28 เป็น ภาษารัสเซีย
- มี อาสาสมัคร มากกว่า 60 คนเข้าร่วมงานถอดความ และหากพบข้อผิดพลาดสามารถส่งอีเมลเสนอแก้ไขได้
- ขณะนี้ได้หยุดรับทรัพยากรแปลใหม่ชั่วคราว เนื่องจากปัญหาเรื่องความถูกต้องของคำแปล
การเชื่อมโยงระหว่างต้นฉบับและบทสรุป
- มี รายการอ้างอิงข้ามระหว่าง EWD ที่จัดทำโดย Diethard Michaelis และผู้อ่านสามารถช่วยเพิ่มเติมได้
- Dijkstra มักกลับมาพูดถึงหัวข้อเดิมซ้ำพร้อมนำเสนอมุมมองใหม่ ๆ และเอกสารที่เกี่ยวข้องจะเชื่อมโยงกันด้วยลิงก์ “see also”
- ตามข้อเสนอของ Günter Rote จึงเริ่มมีการเพิ่มบทสรุปของ EWD โดยเฉพาะอย่างยิ่งยินดีรับบทสรุปภาษาอังกฤษของต้นฉบับภาษาดัตช์
ลิขสิทธิ์
- ลิขสิทธิ์ของ EWD ส่วนใหญ่เป็นของ บุตรของ Dijkstra และ Rutger M. Dijkstra เป็นผู้รับผิดชอบคำขออนุญาตเผยแพร่ซ้ำ
- เอกสารที่ตีพิมพ์แล้วนั้น สำนักพิมพ์ เป็นผู้ถือครองลิขสิทธิ์ และมีการให้รายชื่อพร้อมข้อมูลหน้าปก
- ต้นฉบับต้นทางเป็นทรัพย์สินของ Briscoe Center for American History และอยู่ภายใต้นโยบายอนุญาตเผยแพร่ของศูนย์
สื่อวิดีโอและเสียง
- มีหน้าแยกสำหรับ บันทึกการบรรยายและการสัมภาษณ์ ของ Dijkstra
แหล่งข้อมูลเกี่ยวกับ Dijkstra และผลงานของเขา
- มีบันทึกการสัมภาษณ์ปี 1985 ของ Rogier F. van Vlissingen พร้อมความทรงจำส่วนตัว และบันทึกการสัมภาษณ์ปี 2001 ของ Philip L. Frana
- มีการเผยแพร่โปรแกรมและวิดีโอของงานสัมมนา “In Pursuit of Simplicity” ซึ่งจัดขึ้นในวันเกิดปี 2000 เพื่อฉลองการเกษียณของเขาในปี 1999
- หลังการเสียชีวิตในปี 2002 มี บทความรำลึกและงานที่ระลึก หลายรายการตามมา
- มีบทความรำลึกของ Maarten van Emden ในปี 2008 และหนังสือรวมบทความรำลึกที่เรียบเรียงโดย Krzysztof R. Apt และ Tony Hoare ในปี 2021
- บล็อก Dijkstra’s Cry ที่ดูแลโดย Edgar G. Daylight นำเสนอแนวคิดและงานวิจัยของ Dijkstra อย่างต่อเนื่อง
- มีการกล่าวถึงตัวอย่างจาก EWD249 ที่ใช้อธิบายสมดุลระหว่างประสิทธิภาพกับการประหยัดหน่วยความจำผ่าน “หลักการสายการประกอบ”
- Edsger W. Dijkstra Prize in Distributed Computing จัดขึ้นเพื่อยกย่องผลงานรากฐานของเขา เช่น หลักการของภาวะพร้อมกันและงานวิจัยด้าน self-stabilization
ชุดปาฐกถาที่ระลึก Dijkstra
- มีการจัด Dijkstra Memorial Lectures เป็นประจำทุกปีที่มหาวิทยาลัยเท็กซัสตั้งแต่เดือนตุลาคม ปี 2010
ข้อมูลเว็บไซต์
- ระบุว่าการเปลี่ยนแปลงล่าสุดคือการอัปเดตเมื่อวันที่ 30 มีนาคม 2021
- มีรายชื่อผู้มีส่วนร่วมในการจัดทำเว็บไซต์และที่อยู่อีเมลสำหรับส่งข้อเสนอแนะ
เว็บไซต์ที่เกี่ยวข้อง
- Discipline in Thought: แนะนำเว็บไซต์ที่ว่าด้วยการคิดเชิงคำนวณและระเบียบวิธีทางคณิตศาสตร์ ซึ่งสืบทอดแนวทางของ Dijkstra
แก้ไขต้นฉบับล่าสุด: 12 มกราคม 2020
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
สำหรับบริบทของปี 2025 งานเขียนที่สำคัญที่สุดน่าจะเป็นบทความของ Dijkstra ว่าด้วย "ความงี่เง่าของ natural language programming"
On the foolishness of "natural language programming"
เช่น ใช้
andแทน&&, หรือif A then Bแทนif (A) Bอ่านง่ายกว่าคณิตศาสตร์เน้นความกระชับ แต่ผมมองว่าการเขียนโปรแกรมมีสมดุลที่ดีกว่าเพราะให้ความสำคัญกับ ความอ่านง่าย
ถ้าสิ่งที่ Dijkstra หมายถึงคือ “การไล่ตามความอ่านง่ายอย่างเดียวเป็นการแลกเปลี่ยนที่ไม่คุ้ม” ก็ถือว่าเขาชี้ประเด็นได้ถูกต้อง
และมันถูกต้องอย่างชัดเจนมาก
โดยเฉพาะกับคนที่ชอบ dynamic typing
น่าทึ่งที่ Dijkstra เขียนไว้ตั้งแต่ช่วงทศวรรษ 1980 แล้วว่า “การศึกษากำลังห่างจากการฝึกฝนทางปัญญา และความสามารถในการใช้ภาษาก็กำลังถดถอย”
ในเนเธอร์แลนด์มีการประเมินหลักสูตรจากอัตราการผ่านของนักเรียน ถ้าอัตราผ่านต่ำก็ลดความยากลง
ถ้าทำแบบนี้ซ้ำกันหลายสิบปี ผลจะออกมาอย่างไรก็เดาได้ไม่ยาก
หนึ่งในบทความที่ผมแชร์บ่อยคือ EWD831
อธิบายว่าทำไมดัชนีอาร์เรย์ควรเริ่มที่ 0 และทำไมช่วงค่าจึงควรกำหนดแบบ รวมขอบล่าง ไม่รวมขอบบน
จริงๆ แล้วบางกรณี 1-based ก็อาจดีกว่า เช่นในการ วนซ้ำย้อนกลับ 1-based ดูเป็นธรรมชาติกว่า
จะโต้แย้งว่าควรแยก offset เป็น 0-based และ index เป็น 1-based ก็ยังได้
บทความที่เกี่ยวข้อง: Again on 0-based vs 1-based indexing
มันเป็นเพราะ สถาปัตยกรรม subtractive index register ของ IBM 704 และสิ่งนี้ทำให้ column-major array มีประสิทธิภาพ
Cray, CUDA และฐานข้อมูลแบบ column-oriented สมัยใหม่ก็ใช้หลักการคล้ายกัน
สุดท้ายแล้ว Fortran ก็ยังทำตามกฎของ Dijkstra ในมุมมองของ memory offset
การเริ่มหมายเลข chapter ของหนังสือจาก 0 ยังทำให้ผมสับสนอยู่เสมอ
การที่ memory address เริ่มจาก 0 เป็นเรื่องของการจัดชุดแรงดันไฟฟ้า ไม่ใช่เรื่องของ แนวคิดเรื่องลำดับ
ในโลกนี้ไม่มี “ศตวรรษที่ 0” หรือ “ไมล์ที่ 0” ดังนั้น chapter ของหนังสือก็น่าจะเหมือนกัน
เช่น ถ้ามีคนบอกทางว่า “เดินไปสามบล็อก” จุดออกตัวก็คือบล็อกที่ 0
base + 0จึงเริ่มจาก 0 เพราะ การคำนวณ offsetตัวอย่างเช่น Tensor Analysis on Manifolds ปี 1968 มีบทที่ 0 สำหรับทฤษฎีเซต
เช่นเดียวกับ “กฎข้อที่ศูนย์ (zeroth law of thermodynamics)” ที่ใช้แสดงแนวคิดซึ่งมาก่อนลำดับที่มีอยู่แล้ว
สุดท้ายแล้วการบอกว่าการเริ่มจาก 0 “ไม่เป็นธรรมชาติ” ก็เป็นเพียง อคติทางวัฒนธรรม เท่านั้น
ผมชอบอ่านงานที่ Dijkstra ย้อนความถึง การออกแบบ interrupt ครั้งแรก มาก
EWD1303: The first interrupt
ถ้าคุณสนใจการคิดแบบคณิตศาสตร์ ผมแนะนำ EWD717 และ EWD765
ทั้งสองชิ้นบันทึก กระบวนการแก้ปัญหา ที่น่าสนใจไว้
ใน EWD498: How do we tell truths that might hurt?
วลี “natural language programming ย่อมล้มเหลวอย่างหลีกเลี่ยงไม่ได้” น่าประทับใจมาก
อีกชิ้นที่แนะนำคือ EWD1305
ซึ่งรวบรวมคำตอบต่อคำถามของนักศึกษา
Dijkstra วิจารณ์ว่าเพราะความนิยมของอินเทอร์เน็ต ทำให้นักศึกษาที่มี แนวโน้มแบบวิทยาศาสตร์ไม่มากพอ แห่เข้ามาเรียนวิทยาการคอมพิวเตอร์
และยังชี้ให้เห็นด้วยว่าแทบไม่มีการสอนเรื่อง “การเขียนโปรแกรมให้ดี” อย่างจริงจัง
หนึ่งในงานเขียนที่ผมชอบที่สุดคือ EWD898: Threats to computer science
และผมก็ประทับใจส่วนเปิดของ EWD899 ที่วิจารณ์งานวิจัย AI อย่างเผ็ดร้อน
ประโยคที่ว่า “โชคดีที่ผมไม่ได้ไปร่วมประชุมนั้น” ทรงพลังเป็นพิเศษ
เมื่อก่อนผมเคยใส่คำคมของ Dijkstra ไว้ด้านหลังนามบัตร
“Computer Science is no more about computers than astronomy is about telescopes”
สักวันหนึ่งผมอยากรวบรวมงานเขียนทั้งหมดของเขาไว้สำหรับ eReader แล้วอ่านระหว่างเดินทาง
สุดท้ายสิ่งที่เราจัดการก็คือโค้ด (กล้องโทรทรรศน์) และคุณภาพของมันก็คือผลงานของเรา
ตอนผมเรียนที่ UT, Dijkstra ให้เด็กทำข้อสอบด้วย ปากกาแทนดินสอ
เขาคิดว่าเมื่อมันลบไม่ได้ ก็จะเป็นการฝึกให้ ทำผิดพลาดน้อยลง