当你新接触一门语言时,是否体会过无从下手、想找大佬带飞却无处求助的崩溃?
当你想实现一个功能时,是否曾反复抓着日渐稀疏的头发,想在深夜里买醉?
当你面临甲方不断变更的需求时,是否还盯着两三函数几行代码不愿面对?
当你遇到写不完,啊不是,是遇到de不完的bug时,是否除了心碎就剩流泪?
………
上述问题,作为一个程序员,相信大家或多或少都经历过,但是不要担心,因为最近我发现了一个功能十分强大的编程模型插件:aiXcoder XL,可以帮助大家一键解决上述问题。
它是国内首个基于深度学习的智能编程模型,可以根据自然语言描述生成完整可用的程序代码(NL2Code)。
简单的说就是,只要你把想法告诉它,AIXcoder XL可以自动帮你生成对应的高质量代码,给大家演示一下就知道怎么回事了:
我们以Java语言为例,比如在文本框中输入“将字符串用指定的分割符分割”,然后点击右边「生成」按钮,aiXcoder XL模型便会自动生成与之对应的代码函数。
我仔细看了一下自动的生成的代码,不得不说鲁棒性真的很高,不仅提前判断了字符串为空的情况,而且只用了三行代码就实现了所有功能,如果事先不知情的话,我会以为这是个经验丰富的程序员写的。
再比如,我们想用代码来处理一些日常事务时,输入“给表格中的班级成绩排序”,也可以获得对应的完整代码:
不仅如此,aiXcoder XL模型还自动在关键位置处加上了注释,便于我们理解和使用。
除了对中文支持以外,aiXcoder XL对英文的支持也相当出色,比如我们输入“dynamic programming algorithm”(动态规划算法),这是数据结构里面一个特别经典的最优化求解算法,
可能当你还在思考什么是动态规划的时候,aiXcoder XL已经迅速生成了对应的代码函数。
在测试了中英文语言自动生成代码之后,我突然想到,aiXcoder XL模型虽然能够理解自然语言,但是对于一些计算机算法领域专有名词缩写,它是否一样能够理解呢?
于是我又做了一个测试,让aiXcoder XL实现KMP算法,普通人看到KMP可能是一头雾水,但是上过算法课的同学应该知道,这是一个非常经典的字符串匹配算法。
初学者写字符串匹配算法时可能首先想到的是暴力解决,但是用KMP算法效率可以指数级提升。
于是我让aiXcoder XL模型去生成“KMP算法”代码,发现它同样能够迅速地返回对应的方法级函数,这说明aiXcoder XL不仅能够理解自然语言,对于一些计算机领域的专有名词它一样能够理解,这使得我们与aiXcoder XL的沟通效率一下子提升了好几个台阶。
虽然在前面的几个测试例子中aiXcoder XL的表现还算不错,但是估计很多小伙伴心里跟我一样有这样一个疑问:
aiXcoder XL不是号称基于深度学习的智能编程模型嘛?
如果仅仅只是能实现几个经典算法,这些算法我上百度一样能找到,那它的学习功能和智能体现在哪呢?
似乎有几分道理,既能是智能编程模型,那它能不能根据我自己的想法,随心所欲的定制功能呢?
比如我的需求是“使用网络爬虫爬取网页信息,并保存到本地”
我们看到aiXcoder XL它似乎只实现了保存到本地的功能,这肯定不是我想要的代码。
我是希望用URLConnection类去链接URL资源,于是我在第三行手动定义了一个URLConnection对象,让aiXcoder XL从光标处重新续写:
续写之后的代码就变成了:
虽然获取到了网页信息,但是保存到本地的却不是该信息,于是接着让aiXcoder XL学习,我手动在第6行定义了一个StringBuffer对象,用来将网页的字节流信息转化称string字符串,它学习完之后生成了如下代码:
这回没什么问题了,只要我传入指定的url链接,就能帮我把这个链接网页的信息爬取下来并且保存到本地。
不过我还是不太满意,我希望保存的本地的路径地址也由我来指定,于是我又在函数中加了一个路径参数,然后让aiXcoder XL重新续写:
我们发现它帮我取消了第二行代码,最后文件保存的路径是由函数的参数来指定的。