如何寫出軍工級的代碼?
01-28
誰告訴你軍工級=嚴謹規範?
一定有人認為這樣就是「軍工級」代碼:
圖片來自:新華社:解放軍「網路尖兵」90天寫40萬行代碼但是,真正的軍工程序員是不會回答這道題的,他們一般都是「掃地僧」式的人物。可以讀讀這個回答(你在生活中遇到過哪些「掃地僧」式的人物? - 經歷)里的回答,找找感覺,看看身邊的誰比較像軍工程序員。不過,我感覺用知乎的人是沒機會見到他們的,因為軍工程序員不會在大城市工作,而知乎用戶分布是這樣的( 知乎上有多少假冒的名校留學生及偽 985/211 學生? - 盧詩翰的回答 )。。。
- updated at 06/07/2016 10:29 am
得到一個贊,於是再添點東西:)其實軍工程序員還是分級別的,原答案里我說的高級軍工程序員。這種高級的我也沒見過,但是我還真見過幾個級別稍低的。舉一個不泄密例子,A叔曾經在北京某軍工研究所寫過XX的非核心程序,年齡30+之後呢,和廣大程序員一樣,開始思考人生:哪裡才能讓我工作輕鬆點,生活條件好點呢?於是A叔毅然人肉翻牆來到澳村,過著朝九晚五不加班,年薪130k+刀的日子。- updated at 06/07/2016 11:30 am
哇,得到好多贊,再添點:)至於軍工程序是怎麼寫的, 還是可以回答的。(要是問題是「軍工程序都是做什麼的」就沒法回答了)。軍工程序員相對於工業界的程序員來說,總體實力更好一點,他們絕對沒有培訓一個月就上崗的。黑科技主要是他們的各種工具,這也和各個版本的FLAG級公司一樣,對質量、速度之類的東西還是很重視的。市面上有的編程語言他們也都用。總的說來,那是一個很「職業」的群體。所以,所謂」軍工級的代碼「,我給出的答案是」職業「的代碼。什麼是」職業的「呢?這恐怕得寫出一本書來吧。航空航天的代碼質量保障Coverity是首屈一指的,洛克希德馬丁,雷神,GE...每年都投入千萬級別的美金在Coverity上。國內不能說,呵呵呵
當有人告訴你,你一行代碼搞錯了會銷毀一顆90億的衛星,並且追究下來可能要坐牢的時候,你就明白了……
軍工企業出來的人告訴你,你的標題和你說的嚴謹規範並沒有什麼邏輯聯繫
哈哈哈GitHub - chrislgarry/Apollo-11: Original Apollo 11 guidance computer (AGC) source code.
不要高看軍工級的產品,在質量管理上,是比不過大公司的商業產品的
美軍標MIL-STD系列標準和NASA的NTRS或者SP系列的文件裡面應該有,Google慢慢找找看能不能下的到,NASA的資料公開程度較高。
遵守三個國軍標:GJB5369、GJB8114、GJB102A就夠了
Defensive programming 和 nist 800會是你的好朋友
先要買套軍裝吧……
按照至少10年前主流電腦配置的計算能力寫代碼,否則電腦跑不動…
前段時間有人說了個案例,在系統中加入了個用於計時的軟體,新來的程序員設置成界面毫秒級顯示,結果被部隊反應軟體太卡,演示後發現數字基本在0.01秒級跳動,考慮的計時精度要求不高後界面改為秒級顯示。謝邀算起來寫過幾萬行軍工級別代碼了。各個平台都有涉及至於如何能夠寫出軍工級別的代碼我建議用鍵盤敲這樣效率會高一些不可以使用機械鍵盤哦!
我就是干這個的。
這麼說的,平台落後歸落後,看起來很簡單。
而實質上是強迫你用小學知識來解大學題。
用大學知識不行嗎?明確告訴你,不行。沒別的原因,高可靠性的複雜晶元還沒問世。和軍工沒有什麼關係吧。 這屬於寫什麼行業的吧。應用在什麼地方。比如。。。我現在供職的公司是做慣性感測器的我們公司的慣性感測器可以應用在 導彈 飛機 車輛 單兵上。現在因為需要拓展業務把慣性感測器準備應用在健身方面。
比較普遍的方法是:局部多次實驗,整體一次成功;有錯則改,小步快走。 軍工產品的種類是非常多的。不是每一個產品都按照最嚴格的方法寫代碼,有兩個原因:1.人力不足,難以全面使用嚴格方法。2.種類太多,代碼的標準難以面面俱到,很多代碼要做的功能在標準里沒提到過。別的答案提到了一些方法,但是這些嚴格方法只是偶爾應用於個別產品。其實很多軍工產品並不是按照那些嚴格方法寫代碼的。 最常用的方法就是實驗。如果實驗過了就可以了;如果實驗沒通過,就修改。 我們的設計理念正在從「大步前進」轉變為「小步快走」。以前研發軍工產品,動不動十年二十年才能出一代產品,而現在三五年就能有個改進型號。從技術角度上說,主要有兩點變化:1.以前缺乏技術積累,而從無到有需要的工作量很大;現在有了技術積累,修修補補就方便多了。2.以前一個軍工產品幾乎每個部件都需要研發;現在可以直接採用很多成熟部件,只進行總體拼裝及改進部分部件,工作量小了很多。 明確了這樣的總體思想,我們就再具體說說代碼這個問題。 一個軍工產品可以拆分為若干部件。實際上各個功能往往是分到不同部件中的,一個處理器有很多功能的情況並不普遍。比如做一個坦克,通信、炮管的運動控制、圖像識別及目標的跟蹤、裝彈機的控制、導航定位等等功能,都是分到不同處理器裡面的。甚至有的處理器只負責實時計算、有的處理器只負責人機溝通。一個處理器的功能比較單一,就減少了代碼之間互相干擾的情況。 我們重點要把各個部件的代碼寫對。軍工產品在做整體實驗、毀壞性實驗前,可以進行大量的局部實驗、重複性實驗。比如,我們可以取一個導航模塊放到汽車上,到試驗場跑兩圈,進而測試導航模塊的功能。我們可以用電視+透鏡來測試目標跟蹤裝置的功能。甚至可以把用大炮和加固數據記錄儀來檢驗炮彈某個模塊的功能。 軍工產品研發的特色在於實驗豐富。除了常規的功能試驗,還有很多環境實驗包括:溫度循環實驗,摔落、振動、衝擊,EMC,濕度、鹽鹼等等。每個部件和整機都會進行相應的實驗。很多產品會經過原理樣機、初樣、正樣、定型很多輪實驗。大多數軟硬體毛病都會在實驗過程中暴露出來。 當然,經過實驗驗證的產品也可能在個別情況下發生問題。有次彙報實驗導彈翻轉180度命中主席台。那就再修改、再實驗。也有一些軍工產品在列裝後發現了毛病。那就再做改型,ABCDEFGH……。 總結一下,要想寫出軍工級的代碼,主要也要靠實驗、靠修改。實驗足夠細緻、豐富、充分,bug就會很少。
不要信樓上鍵盤俠瞎理論 利益相關 某航天下屬公司程序員一枚
首先寫航天領域代碼的程序員要求入門級碩士起 基本一大半都是博士出身 從文化水準上已經甩了一般互聯網公司一大截 然後航天領域對代碼的規範性和嚴肅性有著嚴格的要求
其次就是 很多很多技術都是最先應用於航天和軍工的 隨後才普及到商用和民用 so我理解嚼航天和軍工剩飯的人覺得這剩飯不好吃
另外吐槽一下平時加班忙的要死 是誰說作息規律的 勞資九點還在發揚航天精神