กระบวนการพัฒนารหัสสำหรับภารกิจรอบโลก?


29

Voyager 1 ไปถึงอวกาศระหว่างดวงดาวในเดือนสิงหาคม 2012 และเป็นวัตถุที่มนุษย์สร้างขึ้นในระยะไกลที่สุด เปิดตัวไม่นานหลังจากยานอวกาศแฝด Voyager 2 ในปี 1977 Voyager 1 ได้สำรวจระบบ Jovian และ Saturnian เพื่อค้นหาดวงจันทร์ดวงใหม่ภูเขาไฟที่ยังคุกรุ่นและข้อมูลมากมายเกี่ยวกับระบบสุริยะรอบนอก

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

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

ดังนั้นจึงเปิดตัวในปี 1977 หลังจาก 35 ปีรอบโลกถึงอวกาศระหว่างดวงดาว มีโค้ดกี่บรรทัดและเขียนด้วยภาษาใด? กระบวนการพัฒนาที่อยู่เบื้องหลังภารกิจนี้ (ยังคงใช้งานอยู่) คืออะไร

ดังนั้นอะไรคือแผนการที่ยิ่งใหญ่กว่าที่มีรหัสในภารกิจนี้และในภาษาใดที่เป็นรหัสฐานเขียน?



10
โชคดีที่มันหาได้ง่ายในอินเทอร์เน็ตในปัจจุบัน อ่านpopularmechanics.com/space/a17991/… .
Robert Harvey

3
ในการเขียนโปรแกรม 35 ปีที่ผ่านมาภาษาการเขียนโปรแกรมขั้นสูงใช่แล้ว แต่พวกเขาก็ยังไม่ได้ใช้ภาษาที่ใช้สำหรับ Voyager และ ilk :-)
Mark ประสิทธิภาพสูง

ใกล้ถึงจุดสิ้นสุดของลิงก์ Popular Mechanics กล่าวว่า "... มีพื้นฐานเพียงพอในภาษาแอสเซมบลีเพื่อให้ยานอวกาศดำเนินต่อไป"
dbasnett

ภาษาแอสเซมบลีที่น่าจะเป็นไปตามเวลาและเป็นไปได้ว่ากางเกงของคุณจะถูกยิงจากสะโพกมากกว่ากระบวนการที่เจ็บปวดและมีราคาแพงที่ใช้กันอยู่ทุกวันนี้
old_timer

คำตอบ:


19

(แก้ไข: 12/7/2017 หนึ่งปีต่อมาฉันพบคำตอบที่เชื่อถือได้) ในบทความเกี่ยวกับการพัฒนาซอฟต์แวร์สำหรับภารกิจอวกาศของนาซ่า https://www.nasa.gov/pdf/418878main_FSWC_Final_Report.pdf ในหน้า 31 ตารางต่อไปนี้อยู่ในกราฟแสดงให้เห็นว่าเหมาะสมกับการเพิ่มของลอการิทึมในรหัส: (ดังนั้นการประมาณ 3K ของฉันจึงเหมาะสมกับเงิน .)

  • 1969 Mariner-6 (30)
  • 1975 ไวกิ้ง (5K)
  • 1977 รอบโลก (3K)
  • 1989 กาลิเลโอ (8K)
  • 1990 Cassini (120K)
  • 1997 ผู้เบิกทาง (175K)
  • 1999 DS1 (349K)
  • 2003 SIRTF / Spitzer (554K)
  • 2004 MER (555K)
  • 2005 MRO (545K)

เดิมนี้เป็นคำถามในการค้นหาคำตอบสุดท้ายดังนั้นเราจึงทำการประมาณการต่อไปนี้:

ตามโพสต์ด้านล่างมีรหัสสำหรับ Apollo 11 และสิ่งอื่น ๆ ที่เปิดแหล่งที่มาของนาซ่า แต่แหล่งที่มาโพรบดูเหมือนว่าจะหายไปอย่างน่าผิดหวัง:

https://voat.co/v/programming/comments/306663

ฉัน googled และไม่พบข้อสรุปอะไรมากไปกว่าข้อเท็จจริงที่ว่ามันถูกเขียนขึ้นใหม่ใน F77 เป็นส่วนใหญ่และอาจส่งข้อมูลให้กับเราในอวกาศระหว่างดวงดาวจนถึงปี 2024 ถ้าทุกอย่างเป็นไปอย่างสมบูรณ์แบบ

นี่คือปิดยั่วเย้า: http://history.nasa.gov/computers/Ch6-2.html

เฉพาะ "ส่วนล่าง" ของหน่วยความจำธนาคาร 4K ที่ใช้โดยระบบข้อมูลการบินเท่านั้นที่เป็นรหัส นี่อาจเป็นคอมเพล็กซ์ที่ซับซ้อนที่สุดของคอมพิวเตอร์สามเครื่องใน Voyager เพื่อให้เราได้รับขีด จำกัด สูงสุดจากที่นี่ ดังนั้นหน่วยความจำขนาด 2k ไบต์สำหรับคำสั่งที่มีขนาดคำสั่ง 1 ไบต์จะเป็นคำแนะนำในการประกอบประมาณ 2,000 คำ หรืออาจเป็น 1,000 บรรทัดของรหัส Fortran คูณด้วยสามสำหรับการเขียนโปรแกรมใหม่) และคุณจะได้รับขีด จำกัด คร่าวๆของ 3000 แอสเซมบลีไลน์ในต้นฉบับ ไม่เชิงวิทยาศาสตร์หรือเข้มงวด แต่ที่ดีที่สุดที่ฉันสามารถหาได้

และเมื่อข่าวล่าสุด Allan Lasser ได้ทำFreedom of Information Act สำหรับซอร์สโค้ดไปยังซอฟต์แวร์ควบคุมและวิเคราะห์ของ Voyager Missionเปิดเผยว่ารหัสคือ (C) Caltech และเกินขอบเขตการร้องขอ FOIA ใด ๆ ซึ่งเป็นข้อเท็จจริงที่ สามารถนำความพยายามเพิ่มเติมไปยังการวิจัยซอร์สโค้ดนั้นได้

และด้วยการร้องขอ FOIA ที่เกี่ยวข้องโดย Allan Lasser เราได้เรียนรู้ว่าสัญญาJPL / Caltech สำหรับ Voyagerนั้นอยู่นอกเหนืออำนาจของ FOIA ตามที่ NASA เห็นว่ามีสัญญาที่จะมีรายละเอียดที่มีแนวโน้มที่จะประนีประนอมความปลอดภัยด้านไอที


ถ้าใครมีสถิติที่ดีกว่าสำหรับไบต์ต่อคำแนะนำการประกอบหรือคำแนะนำต่อบรรทัดโปรดเพิ่ม ผมก็ไม่สามารถหาบทความเกี่ยวกับการแสดงออกว่าฉันรู้ว่าฉันต้องการอ่านในอดีต ...
BenPen

14

บทความใน Wiredทำให้ชัดเจนว่าโค้ดถูกเขียนใน Fortran 5 และต่อมาถูกส่งไปยัง Fortran 77 และองค์ประกอบบางอย่างอยู่ในเวอร์ชัน C:

ซอฟต์แวร์การควบคุมและการวิเคราะห์ดั้งเดิมของยานอวกาศเขียนขึ้นใน Fortran 5 (ต่อจากพอร์ตไปยัง Fortran 77) ซอฟต์แวร์บางตัวยังคงอยู่ใน Fortran แม้ว่าจะมีชิ้นส่วนอื่น ๆ ที่ได้รับการปรับให้ทันสมัยมากขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.