การเขียนโปรแกรม คือการใส่บั๊ก

โปรแกรมไร้บั๊ก?คือโปรแกรมที่ไม่ได้เขียน

วันนี้มีคำคมโปรแกรมเมอร์?ที่ลึกซึ้งกินใจฝากครับ

“If debugging is the process of removing software bugs
,then programming must be the process of putting them in.”

-Edsger Dijkstra

แปลว่า

“ถ้าการดีบักคือ กระบวนการเอาบั๊กซอฟแวร์ออกไปละก็ …
เมื่อนั้นการเขียนโปรแกรมต้องเป็น กระบวนการใส่บั๊กเข้าไปแน่ ๆ”

– แอ็ดส์เคอร์ ไดก์สตรา กล่าวไว้

รู้ไว้ใช่ว่า ใส่บ่าแบกหาม

ประวัติ Edsger Dijkstra?(แอ็ดส์เคอร์ ไดก์สตรา)

เขาเป็นนักวิทยาศาสตร์คอมพิวเตอร์ชาวดัชต์ ที่สร้างคุณานุประโยชน์ แก่วงการคอมอย่างมาก
เกิดเมื่อค.ศ. 1930 และเสียชีวิตด้วยโรคมะเร็งเมื่อ 6 ส.ค. 2002
รวมอายุได้ 72 ปี

แม้เขาจะจบดอกเตอร์ทางคณิตศาสตร์และฟิสิกส์ ที่ University of Amsterdam เมื่อปี 1959
แต่กลับสนใจเขียนโปรแกรม ซึ่งสมัยนั้นยังไม่เป็นที่นิยม

ปี 1972 เขาได้รับรางวัลสูงสุดในวงการคอมพิวเตอร์คือ “ACM Turing Award”
และในปี 1984 ได้เป็นศาสตราจารย์ที่ Uninversity of Texas at Austin?สหรัฐเอมริกา

Edsger_Wybe_Dijkstra

Photo Credit:?http://en.wikipedia.org/wiki/Edsger_W._Dijkstra

ผลงานของเขา ที่คนเรียนสายคอมทุกคน ต้องรู้จักคือ

“Dijkstra’s algorithm”

ตำราเรียนอาจแปลว่า “ขั้นตอนวิธีของไดก์สตรา” (คุ้น ๆ ใช่มั๊ยละ)

เป็นวิธีแก้ปัญหาเรื่อง ?shortest path หรือก็คือหาระยะทางสั้นที่สุด จากจุดหนึ่งไปยังจุดใด ๆ ในกราฟ นั่นเอง ?(ถ้าไม่รู้จักแสดงว่าโดดเรียน และทำข้อสอบไม่ได้นะ)

Dijkstra_Animation

Photo Credit:?http://th.wikipedia.org/wiki/ขั้นตอนวิธีของไดก์สตรา

ผลงานดังอีกชิ้น ที่เราต้องเคยเรียนคือ

การแก้ปัญหาการกินอาหารของนักปราชญ์

หรือชื่อภาษาอังกฤษคือ “dining philosophers problem”

5philosophers

Photo Credit 😕http://www.il.mahidol.ac.th/e-media/computer/evolution/Pioneers_Dijkstra.htm

โจทย์มีอยู่ว่า

มีนักปราชญ์อยู่ 5 คนกำลังร่วมวงรับประทานอาหารเย็นกัน
กลางโต๊ะอาหารมีอาหารอยู่เพียงจานเดียว
และแต่ละคนมีจาน 1 ใบและมีตะเกียบวางอยู่ข้างจานด้านละอัน
แต่ละคนจะต้องมีตะเกียบ 2 อันจึงจะกินอาหารได้

คำถาม

นักปราชญ์จะมีวิธีกินอย่างไร ที่ต้องไม่เกิดสถานการณ์ที่สองคนที่อยู่ติดกันจะกินพร้อมกัน
ไม่มีใครที่ไม่ได้กิน และทุกคนได้กินอย่างยุติธรรมคือได้กินเท่ากัน

ส่วนผลงานดังด้านอื่น ๆ

  • เป็นหัวหน้าทีมคิดค้นระบบ OS ที่เรียกว่า “THE” Multiprogramming System
  • คิดค้นหลักการ Semaphore
  • เป็นผู้เขียนบทความ “Go To Statement Considered Harmfull” จนปลุกกระแสต่อต้านคำสั่ง Goto ในยุคนั้น
  • เขียนหนังสือ “A Discipline of Programming” ?ซึ่งรวบรวม Algorithms ที่ตัวเขาเองคิดค้น
  • แต่งหนังสือร่วมกับ ?C. A. R. Hoare ? Ole-Johan Dah ชื่อหนังสือคือ ?”Structured Programming”

นอกจากนี้แล้ว เขายังเป็นผู้บุกเบิกศาสตร์ทางคอมหลายเรื่อง ยิ่งคนจบคอมมา ล้วนเคยเรียน หรือเคยอ่านผ่านตามาทั้งสิ้น ได้แก่

Distributed Computing, Compiler Writing, Heuristics, stream, Computer Hardware Design, Dining Philosopher, Software Configuration Management, Sorting Algorithms, Fast Fourier Transform, Deadlock, Concurrent Programming, Garbage Collection, Memory Design, AI: Pattern Matching, Graph Theory, Scope of Variables, Transaction และอื่นๆ อีกมากกว่า 1,000 บทความ

อ้างอิง

เขียนโดย แอดมินโฮ โอน้อยออก