軟件1.0與軟件2.0_風聞
code2Real-有人就有江湖,有code就有bug2021-05-14 16:56
《明朝那些事兒》中讓我印象最深的是對古代將領軍事才能劃分了幾個檔次,讓人覺得軍事指揮不再虛無縹緲。
教科書對軟件的分類已經過時了。因此需要重新定義軟件的檔次。
軟件1.0:
基於線程模型的軟件開發技術。主要代表是用C/C++,JAVA,RUST、Python等開發。
這些編程語言有一個特點,不管他們的源代碼以何種形式展現,對計算機而言,都是一串線性符號。理論上,所有的代碼都可以寫在一行上。
20世紀末,有一個計算機天才認為這些編程語言源自電報,就象火箭的直徑受限於馬屁股的寬度(馬屁股的寬度決定車軸的寬度,車軸寬度決定鐵軌的寬度,而火箭需要用火車運輸,……,最後火箭直徑不能超過3.5米)
電報自動化後,報文輸入輸出都寫在一條紙帶上,進一步抽象就是圖靈機模型。
比如發一個電文:AA TGC BB。
如果雙方沒有事先約定,報文會不知所云,因此約定,AA是接收方代號,BB是發送方代號,TGC表示“貨物已提交海關”。
問題是電報傳輸的信道是線性的,信道易受干擾。因為干擾TGC可能是其它字母組合:WB GEC ED。
為了保障傳輸的正確性,需要在通信協議中加入種種措施(糾錯碼,冗餘等),降低差錯率。
因此,計算機將大量的資源犧牲在保障協議的正確性上。
那種感覺就象為了圓一個謊言,需要編一千個謊言一樣,軟件1.0的電報模式將產生越來越多的工作量。
隨着深度學習的興起,軟件開始向2.0發展。
有人將基於神經網絡的軟件開發視為軟件2.0(這個定義還沒有被廣泛接受)。
軟件1.0用編程語言生成一維處理邏輯過程,由這些過程去處理這些字符數據。
軟件2.0通過訓練調整神經網絡每一層的參數,由這個神經網絡去處理字符數據。
神經網絡不再是一維結構了,基於神經網絡的軟件2.0開始突破電報模式的束縛。
已經開始有人嘗試是神經網絡分析github上的代碼,未來有望用計算機自動生成代碼,或者提示程序容易犯的錯誤,將錯誤消滅在編譯之前。