程式設計師怎樣鍛鍊程式設計思維,NASA頂級程式設計師是如何程式設計的

2021-03-04 06:03:42 字數 1498 閱讀 7636

1樓:兄弟_軟體學院

平時多做智商測試及邏輯思維鍛鍊題,多做推理,懸疑**也是個不錯的選擇。

nasa 頂級程式設計師是如何程式設計的

2樓:雲南新華電腦學校

你好:美國國家航空航天局(nasa)開發人員的工作是程式設計界最具挑戰性的工作之一。 他們編寫**並開發關鍵任務應用程式,安全是他們主要關注的重點。

在這種情況下,制定嚴謹的編碼準則並遵循,對於他們來說十分重要。這些規則涵蓋了軟體開發的各個方面,如應該如何編寫軟體,應該使用哪些語言特性等等。

儘管很難就一個編碼標準達成共識,nasa 的 jpl 首席科學家 gerard j. holzmann 還是制定了一套名為「發展安全關鍵**的十大規則」的**準則,由所有工作人員共同遵循。

由於 jpl 的工作內容與 c 語言相關,因此本指南主要關注用 c 程式語言編寫的**。但也可以靈活運用到其他語言上。

nasa 的十大編碼準則如下:

1、簡化控制流程:使用儘可能精簡的控制流程構造編寫程式 – 不要使用 setjmp 或 longjmp 構造、goto 語句,以及直接或間接的遞迴呼叫。

2、為迴圈使用固定次數上限:所有的迴圈必須有一個固定的上限。 必須可以被某個檢測工具靜態證實,該迴圈不能達到預置的迭代上限值。

如果該上限值不能被靜態證實,那麼可以認為違背該原則。

3、不要在初始化完成後進行動態記憶體分配。

4、不使用冗長的函式:如果標準格式為一個語句一行、一個宣告一行,那麼函式的長度應在一張紙的範圍內,即每個函式的**行不能超過 60。

5、低斷言密度:**中斷言的密度平均低至每個函式 2 個斷言。斷言被用於檢測在實際執行中的異常情況。

斷言必須沒有***,並應該定義為布林測試。當一個斷言失敗時,應該執行一個明確的恢復操作,例如,把錯誤情況返回給執行該斷言失敗的函式呼叫者。對於靜態工具來說,任何能被靜態工具證實其永遠不會失敗或永遠不能觸發的斷言違反了該規則(例如,通過增加無用的 assert(true) 語句是不可能滿足這個規則的)。

6、以最小範圍級別宣告資料物件:該原則同時也是資料隱蔽(data hiding)的基本原則。所有資料物件均必須以儘可能最小的範圍級別進行宣告。

7、檢查引數和返回值:應在每次呼叫函式後檢查非空函式的返回值,並在每個函式內部檢查引數的有效性。

8、限制預處理程式的使用:前處理器的使用僅受包含標頭檔案和簡單的巨集定義的限制。符號拼接、可變引數列表(省略號)和遞迴巨集呼叫不被允許。

所有的巨集必須擴充套件為完整的語法單元。通常不建議使用條件編譯指令,但也不總是能夠避免每次在**中這樣做的時候必須有基於工具的檢查器進行標記,並有充足的理由。

9、限制指標的使用:具體來說,不允許有超過一級的解除指標引用。解除指標引用操作不可隱藏在巨集定義或型別宣告中。不允許使用函式指標。

10、編譯所有**:從開發工作第一天開始時,在編譯器開啟最高階別警告選項的條件下對**進行編譯。在此設定之下,**必須零警告編譯通過。

**必須通過源**靜態分析工具,每天檢查一次以上,且零警告通過。

請參考!

程式設計師為什麼要用Linux環境程式設計,用windows不可以嗎

linux和windows是兩個不同的作業系統,不同的作業系統,編譯的環境不一樣,所以知識不一樣,linux因為是開源的,就是免費的,所以有些公司用linux,這樣可以節約成本,當然,這知識linux的優點之一。就好比,你選擇用谷歌瀏覽器上網和選擇用ie瀏覽器上網都是可以的,但是這兩個瀏覽器有不同的...

有程式設計師老公是怎樣的體驗,有一個程式設計師老公是一個怎樣的體驗

收入比較高,加班比較多,比較自由,比較宅,每個人的感受不同,程式設計師也和其他職業一樣,關鍵還是人的區別 有一個程式設計師男朋友是怎樣的體驗 其實程式設計師也是普通人,並沒有大家認為的那些宅,沉悶之類的,每個行業都是有各種各樣的人的,程式設計師行業也是一樣,也有陽光開朗的,當然也有比較宅的。程式設計...

位高效的程式設計師,必需學習哪些程式語言以

要根據市場需求所定 比如現在的php html5等,都是非常熱門的 全球程式設計師最喜歡有什麼程式語言進行開發 程式設計師學多少種程式語言才是好 熱愛程式設計的程式設計師,早期是因為什麼對程式語言產生興趣的 我來講個故事吧復。制 十幾年前,高 三。我的一個哥們和我一起用gvbasic編了一個類似於 ...