转载本文需注明出处:微信公众号EAWorld,违者必究。
江湖上一直流传着这样的传闻:“程序员们很快就要失业了,因为人工智能马上就能写出完美的代码了”。人工智能是以软件形式存在的,编写了这些强大软件的码农们,如果被自己编写的代码所取代,来写出新一代的代码,那会是一个神奇而又悲伤的故事。我们今天就来看看人工智能在软件开发领域里的现状,我们距离传奇还有多远?
有人说软件开发是一种艺术,有人说软件开发需要工匠精神,不管是哪一种说法,软件开发都是一个创造性的工作,而机器曾被认为是缺乏创造力的,但是随着深度学习的发展,人工智能在一些创造性的领域也得到了飞跃的发展。
现在的人工智能可以画画:
Trippy Artworks Created by Artificial Neural Networks
可以作曲:
musical.ai
可以写作:
• 2017年5月,机器人微软小冰出版了诗集《阳光失了玻璃窗》。
• 2017年,韩国某通讯社也测试使用人工智能进行足球比赛报道,几秒钟就可以稿件上线。
• 2018年,阿里妈妈推出的AI智能文案。
下图是我用最近世界足坛最出色的球星梅西(蹭一下煤老板转会风波的热度)的名字为种子让AI创作的诗:
感觉这个诗做的不错呀,把煤老板的转会风波又推进了一个意境,你觉得呢?
同为创作,AI离写代码还有多远?
上面提到的这些例子,大多是使用深度学习为基础来进行创作,而用深度学习技术来进行软件开发,主要面临着以下的一些挑战:
1. 很难判断
深度学习是一种监督学习算法,需要大量标注的数据,也就是说对数据的正确和错误打标签。但是代码很难用正确或者错误的标签来标记。也很难用数值来量化。而可用于训练的已标注的代码也非常少。
2. 容错率低
对于谷歌的猫狗判别算法,能有个90%可能就算是不错了,但是软件代码有99%都是对的,那可还是编译不通过,软件要求不能有任何错误。不同于自然语言,代码对于噪声非常敏感。
3. 复杂的上下文
开发软件需要大量的上下文知识,需求的分析,系统的非功能性要求等等,如何把这些知识融入到代码,对于AI来说,挑战颇高。
尽管如此,人工智能在软件开发领域已经开始有所突破,那么我们就看看AI现阶段都能做些什么?
代码辅助
代码辅助指的是辅助写代码的一些功能和过程。例如代码自动补全,代码搜索推荐,代码转换等。人工智能在这个领域大有可为,想想我写代码的时候,一大半的时间在查文档,还有一大半的时间在搜google和stackoverflow,人工智能可以很好充当码农的好助手。在这个领域里,已经有了不少的创业公司和相应的产品。
TabNine
TabNine是加拿大一位大四学霸开发的智能代码补全工具,作者Jacob Jackson目前在滑铁卢大学主修计算机科学与组合优化专业。该工具支持23种语言,支持VS Code、Sublime Text、Atom、Emacs、Vim五种代码编辑器。在VS Code的扩展商店里,TabNine已经被下载超过万次,获得全5星好评。2019年12月,被Codota收购。
Kite
Kite是硅谷创业公司,成立于2014年,A轮融资1700万美元。Kite提供智能代码补全,支持Python和JavaScript。
Kite目前支持以下的IDE:
Codata
以色列的创业公司,成立于2013年,融资260万美元。
Codota是一家以色列AI编程助手,专注于用AI帮程序员写代码,基于从网上学习到的编程模式,它能实时地为程序员推荐最合适的代码。它能无缝地接入程序员的集成开发环境中,帮助他们节约时间,减少人为错误。除了代码补全,它提供了聚合搜索功能,覆盖了包含github,stackoverflow等码农喜闻乐见的代码源。
Aroma