天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

沒有完美的軟件:編程永遠(yuǎn)不容易

  英文原文:Bad Software, Worse Solutions: Programming Will Always Be Hard

  最近讀了一篇文章 Software Runs the World: How Scared Should We Be That So Much of It Is So Bad? ,這篇文章沒什么可說,但是評論卻很有趣,特別是很多計算機科學(xué)的博士表示,使用一些規(guī)范的方法,可以讓軟件變的更好,還有規(guī)范、認(rèn)證、授權(quán)。

  對于這些想法,我只能說“祝你好運”。我寫代碼寫了30年,我可以很肯定的說“沒有銀彈”,沒有神奇的方法或者論文可以保證讓軟件變得完美、沒有 bug。

  事實上,我們甚至很難定義一個程序,就更別提如何開發(fā)一個完美的程序了。軟件在太多領(lǐng)域存在,有太多的編程語言,業(yè)務(wù)需求,還有運行環(huán)境,并且要和各種不確定的系統(tǒng)交互。你覺得你的 iPhone 游戲,股票交易系統(tǒng),烤面包機還有火星登陸器有什么共同之處嗎?你覺得給匯編,C,Javaphp,F(xiàn)ortran,LIST 和 Erlang 頒發(fā)證書可行嗎?還有各種混合語言 web 應(yīng)用,以及分布式系統(tǒng)。

  你需要正式的描述太多的東西,光列出所有的編程語言似乎就不可能,更不用說如何用這些語言寫出完美的程序了。

  我喜歡人們拿程序和社會工程對比。建造一座橋的基礎(chǔ)在過去的兩千年中沒有改變過:你需要考慮重力,風(fēng)力,下雨以及炎熱還有很多基本的材料。這些東西羅馬的工程師就知道了。但是編程不一樣,我們?yōu)槊總€程序創(chuàng)造一個獨立的世界,或者說我們把各種世界元素整合在一個世界中,然后在這個世界中建造幾百座不同的橋,它們要同時良好的工作,還要考慮到我們創(chuàng)造的世界會不可預(yù)知的改變。

  還有,我們造一座橋需要經(jīng)過幾年的規(guī)劃和建造,然后使用幾十年,上百年而不用進(jìn)行任何修改。而軟件在一直的變化當(dāng)中,不管是在開發(fā)的時候還是開發(fā)完以后。美國在過去的兩百年間建造了60萬座橋。但是過去五年中我們就創(chuàng)造了一百萬個 iPhone 的應(yīng)用應(yīng)用程序可以從幾行到幾千萬行代碼,并且在現(xiàn)代生活的每一個角落存在。

  讓編程如此困難的原因是它無處不在,可以影響一個人或者10億人,可以運行幾十年或者只需要運行一次。它跟造橋完全不一樣。最近的火星登陸器是用幾百萬行C代碼寫的,并且只運行一次。而高速股票交易系統(tǒng)一秒鐘就要被執(zhí)行無數(shù)次。

  認(rèn)為世界上存在一套標(biāo)準(zhǔn)的方法可以讓你保證開發(fā)的程序是完美的這種想法很可笑。即使這種完美的奇跡存在,它的開銷也會讓它無法實際實施。好吧,你可以證明一段代碼沒問題,但是它運行在哪里呢?你能控制操作系統(tǒng)嗎?還是其他公司提供的 WebService 接口?你不能控制用戶的交互,你也不能控制 CPU,那么你如何保證這段完美的代碼可以完美的運行?

  我寧愿相信你發(fā)明了時間機器,也不愿意相信你的標(biāo)準(zhǔn)流程可以在這個混亂的世界行得通。

  另外一個“善意的謊言”是我們可以通過標(biāo)準(zhǔn)的測試和認(rèn)證來證明一個程序員可以編寫完美的代碼。程序員不是管道工,管道工和水、管道、氣體,還有閥門打交道。這些東西幾乎不會改變。它們遵循物理規(guī)律,是經(jīng)過認(rèn)可的科學(xué),它們不會莫名其妙的變成另外一個東西。

  我認(rèn)識一個程序員通過了各種 Java 認(rèn)證,但是還是沒有能力編寫實際的應(yīng)用程序。想象一下,要為一個人進(jìn)行所有語言的認(rèn)證,所有程序的認(rèn)證,從面包機到宇宙飛船。要么你創(chuàng)造一些非常基礎(chǔ)而無用的認(rèn)證,或者非常細(xì)節(jié)的認(rèn)證而沒有人在乎。考慮到所有這些,還有不斷變化的需求,當(dāng)你需要開發(fā)一些新東西的時候你怎么辦?把所有人炒了,然后雇傭新的人?

  我在工作中和一位 UX 設(shè)計師一起培訓(xùn)一組 Java Web 程序員開發(fā) ios 程序。即使一個有經(jīng)驗的開發(fā)者突然做一些不一樣的開發(fā)也是很困難的。但是假如我們一定堅持要正規(guī)的流程和經(jīng)過認(rèn)證的 ios 程序員才能在市場上競爭,那么我們可能已經(jīng)關(guān)門了。

  我們?nèi)齻€人花了兩個月時間開發(fā)了一個新的 iPhone 應(yīng)用。我們只有不斷快速的迭代開發(fā)才能在不斷變化的需求和競爭中勝出。期望一個正規(guī)的流程在發(fā)布前驗證所有的代碼是噩夢。在產(chǎn)品發(fā)布幾年后公司可能都不存在了,誰有在乎這個程序是否被認(rèn)證過呢?

  現(xiàn)實是殘酷的。30多年的編程經(jīng)驗,可以讓我非常自信的說我寫的代碼還不錯。在 1987~1994 年間,我領(lǐng)導(dǎo)開發(fā)并且要最終敲定發(fā)布的二進(jìn)制碼。我們通過軟盤的形式發(fā)布了三個 Mac 應(yīng)用,11個主要版本,沒有一次大的事故(要知道每次發(fā)布的硬件成本就是100萬美元)。我們發(fā)布的代碼很完美嗎?我們是經(jīng)過認(rèn)證的 Mac OS 開發(fā)者/設(shè)計師嗎?不是!但這些應(yīng)用解決用戶的問題了嗎?是的。

  我說的這些能證明任何東西嗎?不能。但是好的代碼確實存在,并且常常出自沒有證書,沒有學(xué)歷,沒有被證明過的程序員之手。

  也許有一天機器人可以代替人來開發(fā)軟件,并且保證不出錯。人類就可以幸福的生活在完美的軟件創(chuàng)造的世界中了。

  但是我更相信時間機器會先出現(xiàn),并且軟件是由人類編寫的。

it知識庫沒有完美的軟件:編程永遠(yuǎn)不容易,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产人妻精品午夜福利免费不卡 | 十分钟免费观看大全视频 | 在线 无码 中文 强 乱 | 99蜜桃在线观看免费视频网站 | 姑娘视频日本在线播放 | 国产一区二区青青精品久久 | 国产精品高清视频在线 | 黄瓜视频苹果直接安装 | 日本十八禁无遮拦啪啪漫画 | 一区三区在线专区在线 | 精品国产国产综合精品 | 内射一区二区精品视频在线观看 | 免费观看成人毛片 | 超碰日韩人妻高清视频 | 沦为公交两奶头春药高潮迭起 | 动漫美女和男人下载 | 国产在线观看免费观看不卡 | 色中色最新地址登陆 | 无码内射成人免费喷射 | 成年女人免费播放影院 | 亚洲高清国产拍精品动图 | 超碰人人澡人人胔 | 特黄特色大片免费播放器试看 | 一本大道熟女人妻中文字幕在线 | 私人玩物在线观看 | 暖暖视频在线观看高清... | 色欲av蜜臀av高清 | 无遮掩H黄纯肉动漫在线观看星 | 亚洲日韩在线天堂一 | 免费精品国偷自产在线在线 | 色婷婷五月综合久久中文字幕 | 亚洲欧洲日韩国产一区二区三区 | 97人摸人人澡人人人超一碰 | 青青青伊人 | 国语自产二区高清国语自产拍 | 国产免费怕怕免费视频观看 | 伸进同桌奶罩里摸她胸作文 | 幼儿交1300部一区二区 | 恋夜影院支持安卓视频美女 | 秋霞在线看片无码免费 | 久久久久久九九 |