當你打開谷歌輸入想要搜索的事物時,,它總會自動猜想你可能尋找的關(guān)鍵詞。輸入Wi它可能自動聯(lián)想Wikipedia(維基百科),輸入Bra它會聯(lián)想到 Brad Pitt(布拉德·皮特)。有時候這些自動填寫可能與你想要搜索的完全不相關(guān),但大多數(shù)情況它還是非常準確的,,這為你的搜索提供了捷徑。
現(xiàn)在一支政府支持的科研小組想要為全世界的程序員在編寫計算機代碼時提供相似的提示,也即在程序員完成編碼前猜想它們想要編碼的內(nèi)容,。美國萊斯大學于本周表示,作為五角大樓的瘋狂科學部門,,美國國防部先進研究計劃署(DARPA)對這個代號為PLINY的自動填寫編碼項目投資了1100萬美元,,這一項目是以第一部百科全書的古羅馬作者為名。“文字搜索預測是描述這一項目的最好比喻,,”萊斯大學計算機科學學院院長,、PLINY項目首席調(diào)查員維韋克·薩卡爾(Vivek Sarkar)這樣說道。“人們將能夠從一系列可能的解決方案中進行挑選,。”
這一項目包含來自萊斯大學,、德克薩斯州大學奧斯汀分校、威斯康星大學麥迪遜分校以及源代碼分析工具制造商GrammaTech公司的研究人員,。PLINY將從網(wǎng)頁里收集到的大量開源代碼編入索引,,從而形成一個強大的預測引擎,研究人員希望它可以預測編碼人員將輸入的代碼,。從理論角度說,,它應該可以檢測漏洞或者安全隱患。
如果這一項目順利進行,,那么它或?qū)槟切┱也坏胶细癯绦騿T參與研究日益復雜的軟件項目的公司帶來福音,。這是大量初創(chuàng)企業(yè),從趣味編程網(wǎng)站Codecademy 到試圖讓編程變得更簡單的工具Light Table,都試圖解決的問題,。
PLINY并不是第一個旨在為程序員建立自動填寫系統(tǒng)的項目,。微軟正在利用去年發(fā)布的插件Bing開發(fā)助理進行相似的研究。然而,,薩卡爾表示PLINY是一個更雄心勃勃的項目,。“大多數(shù)其它項目都是利用代碼結(jié)構(gòu)的知識進行文字分析。”而薩卡爾帶領的研究小組試圖開發(fā)的軟件不僅可以分析文字,,還會分析代碼里所表達的概念,,無論程序員所編寫的是哪一種程序語言。薩卡爾希望PLINY可以自動提示與提供程序員編寫內(nèi)容無縫結(jié)合的代碼,,它甚至可以糾正安全隱患和其它錯誤,。
然而,這并非易事,。如果你曾有過使用微軟Office 97時代的Clippy(大眼夾)輔助工具的經(jīng)歷,,或者瀏覽過“該死的自動更正”(Damn You Autocorrect)博客,你就會意識到糾正這些預測系統(tǒng)有多困難,。雖然谷歌是部分通過了解最常見的搜索術(shù)語從而實現(xiàn)預測搜索關(guān)鍵詞,,但在編程世界里情況則有所不同。最常見的解決方案可能并不是最優(yōu)的解決方案,。
薩卡爾承認他們的科研小組面臨著巨大的挑戰(zhàn),,尤其是確保高質(zhì)量的代碼和可用性方面。但他認為鑒于為能源部和健康保健領域的其它應用程序做過大數(shù)據(jù)分析的背景,,他的研究小組正是迎接這一挑戰(zhàn)的最佳人選,。他表示萊斯大學一直想要將部分機器學習算法應用于軟件開發(fā),DARPA恰好提供了實現(xiàn)途徑,。
PLINY小組將首先分析網(wǎng)絡上的開源代碼,,主要是利用例如GitHub和 Sourceforge提供的代碼托管服務,同時還將分析各種重大的開源項目,,例如Apache基金會管理的一些項目,。最終,薩卡爾設想了一個可以索引企業(yè)所有專有軟件項目的企業(yè)版本,。
研究小組還將建立一個為存儲和分析代碼專門設計的自定義數(shù)據(jù)庫系統(tǒng),。這個數(shù)據(jù)庫將提供對索引代碼進行組織和劃分優(yōu)先級的途徑。這將幫助解決代碼質(zhì)量問題,。那些非常好的項目可以優(yōu)先考慮,,或者由特定程序員編寫的代碼也具有優(yōu)先級。項目的最終成果可能類似于谷歌的自動填寫,,但有用性要高得多。