- นวัตกรรมตลอด 50 ปีของ Microsoft เริ่มต้นจาก โค้ด Altair BASIC
- เป็นผลิตภัณฑ์ชิ้นแรกที่มีอยู่ก่อน Office, Windows 95, Xbox และ AI
- โค้ดนี้เป็นจุดเปิดศักราชคอมพิวเตอร์ส่วนบุคคล และกลายเป็นรากฐานการเติบโตของ Microsoft
โค้ดที่เจ๋งที่สุดที่ผมเคยเขียน
- ในปี 1975 Bill Gates และ Paul Allen ก่อตั้ง Microsoft ด้วยวิสัยทัศน์ว่า “คอมพิวเตอร์บนทุกโต๊ะและในทุกบ้าน”
- การที่ Microsoft เดินทางมาครบ 50 ปีได้ เป็นผลงานสำคัญของผู้นำที่ยอดเยี่ยมอย่าง Steve Ballmer, Satya Nadella และพนักงานอีกมากมาย
- Gates กล่าวว่าในวาระสำคัญนี้ เขารู้สึกทั้งยินดีและเสียดายอยู่พร้อมกัน
- ช่วงเวลาที่นั่งเขียนโค้ดอยู่หน้า PDP-10 ที่ Harvard ยังให้ความรู้สึกเหมือนเพิ่งเกิดขึ้นไม่นานมานี้
- จุดเริ่มต้นของ Microsoft มาจาก คอมพิวเตอร์ Altair 8800 ที่เขาเห็นบน หน้าปกนิตยสาร Popular Electronics ในปี 1975
- Altair เป็นพีซีแบบคิทที่สร้างโดยบริษัทอิเล็กทรอนิกส์ขนาดเล็กชื่อ MITS และถือเป็นผลิตภัณฑ์ที่ล้ำสมัยมากในเวลานั้น
- ทันทีที่เห็นนิตยสาร Gates และ Allen ก็มั่นใจว่าการปฏิวัติพีซีกำลังจะมาถึง และตัดสินใจเข้าร่วมกระแสนั้น
เหตุผลที่ตัดสินใจเขียนโค้ด BASIC
- ทั้งสองคนหลงใหลคอมพิวเตอร์มาตั้งแต่สมัยเรียนที่โรงเรียน Lakeside
- พวกเขาประทับใจกับความจริงที่ว่า Altair สามารถเปิดโอกาสให้คนทั่วไปได้เขียนโปรแกรมด้วยตนเอง
- Gates และ Allen เสนอให้ MITS ก่อนว่าพวกเขาได้พัฒนาภาษา BASIC สำหรับ Altair แล้ว
- แต่ในความเป็นจริง ซอฟต์แวร์นั้นยังไม่มีอยู่เลย และพวกเขาจึงต้องสร้างมันขึ้นมาเอง
แนวคิดพื้นฐานของภาษา BASIC
- BASIC เป็นภาษาโปรแกรมสำหรับผู้เริ่มต้นที่ศาสตราจารย์สองคนจาก Dartmouth College สร้างขึ้นในปี 1964
- มันถูกออกแบบมาเพื่อให้คนที่ไม่มีประสบการณ์กับคอมพิวเตอร์เลย ก็สามารถสร้างโปรแกรมได้เองหลังเรียนรู้เพียงไม่นาน
- ตัวอย่าง: โปรแกรมคำนวณยอดคงเหลือในสมุดเช็ค, เกม tic-tac-toe
- เป็นภาษาโปรแกรมภาษาแรกที่ Gates และ Allen เรียนรู้ และยังคงถูกใช้งานมาจนถึงปัจจุบัน
- BASIC เป็น ภาษาที่ใช้สั่งงานคอมพิวเตอร์ คล้ายภาษาอังกฤษ ทำให้สามารถสั่งให้รันคำสั่ง แก้โจทย์คณิตศาสตร์ และทำงานต่าง ๆ ได้
วิธีทำให้คอมพิวเตอร์เข้าใจ BASIC
- ปัญหาคือคอมพิวเตอร์ไม่สามารถเข้าใจ BASIC ได้โดยตรง
- Gates และ Allen จึงตัดสินใจสร้าง อินเทอร์พรีเตอร์ (Interpreter) ที่แปลโค้ด BASIC เป็นคำสั่งของคอมพิวเตอร์และรันทีละบรรทัด
- ข้อดีคือให้ฟีดแบ็กแบบเรียลไทม์ ทำให้ผู้เริ่มต้นแก้ข้อผิดพลาดได้อย่างรวดเร็ว
- แม้จะพิจารณาวิธีแบบ คอมไพเลอร์ (Compiler) ที่แปลทั้งโปรแกรมในครั้งเดียวด้วย แต่พวกเขามองว่าอินเทอร์พรีเตอร์เหมาะกับผู้เริ่มต้นมากกว่า
เริ่มพัฒนา
- เนื่องจากตอนนั้นยังไม่มี ชิป Intel 8080 ที่ใช้ใน Altair ทาง Paul จึงพัฒนาโปรแกรมสำหรับ จำลองการทำงาน ของชิปดังกล่าวบน PDP-10 ของ Harvard
- Gates เขียนโค้ดหลักของอินเทอร์พรีเตอร์ ส่วนเพื่อนของพวกเขา Monte Davidoff รับผิดชอบ โมดูลการคำนวณทางคณิตศาสตร์
- ทั้งสามคนทำงานกันอย่างไม่รู้จักกลางวันกลางคืนเป็นเวลาสองเดือน จนสร้างซอฟต์แวร์ที่ก่อนหน้านั้นยังไม่มีอยู่จริงได้สำเร็จ
ฝ่าข้อจำกัดด้านหน่วยความจำ
- ในเวลานั้นหน่วยความจำคอมพิวเตอร์มีราคาแพงมาก และถ้าเพิ่มหน่วยความจำให้ Altair ค่าใช้จ่ายอาจสูงกว่าราคาพีซีเสียอีก
- เป้าหมายคือทำ อินเทอร์พรีเตอร์ BASIC ให้อยู่ภายใน 4KB
- วิธีนี้จะทำให้ผู้ใช้ยังเหลือหน่วยความจำพอสำหรับรันโปรแกรมของตัวเอง
- Gates ใช้ เทคนิคการเพิ่มประสิทธิภาพหน่วยความจำ หลายรูปแบบเพื่อบรรลุเป้าหมายนี้
- ตัวอย่าง: โครงสร้างข้อมูลแบบบีบอัด, อัลกอริทึมที่มีประสิทธิภาพ
การกำเนิดของ Microsoft
- หลังจากอดหลับอดนอนทำงานมาอย่างยาวนาน พวกเขาได้นำ BASIC อินเทอร์พรีเตอร์ที่เสร็จสมบูรณ์ไปสาธิตให้ Ed Roberts ผู้บริหารของ MITS ดู
- การสาธิตประสบความสำเร็จ และ MITS ก็ ซื้อลิขสิทธิ์การใช้งาน ซอฟต์แวร์นี้
- ความสำเร็จครั้งนี้ทำให้ Altair BASIC กลายเป็นผลิตภัณฑ์แรกของ Microsoft และเป็นจุดกำเนิดของชื่อบริษัท Micro-Soft (ต่อมาจึงตัดเครื่องหมายขีดออก)
- โค้ดชิ้นนี้เพียงชิ้นเดียวกลายเป็นจุดเริ่มต้นของนวัตกรรมทั้งหมดของ Microsoft ตลอด 50 ปีหลังจากนั้น
- สามารถอ่านเรื่องราวโดยละเอียดเพิ่มเติมได้ในบันทึกความทรงจำ Source Code
ดาวน์โหลดซอร์สโค้ด
- สามารถเข้าไปดู ซอร์สโค้ดต้นฉบับของ Altair BASIC ซึ่งเป็นจุดเริ่มต้นของ Microsoft ได้โดยตรง
- Gates ยังคงภาคภูมิใจกับโค้ดนี้อย่างมาก ในฐานะเอกสารทางประวัติศาสตร์ที่แสดงให้เห็นว่าการเขียนโปรแกรมพัฒนามาไกลเพียงใดตลอด 50 ปีที่ผ่านมา
ดาวน์โหลดซอร์สโค้ด (PDF)
2 ความคิดเห็น
ซอร์สโค้ด BASIC สำหรับ 6502 ที่ Microsoft จัดหาแบบ OEM (Apple II, Commodore, ..) ได้ถูกกู้คืน(?) ให้อยู่ในสภาพที่สามารถบิลด์ได้แล้ว
https://github.com/mist64/msbasic
ยังมีหลายกรณีที่คนลงมือสร้าง 6502 SBC ขึ้นมาเอง แล้วพอร์ต MSBASIC ลงไปด้วยเช่นกันครับ
https://github.com/beneater/msbasic
แค่ทึ่งอย่างเดียวก็ดีอยู่หรอก แต่ถ้าลองลงมือเองอาจจะสนุกยิ่งกว่าก็ได้… ;)
ความคิดเห็นบน Hacker News