Apollo Guidance Computer ในวันที่โลกยังไม่รู้จักคอมพิวเตอร์

4 วันหลังการปล่อย Saturn V ออกจากฐาน 39A Kennedy Space Center, วันที่ 20 กรกฎาคม คริสต์ศักราช 1969 Landing Module “Eagle” ของ Apollo 11 ลงจอดบนดวงจันทร์ได้สำเร็จ หลังจากนั้นไม่กี่ชั่วโมง นีล อาร์มสตรองได้ปีนบันไดลงมาจากยาน, เหยียบลงบนพื้นและกลายเป็นมนุษย์คนแรกบนดวงจันทร์

ยาน Eagle กำลังแยกตัวจาก Command Module เพื่อไปลงจอดยังดินแดนที่ไม่มีใครเคยสัมผัส ที่มา – NASA/Apollo Archive

จากจรวดมหึมาน้ำหนัก 2.8 ล้านกิโลกรัม หนึ่งในสิ่งสำคัญที่อยู่เบื้องหลังความสำเร็จนี้คือคอมพิวเตอร์เครื่องเล็ก ๆ น้ำหนัก 32 กิโลกรัมที่ติดตั้งอยู่บน Lunar Module และ Command Module ของยาน, คอมพิวเตอร์เครื่องนั้นมีชื่อว่า Apollo Guidance Computer (AGC) เพื่อการคำนวณ, ควบคุมและนำทางยานอพอลโล

ทีม Software Engineer ขณะกำลังออกแบบโครงการ Apollo 8 ที่มา – NASA/Apollo Archive

9 สิงหาคม 1961 ในยุคที่คอมพิวเตอร์ยังเป็นเทคโนโลยีระดับสูงเกินกว่าคนปกติจะเอื้อมถึง คอมพิวเตอร์ที่หนึ่งเครื่องกินอาณาเขตเป็นห้องใหญ่ ถูกใช้งานเฉพาะโดยผู้เชี่ยวชาญ NASA ได้ทำสัญญากับ MIT Instrumentation Lab ให้ออกแบบ พัฒนาและสร้างระบบนำทางและควบคุมยานอพอลโลโดยไม่มีแม้แต่สเปคที่ต้องการจากการที่ในสมัยนั้นยังไม่มีใครที่เคยประดิษฐ์เครื่องนี้หรือคิดออกว่าควรจะให้เครื่องมือชิ้นนี้ทำอะไรจากข้อจำกัดทางด้านเทคโนโลยี

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

โขคดีที่การพัฒนาของเทคโนโลยีในช่วงนั้นเป็นไปอย่างรวดเร็วและที่ฮอลล์รู้จักกับบริษัท Fairchild Semiconductor บริษัทที่ได้พัฒนา Integrated Circuit (IC) แผงวงจรซิลิคอนที่มีขนาดเล็กและประมวลผลได้รวดเร็วเป็นบริษัทแรกของโลกและตัดสินใจนำมันมาใช้พัฒนา AGC แทนที่ท่อสุญญากาศ (แม้จะได้รับเสียงคัดค้านจาก IBM ที่ไม่เห็นด้วยกับการเอาเทคโนโลยีที่ไหนก็ไม่รู้ที่ยังเชื่อถือไม่ได้มาใช้) โดยในช่วงปีนั้นแล็บได้ใช้ 2/3 ของซัพพลาย IC ที่มีทั้งหมดในโลกไป กลายเป็นคอมพิวเตอร์เครื่องแรกของโลกที่ใช้ IC 

ต้นแบบ Logic Module ที่ใช้ในการทดสอบสถาปัตยกรรมของ AGC ที่มา – NASA/Apollo Archive

เพื่อประโยชน์สูงสุดในการใช้งานและน้ำหนักที่เบาลง AGC ถูกออกแบบมาใช้ทำงานเฉพาะด้านโดยเฉพาะแทนที่จะเป็นคอมพิวเตอร์ทั่ว ๆ ไปที่ใช้ควบคุมการเดินทาง โดยมีลักษณะเฉพาะที่น่าสนใจหลายอย่างเช่น

การเก็บข้อมูล ROM (Read Only Memory) : เมื่อการเก็บข้อมูลแบบปกติที่ใช้กันในสมัยนั้นอย่างการใช้บัตรเจาะรูหรือคลื่นเสียงภายในหลอดปรอท (delay line) ไม่สามารถใช้ได้ในเชิงปฏิบัติ วิธีการที่แล็บเลือกจะใช้คือวิธี Core Rope Memory โดยสายทองแดงกับห่วงโลหะ ถ้าลอดภายในห่วงคือค่าเท่ากับ 1 ถ้าอยู่นอกห่วงแสดงว่าค่าเท่ากับ 0 โดยจะเก็บได้ประมาณ 2.5Mb ต่อตารางเมตร ซึ่งการร้อยสายทองแดงนี้ต้องร้อยด้วยมือทั้งหมดเหมือนการร้อยผ้า (ทำให้โปรแกรมเมอร์ตั้งชื่อเล่นวิธีนี้ว่า LOL – Little Old Lady Method) ผลลัพธ์ที่ได้คือหน่วยเก็บข้อมูลที่คงทน ลบหรือเปลี่ยนแปลงไม่ได้

Core Rope Memory ที่มา – NASA/ Apollo Archive

Interface : ส่วนอินพุต/เอาท์พุตของ AGC มีชื่อว่า DSKY (อ่านว่าดิสกี้) ย่อมาจากคำว่า display and keyboard ส่วนอินพุตประกอบด้วยปุ่มจำนวน 19 ปุ่ม ได้แก่ปุ่มเลข 0-9, +, – , NOUN, VERB, CLR, PRO, KEY REL, ENTR, RSET คำสั่งในการอินพุตจะประกอบด้วยสองส่วนคือ Verb (ให้ทำอะไร) และ Noun (ทำกับอะไร) เช่น V (Verb) 05 N (Noun) 09 E (Enter) : Display Alarm Code หรือ V01N02E : ดูข้อมูลที่ช่องข้อมูลประเภทลบได้ R3 (แถวล่าง) ในรูปเลขฐานแปด 

UI ของ AGC ที่เป็นปุ่ม ประกอบไปด้วยตัวเลขและคำสั่งต่าง ๆ ที่มา – NASA/Apollo Archive

ซอฟต์แวร์ : ต่างจากในปัจจุบันที่เราสามารถเขียนโปรแกรมไปรันบนคอมพิวเตอร์ได้โดยตรง ในสมัยนั้นโปรแกรมจะถูกเขียนด้วยมือก่อนนำไปแปลงเป็นบัตรเจาะรูเพื่อทดสอบหรือใช้งานกับคอมพิวเตอร์ต่อไป (กลายเป็นภาพที่หลาย ๆ คนอาจจะเคยเห็นที่มาร์กาเร็ต ฮามิลตันหัวหน้าหน่วยพัฒนาซอฟต์แวร์ยืนคู่กับกองเอกสารเกือบเท่ากับตัวเอง) ซึ่งซอฟต์แวร์ที่ใช้ในงานนี้เป็นภาษา Assembly จำนวนกว่าพันหน้ากระดาษ (ซึ่งในปัจจุบัน เราสามารถเข้าไปดูโค้ดเต็มได้ใน https://github.com/chrislgarry/Apollo-11)
โดยซอฟต์แวร์นี้เป็นส่วนสำคัญที่ทำให้งานวิศวกรรมซอฟต์แวร์เป็นที่ยอมรับมากขึ้นในเวลาต่อมา 

Magaret และโค้ดอัลกอริทึมของ Apollo Guidance Computer ที่มา – NASA/MIT

ในภารกิจอพอลโล 11 เกิดการผิดพลาดของ AGC ในช่วงก่อนการลงจอดบนดวงจันทร์ เกิดการ executive overflow (alarm 1202) ขึ้นขณะที่อัลดรินกำลังทำตามแผนงาน หลังจากนั้นระบบก็ทำการ reset ตัวเองและจากการลักษณะทำงานโดยไล่ตามลำดับความสำคัญ ศูนย์ควบคุมที่โลกได้สั่งให้เปลี่ยน Rendezvous Radar Switch มาเป็น Manual เพื่อลดภาระงานที่ไม่จำเป็นต้องให้คอมพิวเตอร์คำนวณ หลังจากนั้นการลงจอดก็เป็นไปได้อย่างปลอดภัย

วิศวกร Ralph Ragan และ Eldon Hall กับแบบจำลองหน้าปัดควบคุมของ Apollo ที่มา – Draper ผ่าน We Hack the Moon

AGC ได้ถูกใช้ในภารกิจที่มีมนุษย์รวม 15 ภารกิจ นับเป็นภารกิจไปดวงจันทร์ 9 ภารกิจ ลงจอดดวงจันทร์ 6 ภารกิจ ภารกิจกับ Skylab 3 ภารกิจและการเทสภารกิจ Apollo-Soyuz ในปี 1975

ท้ายสุดแล้ว AGC นั้นกลายมาเป็นพื้นฐานของการออกแบบคอมพิวเตอร์ที่เราใช้กันอยู่ในปัจจุบัน รวมถึงแนวคิดของ AGC เองก็ยังได้ถูกพัฒนามาเป็นซอฟแวร์ที่ใช้ในโครงการอวกาศทุกวันนี้คือ GNC หรือ Guiance Navigation and Control ที่เป็นสถาปัตยกรรมซอฟแวร์ที่ควบคุมการทำงานของยานอวกาศทุกวันนี้

Google ใช้ซอฟแวร์ควบคุมกระจกที่ใช้สำหรับผลิตกระแสไฟฟ้าพลังงานแสดงอาทิตย์ สะท้อนแสงของดวงจันทร์ให้กลายเป็นรูปของ Magaret Hamilton แม้กระทั่งสถาปัตยกรรมคอมพิวเตอร์ที่ใช้ควบคุมระบบเหล่านี้ก็ยังคงเป็นผลจากการพัฒนาต่อของ Apollo Guidance Computer ที่มา – Google

ในวันที่มนุษย์ ไม่รู้ว่าเทคโนโลยีคอมพิวเตอร์ที่เพิ่งถูกสร้างขึ้นมาจะใช้ทำอะไร ในวันที่มนุษย์ไม่รู้ว่าเราจะไปดวงจันทร์ทำไม แต่ถ้าหากมนุษย์ล้มเลิกความพยายามในการไปดวงจันทร์ หรือทิ้งเทคโนโลยีที่เรียกว่าคอมพิวเตอร์ไป ทุกวันนี้โลกก็คงจะไม่ได้เป็นแบบที่เราเห็น สิ่งที่เกิดขึ้นในโครงการ Apollo ได้พิสูจน์แล้วว่ายังมีอีกหลายขีดจำกัดที่รอคอยให้มนุษย์ปลดล็อกผ่านการเดินทาง ผจญภัย และเรียนรู้

เผยแพร่ครั้งแรกที่ Facebook – Chayapatr Archiwaranguprok

แมว วาราบิโมจิ ปิศาจสปาเกตตี้บินได้