天天看點

碼農福音!CASIL開發代碼移植系統,CTRL+C/V快速程式設計不再是夢想

問:對于碼農來說,有哪些可以提高開發效率的技巧?

答:Ctrl+C、Ctrl+V。

(圖檔來源:知乎)

近日雷鋒網發現,麻省理工學院計算機科學與人工智能實驗室(Computer Science and Artificial Intelligence Laboratory,CASIL)的一項新技術或将成為千百萬碼農的福音。他們開發了一個叫CodeCarbonCopy的系統,讓碼農可以将所需要的代碼直接移植到新的程式中。具體來說,程式員可以從第一個程式中選擇所需要的代碼,然後在第二個程式中選擇插入的位置,系統将會自動對代碼進行修改——例如,變量名等,使得代碼可以上下一緻。

很厲害吧?這還沒完。更碉堡的是,該系統可以在不同程式的不同檔案格式和資料結構中進行轉換。舉個栗子,不同的圖像處理程式可能會需要處理不同的檔案格式,例如jpg、tiff或png等,在這個系統内部,它将會用單一的标準化方案表示這些圖像格式,盡管不同的程式可能會使用不同的方案,但這個系統會自動進行轉換,使得代碼真正實作“無縫對接”。

CASIL的研究者在ACM軟體工程基金會的研讨會上展示了這一系統。他們使用CodeCarbonCopy在六個流行的開源圖像處理程式之間移植代碼,總共進行了八次這樣的代碼移植實驗,其中七次均取得了成功。

(在不同資料結構中找到對應關系,雷鋒網摘自相關論文)

使用CodeCarbonCopy将代碼從一個程式移植到另一個程式的第一步是,将這兩個程式都提供給相同的輸入檔案。然後系統比較兩個程式如何處理該檔案并自動推斷出這些變量在各自的程式中扮演着相同的角色,一旦它确定了變量之間的對應關系,CodeCarbonCopy即可進行相應的處理。如果在兩個程式代碼中找不到某些變量的比對項或者這些變量的初始定義,使用者可以将這些變量進行标記,同時CodeCarbonCopy将自動從代碼移植中消除使用這些變量的操作。

CodeCarbonCopy适用于不同檔案格式(例如圖像和資料存儲)。在圖像處理器中,這些程式基本上具備相同大小的存儲單元,而在下一步工作中,研究人員正在考慮将檔案格式的方法概括為一種,使得程式可以更靈活的組織資料和使用除數組之外的資料結構(如樹或連結清單等)。

讓AI來自己編寫是近年來人工智能的一個研究方向。如Deepmind開發的DeepCoder就會自己程式設計,但目前Deepcoder隻能解決數行的代碼問題,而且在自動拟合的程式中可能會出現很多缺乏邏輯性的代碼,但CodeCarbonCopy這種可以大規模移植已有代碼的工具的出現,在減輕了碼農的負擔的同時或許也給他們帶來一絲擔憂:如果AI也學會用Ctrl+C和Ctrl+V程式設計,未來還真的是碼農們的對手呢。

本文作者:岑大師

繼續閱讀