有個 AI 陪你寫代碼是種什麼樣的體驗?

有個 AI 陪你寫代碼是種什麼樣的體驗?

▲有個 AI 陪你寫代碼是種什麼樣的體驗?(圖/翻攝自機器人網,下同)

【原文:《有個AI陪你寫代碼是種什麼樣的體驗?》,智慧機器人網編輯整理】

文、圖/雷鋒網

從前,任何程序的任何功能,都需要一行一行敲出來。

後來,程序猿要寫的代碼越來越多,世界上便有了各種各樣的 API ,來減少大家的工作量。有些功能,可以讓 API 來幫我們實現。

不過,人類寫下的話, API 並不是每一句都能聽懂。語言不通的話,願望就無法實現。

現在,有會寫代碼的 AI 可以替你召喚 API 。以及,它能做的並不止這些。

吃得不多,寫得不少

萊斯大學的一群極客,發布了一個基於深度學習的代碼編寫應用。神經網絡從GitHub這樣的線上源代碼庫裡汲取養分,寫自己的程序。

這個應用叫 Bayou,是在美國國防高級研究計劃局 ( DARPA ) 和 Google 研究院的資金支持下誕生的。

Bayou 的爸爸們說,這個孩子和它的前輩不同。以前那些會寫程序的 AI ,都需要事先投餵大量細節,才能開始生成代碼。有空寫好那些細節,不如自己寫個程序了。

而要支配 Bayou ,開發者只要給牠吃一點點信息,比如幾個小小的 prompt ,它就會善解人意地猜測,人類想要怎樣的程序,然後疾速補全代碼。

舉個簡單的栗子,假設你想寫個讀取文件的 Java 方法。如果你知道某個 API 裡面有個功能叫做 readline ,就可以寫出上面這樣的代碼。

然後, Bayou 便知道它要召喚的技能叫做 readline ,隨之為你輸出以上代碼,只要用這段代碼來調用你需要的 API 就可以了。

不要忘了,專門給 Bayou 看的部分,要標上 ///,以示害羞。

除了調用一個或者幾個 API ,我們還可以用 API 數據類型把自己的要求具體化。另外, Bayou 有一個非常友好的特點,便是多模態,就算把各種不同的術語混進同一段代碼,它也能看懂。

草圖訓練大法

畢竟,這只 AI 已經從大約 1500 個安卓應用裡,學習了人類編寫的上億行Java代碼。

用一種名為「神經草圖學習 ( Neural Sketch Learning ) 」的方法來訓練神經網絡, Bayou 可以給自己想要讀取的每個程序,創建一個樹狀結構的句法模型,稱作「草圖 ( sketch ) 」。

當有人對 Bayou 提出要求的時候,系統會先做一個判斷,感受一下自己要寫的程序是怎樣的。然後,就是為代碼庫裡同類型的程序做草圖。這裡只識別 high – level 模式,而忽略所有 low – level 特徵。

在那之後, Bayou 還有一個用來理解 low – level 細節的模塊,可以自動進行邏輯推理。它會根據第一步做出的判斷,生成我們可能需要的代碼。

哪怕問題沒有解決, Bayou 給出的代碼示例或許也能幫我們提出更合適的問題。這時候再去 Stack Overflow 尋求答疑,療效可能會好一些。

孩子你還小

團隊認為, Bayou 非常適合為各種 API 編寫代碼示例。不過,現在的它並不十分成熟,還有一些局限性。

比如,它目前支持的 API 非常有限,只有 java.lang , java.io 和 Java.util 。再比如,它沒辦法處理通配符的多種類型。

作為一隻年幼的 AI , Bayou 還有很長的路要走。抱著 GitHub 修煉的好處是,從那裡識別出的模式會比較通用;缺點是 GitHub 上面的項目質量參差不齊。

目前,團隊正在給 Bayou 增加一些自然語言處理技能,也想在用戶體驗裡增加一些交互性。

【原文:《有個AI陪你寫代碼是種什麼樣的體驗?》,智慧機器人網編輯整理】

熱門標籤

留言

延伸閱讀