动态 | 码农福音!CASIL开发代码移植系统,CTRL+C/V快速编程不再是梦想

问:对于码农来说,有哪些可以提高开发效率的技巧?

答:Ctrl+C、Ctrl+V。

(图片来源:知乎)

AI科技评论发现:近日,麻省理工学院计算机科学与人工智能实验室(Computer Science and Artificial Intelligence Laboratory,CASIL)的一项新技术或将成为千百万码农的福音。他们开发了一个叫CodeCarbonCopy的系统,让码农可以将所需要的代码直接移植到新的程序中。具体来说,程序员可以从第一个程序中选择所需要的代码,然后在第二个程序中选择插入的位置,系统将会自动对代码进行修改——例如,变量名等,使得代码可以上下一致。

很厉害吧?这还没完。更碉堡的是,该系统可以在不同程序的不同文件格式和数据结构中进行转换。举个栗子,不同的图像处理程序可能会需要处理不同的文件格式,例如jpg、tiff或png等,在这个系统内部,它将会用单一的标准化方案表示这些图像格式,尽管不同的程序可能会使用不同的方案,但这个系统会自动进行转换,使得代码真正实现“无缝对接”。

CASIL的研究者在ACM软件工程基金会的研讨会上展示了这一系统。他们使用CodeCarbonCopy在六个流行的开源图像处理程序之间移植代码,总共进行了八次这样的代码移植实验,其中七次均取得了成功。

(在不同数据结构中找到对应关系,AI科技评论摘自相关论文)

使用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,AI科技评论编译

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2017-09-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算D1net

云计算网络应用防火墙提高应用程序的安全性

人们通过云计算网络应用防火墙以确保未在本地托管的应用程序,这是可行的。行业专家马特·帕斯库奇解释它们是如何工作的,以及企业对此所需要了解哪些事情。 如今,网络应...

34711
来自专栏SeanCheney的专栏

《Python分布式计算》第1章 并行和分布式计算介绍 (Distributed Computing with Python)并行计算分布式计算共享式内存vs分布式内存阿姆达尔定律混合范式总结

本书示例代码适用于Python 3.5及以上。 ---- 当代第一台数字计算机诞生于上世纪30年代末40年代初(Konrad Zuse 1936年的Z1存在争议...

2878
来自专栏SDNLAB

云数据中心网络虚拟化——网络虚拟化的传统技术之VPN

书接上文,说完了VLAN,该VPN隆重登场了。相比于VLAN这种简单的局域网技术,VPN可是要复杂的多。VPN并不是一种协议或者标准,而是一类技术的统称,或者更...

3436
来自专栏嵌入式程序猿

嵌入式系统开发过程中的常见问题和解决方法

1. Bootloader如何写入Flash ? 初学者一般都会遇到如何将程序写入处理器的问题。对于不同的处理器,可以采用不同的方法。例如Intel的Xscal...

3357
来自专栏SDNLAB

SDN实战团分享(十七):EVPN Architecture

2006年加入JUNIPER中国Systems Engineer团队并兼任臭名昭著的Proctor工作 2010年加入JUNIPER美国大客户技术支持团队(就是...

5028
来自专栏CDA数据分析师

强大的图形功能软件:S-Plus

【摘要】S语言是由AT&T 贝尔实验室开发的一种用来进行数据探索、统计分析、作图的解释型语言。它的丰富的数据类型(向量、数组、列表、对象等)特别有利于实现新的统...

17110
来自专栏Golang语言社区

一个调度系统的开发与性能优化

背景:随着Go的不断发展,流行度越来越高,业界对Go的认可度也越来越高,所以很多团队或者公司在遇到性能问题时都会尝试使用Go来重构系统,尤其是云计算领域,大家期...

891
来自专栏张善友的专栏

依赖注入是否值得?

在博客的世界里进行了一场关于使用依赖注入(DI)之优点和缺点的有趣讨论。论题是:依赖注入是否真的值得? 讨论始自Jacob Proffitt,他撰文解释他的观...

1769
来自专栏CSDN技术头条

谷歌的海量数据排序实验史

原文:History of massive-scale sorting experiments at Google 作者:Marian Dvor...

1948
来自专栏程序员的知识天地

Python爬虫入门,8个常用爬虫技巧盘点

编程对于任何一个新手来说都不是一件容易的事情,Python对于任何一个想学习的编程的人来说的确是一个福音,阅读Python代码像是在阅读文章,源于Python语...

851

扫码关注云+社区