7 คะแนน โดย GN⁺ 2025-04-04 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • นวัตกรรมตลอด 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 ความคิดเห็น

 
iolothebard 2025-04-06

ซอร์สโค้ด BASIC สำหรับ 6502 ที่ Microsoft จัดหาแบบ OEM (Apple II, Commodore, ..) ได้ถูกกู้คืน(?) ให้อยู่ในสภาพที่สามารถบิลด์ได้แล้ว
https://github.com/mist64/msbasic

ยังมีหลายกรณีที่คนลงมือสร้าง 6502 SBC ขึ้นมาเอง แล้วพอร์ต MSBASIC ลงไปด้วยเช่นกันครับ
https://github.com/beneater/msbasic

แค่ทึ่งอย่างเดียวก็ดีอยู่หรอก แต่ถ้าลองลงมือเองอาจจะสนุกยิ่งกว่าก็ได้… ;)

 
GN⁺ 2025-04-04
ความคิดเห็นบน Hacker News
  • ซอร์สโค้ดอ่านสนุกดี พบซอร์สโค้ดของ GW-BASIC แล้วมีคอมเมนต์น่าสนใจอยู่บ้าง
    • มีคอมเมนต์ว่าไม่สามารถใส่ตัวเลขให้พอดีกับบัฟเฟอร์ได้ จึงต้องดึงอักขระทั้งหมดกลับออกจากสแต็ก แล้วดึงตำแหน่งเริ่มต้นของบัฟเฟอร์ออกมาเพื่อใส่เครื่องหมาย "%"
    • มีคอมเมนต์ว่าอย่าเปลี่ยนค่าคงที่ของตัวสร้างเลขสุ่มโดยไม่อ้างอิง Knuth Vol 2, Chapter 3
  • แก้ไข: เป็น GW-BASIC ไม่ใช่ QBASIC
  • Steve Jobs เคยพูดว่าปัญหาของ Microsoft คือไม่มีรสนิยม
    • เอฟเฟกต์ตัวอักษรกะพริบตอนเลื่อนหน้าทำให้นึกถึงคำนั้น มันรบกวนมาก และปิดไม่ได้แม้จะใช้โหมดผู้อ่าน
    • อนึ่ง ฉันชอบ Bill Gates และสิ่งที่เขาทำเพื่อโลก
  • เคยเขียน Intel 8080 emulator ให้พอร์ตข้ามระหว่าง Dec10/VAX/IBM VM CMS ได้ 8080 นั้นทำได้ง่ายด้วยสวิตช์ค่า 256 ค่า เขียนด้วย FORTRAN77
    • แต่การเขียน BASIC interpreter พร้อม floating point นั้นยากกว่ามาก BASIC ของ Gates, Allen และผู้ร่วมงานคนอื่น ๆ ทำออกมาได้ดีทีเดียว
  • โชคเล็กน้อยและความเต็มใจที่จะรับความเสี่ยงให้ผลลัพธ์ในแบบที่คาดไม่ถึง ฉันไม่แน่ใจว่าจะได้เห็นอะไรแบบยุคพีซีอีกครั้งในช่วงชีวิตนี้ไหม อาจจะเป็นโทรศัพท์มือถือหรืออินเทอร์เน็ต
  • ซอร์สโค้ดมีลิงก์อยู่ท้ายบทความ (คำเตือน: เป็น PDF ขนาด 100 MB)
  • สงสัยว่าทำไมต้องเปิดใช้ JS เพื่อดูเว็บไซต์นี้
  • หลังจากอ่าน Palo Alto ของ Malcom Harris แล้ว การมาอ่านบทความนี้ก็น่าสนใจดี
  • นี่เจ๋งมาก ฉันคิดว่าข้อความเป็นสื่อที่ยังถูกใช้ในงานออกแบบไม่มากพอ
  • อยากจะบอกว่า "รอ GitHub repository ที่เก็บโค้ดนี้ในรูปแบบ ASCII" แต่ก็เพิ่งนึกได้ว่า Microsoft คงไม่ยอม
  • Microsoft (และอาจรวมถึง Bill Gates เป็นการส่วนตัว) เคยสร้าง "แรงต้าน" อย่างมากในหมู่ชุมชนแฮ็กเกอร์ แต่ก็ปฏิเสธไม่ได้ว่าเขากับ Paul Allen เป็นแฮ็กเกอร์ตัวจริงและช่วยผลักดันความก้าวหน้าทางเทคโนโลยีไว้มาก แน่นอนว่าเราทุกคนย่อมชอบ OSS มากกว่า และจะเลือก Linus (หรือชื่อนักพัฒนา OSS คนอื่น ๆ) มากกว่า "นายทุนใจดำ" 100 เท่า แต่พวกเขาก็สมควรได้รับการยกย่อง