Bahasa Majelis digunakan dalam Sistem Pesawat

9

Hari ini dosen saya menyebutkan alasan mengapa sistem pesawat diprogram dalam bahasa assembly adalah karena program yang ditulis kurang memiliki kesalahan. Apakah pernyataan ini benar? Karena ketika dia bertanya tentang pendapat kami, saya mengatakan perakitan dapat membuat program yang lebih cepat sehingga merupakan bahasa yang baik untuk program sistem pesawat berorientasi waktu nyata. Saya mencari di sekitar Google tetapi sepertinya tidak dapat menemukan artikel yang mengklarifikasi pernyataan dosen saya.

karamel1995
sumber
24
Entah Anda salah paham dosen Anda atau dosen Anda adalah idiot.
Paul R
3
Anda tidak ingin menulis perangkat lunak kontrol peralatan kritis secara real-time dalam perakitan. Ada banyak bahasa yang lebih baik yang tersedia untuk pengembangan perangkat lunak waktu nyata dan pengembangan perangkat lunak penting.
CVn
5
Hanya ingin tahu tentang usia dosen Anda. Bagaimanapun, ia mungkin hanya mencoba untuk menunjukkan, (agak gagal, rupanya) bahwa sejumlah bahasa modern, seperti java, adalah terlarang (java telah dijabarkan dalam lisensi yang menyertainya, btw) untuk misi terkait pesawat aplikasi-kritis.
ZJR
1
@ZJR: Sebenarnya, AFAIK, pabrikan UAV Jerman menggunakan Java untuk sistem kontrol penerbangan. Mungkin mereka membeli lisensi yang berbeda?
Jörg W Mittag
1
@ JörgWMittag: sebuah UAV mungkin dapat membunuh orang dengan metode lain, tetapi 'U' berarti kegagalan kontrol penerbangan berarti itu tidak segera membahayakan kehidupan manusia. Lisensi Java mengatakan itu tidak cocok untuk sistem mission-critical, tetapi itu tidak mencegah siapa pun membuat pilihan itu.
DaveE

Jawaban:

29

Pernyataan dosen Anda terbukti salah. The Joint Strike Fighter kode kontrol ditulis dalam C ++. 777 dari Boeing menggunakan 99% + ADA . JPL kebanyakan menggunakan C untuk menggerakkan pesawat ruang angkasa.

Saya yakin ada lebih banyak contoh tetapi saya curiga banyak yang dimiliki atau diklasifikasikan.

Berikut ini adalah makalah yang masuk ke beberapa detail tentang masalah pengujian perangkat lunak avionik pada tingkat yang lebih umum.

Insinyur Dunia
sumber
Beberapa proyek NASA juga menggunakan dialek Lisp di masa lalu. Pabrikan UAV Jerman bahkan menggunakan Java.
Jörg W Mittag
Pembom B2 baru-baru ini ditulis ulang dalam C. Sumber: tech.slashdot.org/story/08/07/14/1934228/…
user16764
Kembali pada Abad Kegelapan (awal 1980-an), F-16A / B menggunakan bahasa rakitan untuk Set Manajemen Toko dan JOVIAL J3B untuk Firecontrol Computer. F-16C / D menggunakan JOVIAL J73 untuk semuanya untuk beberapa blok pertama, dan saya percaya mereka beralih ke Ada di tahun-tahun berikutnya. Saya tidak tahu apa yang mereka gunakan hari ini.
John R. Strohm
5

Saya bekerja pada OBOGS, yang merupakan komponen yang terhubung ke berbagai pesawat. Kami biasanya menggunakan C untuk perangkat yang terbang, tetapi melihat melalui file historis, ada beberapa proyek perakitan di sana.

Ini fashion, jujur. Bahasa naik dan turun. Alasan orang menggunakan satu atau yang lain bervariasi di semua tempat dan sebagian besar subjektif. Saya merasa sangat masuk akal bahwa seseorang pada titik tertentu berpendapat bahwa perakitan adalah pilihan yang tepat untuk suatu proyek di suatu tempat sepenuhnya karena itu akan memiliki lebih sedikit kesalahan daripada dalam bahasa lain. Dan dia mungkin benar, tapi itu karena orang itu tidak tahu bagaimana cara membuat kode dalam C. Sejauh ini bahasa terbaik untuk pekerjaan itu adalah yang Anda tahu. (Dan bahasa terbaik untuk pertumbuhan pribadi Anda adalah bahasa yang tidak Anda miliki.)

Anda dapat secara objektif mengatakan bahwa perakitan lebih dekat dengan perangkat keras, kurang abstrak, lebih langsung, dengan lebih banyak instruksi ke hal yang sama dalam bahasa lain. Anda bahkan dapat mengatakan bahwa ada kemungkinan bahwa perakitan dapat ditulis untuk mengurangi biaya overhead dan merokok cepat. Jika Anda tahu apa yang Anda lakukan. Tetapi untuk rawan kesalahan, kecepatan perkembangan, keterbacaan, dan kemampuan untuk menyembuhkan kanker? Semua itu tergantung pada kemampuan programmer dan apa yang telah mereka kerjakan selama 20 tahun terakhir. Pengukuran proyek-proyek dengan bahasa apa yang memiliki jumlah bug X adalah tunduk pada faktor sosiologis, sebagian besar membuat mereka metrik tidak berharga. Tidak, itu semua hanya mode.

Senang mengetahui kode Anda, jadi saya akan mengatakan bahwa penting untuk mempelajari perakitan. Kalau hanya sedikit. Tapi saya tidak akan menulis avionik di dalamnya.

Philip
sumber
1
Pada akhirnya, penulisan rakitan berarti lebih sedikit kode mesin jika Anda tahu apa yang Anda lakukan, dan Anda tahu persis seperti apa kode mesin yang dihasilkan; Anda tidak harus mempercayai kompiler untuk melakukannya dengan benar untuk Anda.
Hawken