问:对于码农来说,有哪些可以提高开发效率的技巧?
答: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 编程,未来还真的是码农们的对手呢。
论文地址:https://people.csail.mit.edu/rinard/paper/fse17.codecarboncopy.pdf
Via MIT