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