บิล เกตส์ ขโมยโค้ดของ MS-DOS มาจาก CP/M จริงหรือ?

by mk
8 August 2012 - 02:58

เป็นบทความที่น่าสนใจมากอีกเรื่องหนึ่งของประวัติศาสตร์คอมพิวเตอร์ครับ

เมื่อครั้งที่ IBM บุกเข้ามายังตลาดพีซีเป็นครั้งแรก (ด้วยการสร้างฮาร์ดแวร์ IBM PC ขึ้นมา) บริษัทตัดสินใจไม่ทำระบบปฏิบัติการเอง แต่เลือกทำสัญญาใช้งานระบบปฏิบัติการจากบริษัทอื่นๆ แทน

ตอนนั้น IBM มีตัวเลือกอยู่สองบริษัทคือ CP/M ระบบปฏิบัติการยอดฮิตสำหรับคอมพิวเตอร์ส่วนบุคคลในยุคนั้น สร้างโดย Gary Kildall แห่งบริษัท Digital Research (ปัจจุบันเขาเสียชีวิตแล้ว) และอีกทางหนึ่งคือ DOS ของไมโครซอฟท์ที่บิล เกตส์ไปซื้อมาอีกต่อหนึ่งจากบริษัท Seattle Computer Products

เหตุการณ์หลังจากนั้นคงเป็นที่ทราบกันดีว่า IBM เลือก DOS และกลายเป็น "ก้าวแรก" ของความยิ่งใหญ่ของไมโครซอฟท์ในทุกวันนี้

แต่เบื้องหลังเหตุการณ์ครั้งนั้น ทาง Gary Kildall ได้กล่าวหาว่า MS-DOS ขโมยโค้ดของ CP/M ไปใช้งาน (การตั้งชื่อไฟล์แบบ 8.3 ถูกใช้ครั้งแรกใน CP/M แต่อันนั้นเป็นเรื่องแนวคิดไม่ใช่ตัวโค้ด) เรื่องถึงขนาดฟ้องศาล แต่ในยุคนั้นการพิสูจน์ว่าโค้ดลอกกันมาหรือไม่ในชั้นศาลยังเป็นเรื่องที่เป็นไปไม่ได้เลย คดีนี้จึงถูกศาลสั่งยกฟ้องไปในที่สุด

บนเว็บของ Digital Research ก็เขียนถึง CP/M ไว้ดังนี้

In 1974, Dr. Gary A. Kildall, while working for Intel Corporation, created CP/M as the first operating system for the new microprocessor. By 1977, CP/M had become the most popular operating system (OS) in the fledgling microcomputer (PC) industry. The largest Digital Research licensee of CP/M was a small company which had started life as Traf-0-Data, and is now known as Microsoft. In 1981, Microsoft paid Seattle Software Works for an unauthorized clone of CP/M, and Microsoft licensed this clone to IBM which marketed it as PC-DOS on the first IBM PC in 1981, and Microsoft marketed it to all other PC OEMs as MS-DOS.

เรื่องนี้ยังเป็นปริศนาดำมืดของประวัติศาสตร์วงการไอทีมาจนถึงทุกวันนี้ ตัวของ Gary Kildall เองยังเคยพูดว่าเขาแอบฝัง "คำสั่งลับ" ไว้ใน CP/M ซึ่งสามารถใช้ใน DOS ได้ด้วย เป็นสิ่งยืนยันว่า DOS ก็อปปี้โค้ดของ CP/M ไปจริงๆ (แต่ไม่เคยมีใครเห็นคำสั่งนี้ต่อสาธารณะ)

ประเด็นนี้ทำให้ Bob Zeidman โปรแกรมเมอร์ยุคปัจจุบันที่สนใจและเชี่ยวชาญเรื่องการตรวจสอบโค้ดของซอฟต์แวร์ (software forensic คล้ายๆ กับนิติวิทยาศาสตร์แต่ทำกับซอฟต์แวร์แทน) เจ้าของบริษัท SAFE Corporation ที่มีผลิตภัณฑ์สำหรับตรวจสอบความเหมือนของซอร์สโค้ดชื่อ CodeSuite จึงตัดสินใจค้นหาคำตอบเรื่องนี้ (แน่นอนว่าต้องใช้ซอฟต์แวร์ของเขาเองทำการตรวจสอบ)

Zeidman หาซอร์สโค้ดของ CP/M, 86-DOS (หรือ Q-DOS ของบริษัท Seattle Computer Products) และ MS-DOS รุ่นแรกๆ (เวอร์ชัน 1.11) มาทดสอบด้วยโปรแกรม CodeSuite เพื่อดูว่ามีจุดไหนเหมือนกันหรือไม่

หลักการของ CodeSuite นอกจากการเทียบระหว่างโค้ดของสองโปรแกรมแล้ว มันยังไปค้นหาโค้ดในอินเทอร์เน็ตเพื่อดูว่าโค้ดที่ต้องการตรวจเช็คนั้นไปเหมือนกับโค้ดชุดไหนบนอินเทอร์เน็ตด้วยหรือไม่ (ถ้าโค้ด 2 ชุดเหมือนกันแล้วไม่เหมือนกับโค้ดอื่นบนเน็ตเลย แปลว่าโอกาสลอกกันมีสูง)

ผลปรากฎว่าโค้ดของ CP/M และ DOS มีชื่อตัวแปร (ในภาษาเอสเซมบลี) รูทีน และข้อความสตริงเหมือนกันบ้างในบางจุด แต่จุดที่เหมือนกันนั้นเป็นคำสามัญและข้อความทั่วไปอย่าง CALL, MAKE, BOOT ที่ซ้ำกันเป็นปกติอยู่แล้ว สิ่งใกล้เคียงที่สุดที่เขาเจอคือคำสั่ง "jnz comerr" (jump if not zero, communication error) ที่เหมือนกันในโค้ดทั้ง 2 ชุดและไม่เจอคำสั่งนี้ในโปรแกรมอื่นๆ อีก แต่พอไปไล่ดูในโค้ดจริงๆ ก็พบว่ารูทีนที่เรียกคำสั่งนี้ไม่มีความเกี่ยวข้องกันเลย

ดังนั้นสรุปแล้ว Bob Zeidman จึงยกประโยชน์ให้บิล เกตส์ และไมโครซอฟท์ว่าไม่ได้ลอก CP/M แต่อย่างใดครับ

บทความเวอร์ชันยาวอ่านได้จากต้นฉบับ ใครสนใจเรื่องประวัติศาสตร์คอมพิวเตอร์จะพบว่ามันสนุกมาก!

ที่มา - IEEE Spectrum

Blognone Jobs Premium