国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

遠離了刀耕火種,我們是否找到新的銀彈?

2021-10-13 05:07陳徐毅
中關(guān)村 2021年9期
關(guān)鍵詞:程序員開發(fā)者編程

陳徐毅

軟件和軟件工程是計算機科學技術(shù)恒久的主題,不論信息技術(shù)怎么發(fā)展,互聯(lián)網(wǎng)形態(tài)如何演變,都繞不開這個關(guān)鍵核心的事物。在業(yè)界開發(fā)者的群體中,人們習慣用“銀彈”一詞來比喻解決軟件領(lǐng)域有共識且客觀存在的顯著問題的方法,軟件史上最著名的銀彈問題則源于經(jīng)典之作《人月神話》一書。

上世紀70年代IBM System/360操作系統(tǒng)之父佛瑞德·布魯克斯其所著的《人月神話》一作系統(tǒng)性地解說了軟件工程、項目管理相關(guān)課題,書中通過計算、案例來證明軟件開發(fā)額外人力的投入無益于軟件工程生產(chǎn)力的提高,作者在之后的章節(jié)中追加了《沒有銀彈》一文,并作出了沒有任何一項技術(shù)或方法可使軟件工程的生產(chǎn)力在十年內(nèi)提高十倍的假設(shè)。但是,這個假設(shè)在1990年代中期已被認為不再成立。

其實,銀彈問題的起源還可以追溯到軟件危機。軟件危機主要發(fā)生在那些開發(fā)周期長、費用昂貴、質(zhì)量控制難以保證、生產(chǎn)率低下的大型軟件系統(tǒng),它們的復(fù)雜性已遠超出人的智力范疇,大型軟件系統(tǒng)不能沿襲工作室的開發(fā)方式,就像制造小木船的方法不能生產(chǎn)航空母艦一樣。這種大型項目常伴高風險,一直到1980年代面向?qū)ο蠹夹g(shù)才解決了一部分在軟件危機上的窘境。

Linux不是銀彈,Git也不是

第一次銀彈問題的削弱出現(xiàn)在1990年代中后期,因為開發(fā)者普遍感覺到軟件工程生產(chǎn)力較十年前提升了十數(shù)倍,盡管他們依舊習慣于“沒有銀彈”的說法。那么第一枚銀彈是誰?在那個時間點上很容易聯(lián)想到Linux。

但眾所周知的是,Linux本身不可能是銀彈,而重點是,它是世界上最龐大的開源軟件的軟件工程。基于這一點,Linux生態(tài)的開發(fā)者們有足夠多的時間和理由去試錯,《大教堂和市集》的作者埃里克·雷蒙德提出林納斯定律:足夠多的眼睛,就能讓所有問題浮現(xiàn)。這句話非常契合那個時期,在Linux快速發(fā)展的時間里,面向?qū)ο?、高級語言、統(tǒng)一開發(fā)環(huán)境、專家系統(tǒng)、人工智能,這些更接近“銀色子彈”的事物隨之伴生。這些技術(shù)的目的是讓具體應(yīng)用的復(fù)雜程度與程序本身相分離,Git也是其中之一。

版本控制是軟件項目管理的重要一環(huán),也是追求效率的主要改進方向,畢竟軟件工程少不了溝通和協(xié)作。Git并非一開始就流行于世,在其之前還有BitKeeper和Monotone,甚至更早的CVS。Git作為BitKeeper的開源替代品被林納斯·托瓦茲開發(fā)出來,此后一大批支持Git源碼訪問的分布式版本控制網(wǎng)站(源代碼托管平臺)拔地而起,其中最大的擁有超過4000萬注冊用戶和1.9億代碼庫。

現(xiàn)在的軟件和軟件工程領(lǐng)域,早已遠離了刀耕火種的年代

Git也不是銀彈,因為工具本身帶來的提效和縮短開發(fā)進度,并沒有解決軟件工程的本質(zhì)性難題,即如何從抽象性問題發(fā)展出具體概念上的解決方案。但這些年來涌現(xiàn)出來的工具和方法論,都可以看成是接近銀彈的事物。

刀耕火種的遠去和新的銀彈

現(xiàn)在的軟件和軟件工程領(lǐng)域,早已遠離了刀耕火種的年代,擺在我們面前的是模塊化的高級編程語言、高度集成的環(huán)境,各種庫、各種框架,彈性計算帶來的流水線和自動化工具,我們正處在一個“敏捷”的時代。盡管在軟件工程生產(chǎn)力得到較高程度解放的今天,開發(fā)者們已不太關(guān)心當初的那個銀彈問題,但是我們卻面臨著新的問題,這迫使人們?nèi)ふ倚碌你y彈。

軟件工程自動化帶來的結(jié)果就是高頻迭代,但是創(chuàng)新大幅減少,99%的程序員在實現(xiàn)需求,只有不到1%的程序員在創(chuàng)造工具和方法。但我們認為這也是技術(shù)進程的一個必經(jīng)階段,需求爆炸要求自動化,自動化帶來DevOps,DevOps造成分工更加精細化,乃至CI/CD管道部署,一個高度自動化流水線已然在軟件工程領(lǐng)域形成。

程序員的精細化分工造成綜合素質(zhì)整體下滑,至少過去20年都是如此。當代程序員很少去研究匯編和機器語言,因為這完全沒有必要,現(xiàn)在的開發(fā)環(huán)境是建立在“高度文明”之上的,絕大多數(shù)開發(fā)者只需關(guān)注邏輯的實現(xiàn),底層世界與之無關(guān)。但是數(shù)字文明的底層世界是C語言,再下面是匯編語言和機器語言,這也是回溯技術(shù)進程的事實,現(xiàn)在的“高度文明”不可能是空中樓閣。

高度自動化讓程序員看起來更像是流水線上的零部件,而不是一個創(chuàng)作者。殊不知人類智能最偉大的地方并非只有邏輯思維,更多的是創(chuàng)造思維??稀者d和丹尼斯·里奇為了使開發(fā)UNIX更高效設(shè)計了C語言;林納斯為了更好地管理Linux內(nèi)核開發(fā)了Git。許許多多的工具一開始也許只是因為一個小目的被創(chuàng)造出來,但是它們后來逐漸成了開發(fā)者世界的大器。數(shù)字文明會否出現(xiàn)斷層是一個警惕性問題,也許過去20年我們失去的,才是今后我們想要的銀彈。

之前9月的時候,曾有消息曝出林納斯怒噴某代碼托管平臺“合成了一堆無用的垃圾”一事,盡管林納斯并非因平臺本身或者其他項目的粗糙而惱火,而是為即將用于Linux Kernel 5.15的一個驅(qū)動程序的合并感到不滿。此事也折射出社會化編程也不是銀彈。

銀彈問題總是關(guān)乎程序員、組織和需求的問題,它們一直在變化。有位“謙遜的程序員”曾經(jīng)說得好:軟件危機的主要原因,毫不客氣地說,在沒有機器的時候,編程根本不是問題;當我們有了電腦,編程開始變成問題;而現(xiàn)在我們有巨大的電腦,編程就成了一個巨大的問題。

猜你喜歡
程序員開發(fā)者編程
編程,是一種態(tài)度
怎樣成為一名優(yōu)秀程序員
編程小能手
紡織機上誕生的編程
程序員之子
加班
iOS開發(fā)者調(diào)查
iOS開發(fā)者調(diào)查
栝樓產(chǎn)業(yè)開發(fā)者謝獻忠