自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

世界上最完美的兩個(gè)軟件,太厲害了!

開發(fā) 前端
在航天飛機(jī)軟件開發(fā)小組,軟件開發(fā)周期中有三分之一的時(shí)間不寫代碼,而是和NASA一起用來討論需求:軟件應(yīng)該做什么事情。即使是最微小的細(xì)節(jié)也要達(dá)成一致。不是口頭達(dá)成一致,而是寫下來,文檔化,形成規(guī)范,非常專業(yè)和精確。

今天給大家介紹兩個(gè)軟件,一個(gè)體現(xiàn)了人類在軟件開發(fā)流程上的極致,另外一個(gè)則體現(xiàn)了程序員個(gè)體能力的巔峰。

一、航天飛機(jī)飛控軟件

先來說第一個(gè),航天飛機(jī)飛行控制軟件,就是下圖這個(gè)大家伙。

圖片圖片

航天飛機(jī)重達(dá)120噸,還攜帶著2000噸的燃料。

它有四臺(tái)硬件相同,軟件也相同的計(jì)算機(jī)對(duì)發(fā)射過程進(jìn)行精準(zhǔn)控制,從幾千個(gè)傳感器中提取信息,每秒做出幾百個(gè)決定,并且對(duì)每個(gè)決定進(jìn)行投票。

第五臺(tái)計(jì)算機(jī),則運(yùn)行著不同的軟件,隨時(shí)待命,準(zhǔn)備替換其他發(fā)生故障的計(jì)算機(jī)。

這些計(jì)算機(jī)要確定什么時(shí)候?qū)χ靼l(fā)動(dòng)機(jī)點(diǎn)火,什么時(shí)候下令固體火箭助推器點(diǎn)火,火箭姿態(tài)控制....

每次發(fā)射,軟件都控制著價(jià)值40億美元的設(shè)備,六名航天員的生命,以及國(guó)家的夢(mèng)想。

這個(gè)軟件不能崩潰,不能重啟,最小的誤差都不允許:一個(gè)三分之二秒的計(jì)時(shí)錯(cuò)誤就會(huì)使航天飛機(jī)偏離航線近5公里。

洛克希德馬丁公司的航天飛機(jī)小組實(shí)現(xiàn)了目標(biāo):軟件幾乎沒有錯(cuò)誤,接近完美。

軟件的最后三個(gè)版本,每個(gè)版本(42萬(wàn)行代碼)只有一個(gè)Bug。

最后的11個(gè)版本一共有17個(gè)錯(cuò)誤,同等復(fù)雜度的商業(yè)程序有5000個(gè)。

這樣的軟件是如何煉成的呢?

答案是極為苛刻軟件流程。

洛克希德馬丁公司的航天飛機(jī)軟件小組有260名員工,這些人創(chuàng)造了一種完全不同的開發(fā)文化。

沒有超級(jí)明星程序員,開發(fā)軟件的整個(gè)流程都是有意設(shè)計(jì)的,不依賴任何特定的人。

這個(gè)流程使得他們過上正常的生活,滿足最后期限,交付完全符合其承諾的軟件。

這個(gè)流程包含幾個(gè)要點(diǎn):

1. 軟件的質(zhì)量取決于軟件的計(jì)劃

在航天飛機(jī)軟件開發(fā)小組,軟件開發(fā)周期中有三分之一的時(shí)間不寫代碼,而是和NASA一起用來討論需求:軟件應(yīng)該做什么事情。

即使是最微小的細(xì)節(jié)也要達(dá)成一致。不是口頭達(dá)成一致,而是寫下來,文檔化,形成規(guī)范,非常專業(yè)和精確。

未經(jīng)雙方的同意,規(guī)范中的任何內(nèi)容都不會(huì)更改。

沒有良好定義的規(guī)范,程序員不會(huì)改任何一行代碼。

例如讓航天飛機(jī)使用GPS導(dǎo)航,這一變化僅涉及6366行代碼,占程序總量的1.5%, 但是相關(guān)的文檔長(zhǎng)達(dá)2500頁(yè),涵蓋了各種各樣的條件,分支,幾乎就是偽代碼了。

而航天飛機(jī)系統(tǒng)的軟件,總文檔足足有30卷,40000頁(yè)!

2. 兩個(gè)百科全書式的數(shù)據(jù)庫(kù)

一個(gè)是代碼歷史的數(shù)據(jù)庫(kù),每一行代碼都有注釋,顯示每次的更改時(shí)間,更改原因,更改目的,有哪些文檔詳細(xì)說明了更改。

對(duì)于代碼發(fā)生的一切都記錄在這里,每一行代碼的“祖譜”都可以立刻提供給每個(gè)人。

第二個(gè)是錯(cuò)誤數(shù)據(jù)庫(kù),記錄了軟件在編寫和運(yùn)行時(shí)發(fā)生的每一個(gè)錯(cuò)誤,可以追溯到近20年前。

每個(gè)錯(cuò)誤都會(huì)記錄下它被發(fā)現(xiàn)的時(shí)間,是誰(shuí)發(fā)現(xiàn)了它,當(dāng)時(shí)正在發(fā)生什么活動(dòng)(測(cè)試,訓(xùn)練,飛行),錯(cuò)誤是如何引入的,為什么逃過了設(shè)計(jì)階段,開發(fā)階段,測(cè)試階段的嚴(yán)格審查.....

由于積累了如此多的數(shù)據(jù),以至于他們開發(fā)了一個(gè)代碼模型,能預(yù)測(cè)某個(gè)版本中可能有多少錯(cuò)誤。

如果開發(fā)人員和測(cè)試人員發(fā)現(xiàn)的Bug太少,大家會(huì)重復(fù)流程,努力使得現(xiàn)實(shí)和預(yù)測(cè)相匹配。

3.不止要修復(fù)錯(cuò)誤,要修復(fù)任何引入錯(cuò)誤的東西

如果軟件存在缺陷,那么編寫它的方式一定存在問題。

在計(jì)劃階段沒有發(fā)現(xiàn)的Bug,是如何逃過檢查的?檢查流程是否出了問題,是不是要在checklist上增加一項(xiàng)檢查?

重要的是,不要將錯(cuò)誤歸咎于個(gè)人。流程要承擔(dān)責(zé)任---啟動(dòng)一個(gè)分析的流程來發(fā)現(xiàn)Bug的原因。

航天飛機(jī)軟件開發(fā)小組的流程是如此強(qiáng)大,不僅僅通過了SEI CMM5的認(rèn)證,而且SEI的不少標(biāo)準(zhǔn)就來自于這個(gè)小組的各種實(shí)踐。

洛克希德馬丁開發(fā)了近乎完美的軟件,大家肯定會(huì)想到一個(gè)問題:這種開發(fā)方式會(huì)不會(huì)扼殺創(chuàng)造力?

他們的回答是:會(huì),因?yàn)榇蠹冶仨毎凑帐謨?cè)上規(guī)定的流程去做,并且時(shí)時(shí)刻刻都有人在背后監(jiān)督。

人們必須將創(chuàng)造力用于改變流程,而不是改變軟件。

二、排版軟件TEX

經(jīng)典巨著《計(jì)算機(jī)程序設(shè)計(jì)的藝術(shù)》在程序員界可謂是無(wú)人不知,無(wú)人不曉了。

圖片圖片

1973年,這部剛出到第三卷的書(計(jì)劃寫七卷)已被計(jì)算機(jī)界視為“神作”, 1974年美國(guó)計(jì)算機(jī)學(xué)會(huì)就“迫不及待”的把計(jì)算機(jī)界的最高獎(jiǎng)圖靈獎(jiǎng)授予高德納。

此時(shí)高德納僅僅36歲 !只靠一套還沒有完成的書就獲得ACM圖靈獎(jiǎng),不但是前無(wú)古人,估計(jì)也后無(wú)來者了。

然而令人大跌眼鏡的是, 拿到圖靈獎(jiǎng)以后, 高德納宣布暫停寫作, 理由竟然是現(xiàn)有的計(jì)算機(jī)排版系統(tǒng)太差,破壞了書的美感 !然后單槍匹馬開發(fā)出了革命性的排版系統(tǒng)TEX , TEX至今仍是全球?qū)W術(shù)排版的不二之選。

TEX功能強(qiáng)大,幾乎無(wú)懈可擊,其版本號(hào)也很有意思,不是數(shù)字(3.0, 3.1, 3.2....) 也不是年份(Windows 95, 98, 2000...),而是不斷逼近的圓周率 (3.1415926...) ,這從側(cè)面反映了軟件幾近完美,不需要做改進(jìn)了。

高德納曾表示“最后一次升級(jí)是(于我過世后)將版本數(shù)改為 π,那時(shí)任何余下的漏洞將被看作程序的功能!

有趣的是高納德為此還設(shè)置了獎(jiǎng)金,誰(shuí)能從TEX 發(fā)現(xiàn)第一個(gè)Bug ,獎(jiǎng)勵(lì)2.56美元,然后每年翻一倍,5.12,10.24......

作為算法的大師,不可能不知道指數(shù)增長(zhǎng)的可怕性,但高德納對(duì)自己的代碼質(zhì)量非常有信心,事實(shí)上,當(dāng)獎(jiǎng)金達(dá)到327.68美元以后,基本上就沒什么Bug報(bào)出來了。 

那些找到Bug 的人收到高德納簽名的支票以后也不去兌換, 而是作為珍品收藏了 :-)

高德納編程能力之強(qiáng)可以說是碾壓硅谷的所有程序員,面向?qū)ο蟮陌l(fā)明人Alan Kay(2003年圖靈獎(jiǎng))這么說過:

60年代末,當(dāng)我在斯坦福從事AI項(xiàng)目時(shí),每個(gè)感恩節(jié)我們都會(huì)和硅谷的編程高手們舉行編程競(jìng)賽,McCarthy(人工智能之父,1971年獲圖靈獎(jiǎng))出題, 獎(jiǎng)品是好像是一只火雞。

高德納參與的那一年,把我們都給虐了, 他的代碼無(wú)論是程序執(zhí)行和算法執(zhí)行都是最快的,并且他用的是一臺(tái)最慢的批處理機(jī)器!

我們問高德納:“你是怎么做到的?”

他說:“當(dāng)我學(xué)習(xí)編程時(shí),如果每天有五分鐘的時(shí)間使用機(jī)器,就高興得不得了, 所以必須要讓程序一次運(yùn)行成功,沒有錯(cuò)誤,算法設(shè)計(jì)達(dá)到最佳?!?/p>

責(zé)任編輯:武曉燕 來源: 碼農(nóng)翻身
相關(guān)推薦

2023-03-03 09:11:55

軟件開發(fā)NASA

2024-10-14 10:58:13

2024-07-10 10:25:15

2013-04-24 09:57:08

Excel微軟

2025-03-27 00:45:00

2023-07-31 08:59:46

軟件FossilSQLite

2022-04-08 08:11:28

Python代碼

2021-11-01 07:50:44

TomcatWeb應(yīng)用

2018-11-06 12:22:18

排序算法代碼

2023-03-16 09:57:34

Linux發(fā)行版Arch Linux

2014-09-05 09:08:58

2010-09-02 13:21:46

2013-06-09 08:52:50

哈希表

2025-03-13 00:35:00

2013-07-09 10:11:41

程序設(shè)計(jì)大賽程序員

2020-10-23 10:36:08

Dropbox

2014-02-11 09:58:19

環(huán)保數(shù)據(jù)中心泰坦

2015-11-25 09:41:05

數(shù)據(jù)中心

2024-02-26 12:42:40

2017-02-23 08:00:04

智能語(yǔ)音Click
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)