0
本文作者: 岑大師 | 2017-09-21 22:56 |
問(wèn):對(duì)于碼農(nóng)來(lái)說(shuō),有哪些可以提高開(kāi)發(fā)效率的技巧?
答:Ctrl+C、Ctrl+V。
(圖片來(lái)源:知乎)
近日雷鋒網(wǎng)發(fā)現(xiàn),麻省理工學(xué)院計(jì)算機(jī)科學(xué)與人工智能實(shí)驗(yàn)室(Computer Science and Artificial Intelligence Laboratory,CASIL)的一項(xiàng)新技術(shù)或?qū)⒊蔀榍О偃f(wàn)碼農(nóng)的福音。他們開(kāi)發(fā)了一個(gè)叫CodeCarbonCopy的系統(tǒng),讓碼農(nóng)可以將所需要的代碼直接移植到新的程序中。具體來(lái)說(shuō),程序員可以從第一個(gè)程序中選擇所需要的代碼,然后在第二個(gè)程序中選擇插入的位置,系統(tǒng)將會(huì)自動(dòng)對(duì)代碼進(jìn)行修改——例如,變量名等,使得代碼可以上下一致。
很厲害吧?這還沒(méi)完。更碉堡的是,該系統(tǒng)可以在不同程序的不同文件格式和數(shù)據(jù)結(jié)構(gòu)中進(jìn)行轉(zhuǎn)換。舉個(gè)栗子,不同的圖像處理程序可能會(huì)需要處理不同的文件格式,例如jpg、tiff或png等,在這個(gè)系統(tǒng)內(nèi)部,它將會(huì)用單一的標(biāo)準(zhǔn)化方案表示這些圖像格式,盡管不同的程序可能會(huì)使用不同的方案,但這個(gè)系統(tǒng)會(huì)自動(dòng)進(jìn)行轉(zhuǎn)換,使得代碼真正實(shí)現(xiàn)“無(wú)縫對(duì)接”。
CASIL的研究者在ACM軟件工程基金會(huì)的研討會(huì)上展示了這一系統(tǒng)。他們使用CodeCarbonCopy在六個(gè)流行的開(kāi)源圖像處理程序之間移植代碼,總共進(jìn)行了八次這樣的代碼移植實(shí)驗(yàn),其中七次均取得了成功。
(在不同數(shù)據(jù)結(jié)構(gòu)中找到對(duì)應(yīng)關(guān)系,雷鋒網(wǎng)摘自相關(guān)論文)
使用CodeCarbonCopy將代碼從一個(gè)程序移植到另一個(gè)程序的第一步是,將這兩個(gè)程序都提供給相同的輸入文件。然后系統(tǒng)比較兩個(gè)程序如何處理該文件并自動(dòng)推斷出這些變量在各自的程序中扮演著相同的角色,一旦它確定了變量之間的對(duì)應(yīng)關(guān)系,CodeCarbonCopy即可進(jìn)行相應(yīng)的處理。如果在兩個(gè)程序代碼中找不到某些變量的匹配項(xiàng)或者這些變量的初始定義,用戶可以將這些變量進(jìn)行標(biāo)記,同時(shí)CodeCarbonCopy將自動(dòng)從代碼移植中消除使用這些變量的操作。
CodeCarbonCopy適用于不同文件格式(例如圖像和數(shù)據(jù)存儲(chǔ))。在圖像處理器中,這些程序基本上具備相同大小的存儲(chǔ)單元,而在下一步工作中,研究人員正在考慮將文件格式的方法概括為一種,使得程序可以更靈活的組織數(shù)據(jù)和使用除數(shù)組之外的數(shù)據(jù)結(jié)構(gòu)(如樹或鏈表等)。
讓AI來(lái)自己編寫是近年來(lái)人工智能的一個(gè)研究方向。如Deepmind開(kāi)發(fā)的DeepCoder就會(huì)自己編程,但目前Deepcoder只能解決數(shù)行的代碼問(wèn)題,而且在自動(dòng)擬合的程序中可能會(huì)出現(xiàn)很多缺乏邏輯性的代碼,但CodeCarbonCopy這種可以大規(guī)模移植已有代碼的工具的出現(xiàn),在減輕了碼農(nóng)的負(fù)擔(dān)的同時(shí)或許也給他們帶來(lái)一絲擔(dān)憂:如果AI也學(xué)會(huì)用Ctrl+C和Ctrl+V編程,未來(lái)還真的是碼農(nóng)們的對(duì)手呢。
論文地址:https://people.csail.mit.edu/rinard/paper/fse17.codecarboncopy.pdf
Via MIT,雷鋒網(wǎng)編譯
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。