五月婷婷丁香性爱|j久久一级免费片|久久美女福利视频|中文观看在线观看|加勒比四区三区二|亚洲裸女视频网站|超碰97AV在线69网站免费观看|有码在线免费视频|久久青青日本视频|亚洲国产AAAA

軟件開發(fā)與演化: 大語言模型打開的空間和帶來的挑戰(zhàn)

軟件、軟件開發(fā)與演化

軟件是人類制造的最復雜制品,軟件開發(fā)和演化是人類針對所解決問題的創(chuàng)造性思維活動。科學家探索世界、工程師改造世界、計算機科學家和軟件工程師是創(chuàng)造世界的。具體來講,軟件是人類大腦思維活動的體現(xiàn)。認識和理解人的思維活動是非常困難的,因為軟件是人類大腦邏輯思維活動的體現(xiàn),所以認識與理解人的思維活動非常困難,理解軟件系統(tǒng)也非常困難,這是最基本的觀點,也是核心觀點。

軟件的創(chuàng)造過程與制造過程合二為一,所以軟件系統(tǒng)開發(fā)出來之前沒有參考樣品,而且?guī)砗芏鄦栴},比如軟件系統(tǒng)是難以估算成本的,所以投資軟件具有相當大的風險和不確定性。

人是軟件開發(fā)與演化的主體,而軟件開發(fā)與演化是把現(xiàn)實世界復雜的問題模型轉(zhuǎn)換為計算模型。目標是追求高效、高質(zhì)量、低成本,而解決的核心問題是如何使得軟件系統(tǒng)滿足需求,擺脫缺陷。這兩個問題和人密切相關(guān),人是軟件需求產(chǎn)生、認識、確認的主體,需求是人類在認識復雜世界的基礎(chǔ)上形成的主觀意圖,經(jīng)常不斷變化。從軟件工程師角度說,經(jīng)常面對按照錯誤的需求開發(fā)出正確軟件的困局。

另外一個方面,人在軟件開發(fā)演化中會犯錯,因為人對復雜事物的認識不是一蹴而就,需要經(jīng)歷循環(huán)反復、不斷探索的過程,所以軟件系統(tǒng)的缺陷是難以避免的。軟件可信保障成本很高,其實大家都知道,任何人和機構(gòu)都不能確保軟件質(zhì)量。通俗說大家都知道,軟件產(chǎn)品是沒有三包的。曾經(jīng)軟件質(zhì)量是以正確性為目標的,強調(diào)軟件系統(tǒng)的絕對正確性,要形成客觀認識。但那個時候軟件系統(tǒng)是運行在封閉靜態(tài)環(huán)境中的系統(tǒng),可以看成是個數(shù)學系統(tǒng)。希望基于這種數(shù)學證明基礎(chǔ)之上對軟件正確性形成客觀認識。基本條件是軟件需求由形式化規(guī)約描述,形成人對軟件系統(tǒng)的確認關(guān)系,但是實際上現(xiàn)實中做不到,是一個理想。所以現(xiàn)在軟件質(zhì)量是以可信性為目標,退了一步,強調(diào)相對可信,主觀認識,這是因為軟件系統(tǒng)是在開放動態(tài)環(huán)境下不斷演化的系統(tǒng)。

沒有辦法把它看成數(shù)學系統(tǒng),由于復雜性和規(guī)模不斷地增大,數(shù)學證明這種需要投入巨大的成本,現(xiàn)實中沒法投入,也做不到。所以后退一步是強調(diào)可信性,可信性是基于認識與理解、獲取客觀證據(jù)基礎(chǔ)之上形成主觀認識,人為判斷這個軟件可以運行或不可運行。前提條件是軟件需求是自然語言來描述,形成人類與軟件系統(tǒng)的一種信用關(guān)系。

再看軟件開發(fā)與演化任務(wù),人類在現(xiàn)實世界中所承擔的任務(wù)分為兩大類:一類是預(yù)測性任務(wù),通常不需要承擔風險責任,沒有可信保障需求。另外一類是是決策性任務(wù),要完成決策性任務(wù),通常是需要承擔相應(yīng)的風險責任,有可信保障需求。比方天氣預(yù)報就是典型的預(yù)測性任務(wù)。人在軟件開發(fā)與演化中完成的是決策性任務(wù),需要對任務(wù)完成正確與否作出可信性判斷,需要對軟件系統(tǒng)是否滿足需求、擺脫缺陷作出可信性判斷,承擔相應(yīng)的風險增長,在此基礎(chǔ)上構(gòu)成一定的可信保障。

具體來說,軟件開發(fā)與演化過程是把自然語言的需求轉(zhuǎn)換成為滿足需求的程序代碼,這是一個創(chuàng)造性過程,也是一個決策性過程。所以動作難度很大,而且人力成本很高,需要經(jīng)過一系列的工作才能最終達到的目標。在這個過程里面,主要設(shè)計兩種語言:一種是自然語言,一種是程序語言。正是因為軟件開發(fā)與演化是創(chuàng)造性的過程,是決策性任務(wù),非常困難,所以就想辦法通過開發(fā)研制各種各樣的軟件工具給人提供幫助和支持,提高軟件開發(fā)與演化各個階段的自動化程度,從而希望形成一種人機協(xié)同的軟件開發(fā)與演化環(huán)境。但在現(xiàn)有軟件工具有兩方面的弱點:

一方面現(xiàn)有軟件工具很少考慮按照自然語言需求直接生成程序代碼,這是因為將自然語言描述需求轉(zhuǎn)換為滿足需求的程序代碼,這是不可判定的計算問題。現(xiàn)有的軟件工具難以突破自然交互障礙,缺乏自然語言接口與人交互,所以人機協(xié)同的工作空間、有效性和靈活性受到了大量的限制。這兩個薄弱環(huán)節(jié)其實在大語言模型出來以后,應(yīng)該來說都有了比較大的突破。

軟件系統(tǒng)是通過算法解決問題的,而算法是求解問題需要遵循的被清楚指定簡單指令的集合。現(xiàn)實世界中能用計算機解決的問題和不能用計算機解決的問題,分別稱為可判定計算問題與不可判定計算問題。而這兩類問題的分類基本條件或基本依據(jù),是否存在解決問題的算法,當然算法解決問題需要消耗資源,所以有算法復雜性,有易解問題和難解問題。

現(xiàn)在討論的算法都是基于邏輯設(shè)計的算法,也就是說求解問題需要遵循清楚指令的簡單指令集合,算法每一步都有內(nèi)在的解釋,理論上算法的正確性是可證明的,也就是可以證明算法的輸出結(jié)果是滿足需求公約的。

神經(jīng)網(wǎng)絡(luò)模型的出現(xiàn)和大量的使用,現(xiàn)在又有了另外一類算法,稱之為是預(yù)測性算法。這個預(yù)測性是算法是基于概率與統(tǒng)計原理以及訓練數(shù)據(jù)形成的數(shù)學模型。典型的特征是輸出結(jié)果是預(yù)測性結(jié)果,可以輸出預(yù)測性判斷、預(yù)測性的內(nèi)容生成。既然是預(yù)測性結(jié)果,就像天氣預(yù)報是不負責任的,不一定滿足數(shù)據(jù)公約,輸出結(jié)果缺失可信性判斷。相比于前面的基于邏輯設(shè)計的算法,具有內(nèi)在不可解釋、易受數(shù)據(jù)擾動、輸出結(jié)果不一定滿足需求規(guī)約、缺失可信性判斷。

這些算法打開了解決問題的新空間,給軟件可信保障帶來挑戰(zhàn),預(yù)測性算法基于給定數(shù)據(jù)進行預(yù)測,基于預(yù)測結(jié)果解決實際問題,可以使用預(yù)測性任務(wù),但直接用于決策存在的問題會存在風險。所以,預(yù)測性算法打開了解決問題的新空間,但是給軟件可信保障帶來挑戰(zhàn)。

大語言模型就是這樣的產(chǎn)物,大語言模型本身是神經(jīng)網(wǎng)絡(luò)模型,同時由于采用大量的語料進行訓練,突破了工程化的訓練技術(shù),所以使得可以高效地利用互聯(lián)網(wǎng)和圖書資料中所積累的海量文本進行訓練。因而匯聚豐富知識的基礎(chǔ)上形成了強大自然語言生成能力,簡單說可以針對自然語言提問,生成預(yù)測性的回答。同時還通過一系列的技術(shù)創(chuàng)新,使得它的能力進一步增強。

這樣一個自然語言問答的工具,在訓練的時候也采用了大量程序語言的語料,所以通過類似自然語言的處理方式采用大量程序語言相關(guān)語料進行訓練,所以也積累了豐富的軟件開發(fā)與演化知識。因而,它也可以通過自然語言與軟件開發(fā)與人工交互,通過給給的軟件開發(fā)與演化任務(wù)生成預(yù)測性內(nèi)容,所生成的預(yù)測性內(nèi)容折戟軟件開發(fā)與演化各個階段。因而給軟件開發(fā)和演化人員完成相應(yīng)任務(wù)提供一定程度的幫助。所以把大語言模型又稱之為是基于自然語言交互的軟件工具。大語言模型一方面是基于自然語言的人機交互的特征,再就是針對軟件開發(fā)與演化的預(yù)測性內(nèi)容生成,這兩大特征使它成為人機協(xié)同軟件開發(fā)與演化工具。但是所生成的預(yù)測性內(nèi)容是缺失可信性判斷,需要人工分析理解和確認,這使得這樣一種工具也帶來了巨大的挑戰(zhàn)。

 

大模型打開了解決問題的新空間、帶來了新挑戰(zhàn)

大語言模型打開了解決問題的新空間,帶來了新挑戰(zhàn)。而帶來的挑戰(zhàn)就是軟件開發(fā)與演化人員如何基于大模型生成的預(yù)測性內(nèi)容進行開發(fā)和演化高質(zhì)量的軟件系統(tǒng)。

大模型模型支持從自然語言需求生成預(yù)測性代碼,將自然語言的語言描述的需求轉(zhuǎn)換為滿足需求的程序代碼是不可判定的計算問題,大模型所生成的是不一定滿足需求的預(yù)測性代碼,其實是放棄了可信約束條件生成預(yù)測性代碼。軟件開發(fā)和演化的過程可以簡單分為從無到有,從有到對,大模型解決了從無到有,但是留下的問題是從有到對的問題。也就是說可信性保障的問題,如何基于大模型的預(yù)測性代碼得到滿足需求的程序。

簡單對比一下人工編程和基于大模型的人機協(xié)同編程。人工編程是程序員編寫代碼和文檔,同時自身也對代碼和文檔分析和理解進行了過程,所以程序員編寫完代碼之后,對代碼的理解是相當深刻的。然后在此基礎(chǔ)上程序員再完成其他可信保障的活動?;诖竽P偷娜藱C協(xié)同編程,首先是編程人員引導大模型生成預(yù)測性代碼,然后大模型需要分析理解預(yù)測性代碼、修改和確認代碼,如果這一步缺失,或者說做得不好,其實無法支撐編碼這樣決策性任務(wù)的完成。再是編程人員完成其他相關(guān)可信保障的活動。

現(xiàn)在要做到基于大模型的人機協(xié)同編程,希望人機協(xié)同編程的可信度要和人工編程可信度一樣,在這個基礎(chǔ)上,人機協(xié)同編程的效率要大于等于人工編程的效率。這里打了兩個問號,要實現(xiàn)這兩個問號,既然大模型生成是預(yù)測性代碼,需要進行人工分析理解和確認。而人工分析理解和確認意味著編程人員要理解代碼,其實在軟件工程領(lǐng)域,有一句行話:寧可自己寫代碼,也不愿意讀別人的代碼。說明編程人員理解代碼的難度通常高于寫代碼的難度,這也說明軟件是人類制造最復雜的制品。比如說讓大模型寫一個講稿,其實花5分鐘讀一下就知道可用不可用。但是如果讓大模型生成一段預(yù)測性代碼,花5分鐘是絕對不可能的,除非是高手。還有一個問題是,大模型從無到有生成預(yù)測性代碼,關(guān)鍵問題是要解決人性所致的程序員松懈、偷懶和犯錯,可能不認真分析預(yù)測性代碼,直接提交,這都是有可能的。

所以說大模型如同專業(yè)相機,大模型是傻瓜相機還是專業(yè)相機?首先是自然語言交互能力使得大模型成為傻瓜相機,人人都可以使用,這是從使用角度,大模型是傻瓜相機。

但是大模型的預(yù)測性內(nèi)容生成對于軟件開發(fā)演化來講是專業(yè)相機,也就是說因為預(yù)測性的生成內(nèi)容缺乏可信判斷,需要人工分析和理解,修改和確認。從解決問題的角度看,大模型是專業(yè)相機。正是因為大模型是專業(yè)相機,你就需要有駕馭專業(yè)相機的專業(yè)能力,所以駕馭大模型需要具備更強專業(yè)能力,需要對大模型生成預(yù)測性內(nèi)容進行判斷的能力,目前來講,解決這樣需要更強的能力的問題有兩個視角:一個是從企業(yè)應(yīng)對視角來講,專業(yè)能力達不到要求要禁止使用大模型。但并不意味著要把專業(yè)能力達不到要求都開了,沒有初級程序員哪來高級程序員,因為人要判斷代碼是不是符合要求,判斷代碼是否符合要求的能力比寫代碼的能力還要高,而不具備寫代碼的能力,肯定不具備判斷代碼是否符合要求的能力。所以從這個角度講,要保留人工編程流程和初級程序員的崗位。現(xiàn)在很多媒體說初級程序員要下崗,人工變成被大模型替代,其實不是這個概念。

從個人應(yīng)對的視角,要不斷夯實專業(yè)基礎(chǔ),全面提升專業(yè)能力。其實企業(yè)要裁掉沒有專業(yè)能力提升空間的人。整個軟件開發(fā)與演化是人類針對所解決問題的創(chuàng)新性思維活動。從自然語言需求到滿足需求的程序代碼是有可信保障需求的決策性任務(wù)。大語言模型打開自然語言到程序代碼的空間,因為可以生成預(yù)測性內(nèi)容,可以實現(xiàn)從無到有,但是又缺失可信性判斷,對從有到對的過程,帶來了可信保障難題與挑戰(zhàn)。

而解決問題、應(yīng)對挑戰(zhàn)的途徑,一方面從技術(shù)角度講,希望不斷地通過各種各樣的辦法降低可信性判斷的復雜性。另外一方面最重要的是全面提升專業(yè)能力駕馭大模型。