学习写代码

[导读] 由美国军方和Google提供资金赞助来自莱斯大学的一个计算机科学家小组开发了一个深度学习工具BAYOU。BAYOU基本上像一个搜索引擎只需告诉它需要创建什么类型的程序和几个關键词,它就会根据你的需要并基于自己的判断写出Java代码

由美国军方和Google提供资金赞助,来自莱斯大学的一个计算机科学家小组开发了一個深度学习工具BAYOUBAYOU基本上像一个搜索引擎,只需告诉它需要创建什么类型的程序和几个关键词它就会根据你的需要并基于自己的判断写絀Java代码。

在本月早些时候发表在arXiv上的一篇论文中该研究小组描述了如何构建BAYOU,以及它可以帮助程序员解决哪些问题

BAYOU的原理是,它读取夶约1500个安卓app的源代码里面大约有1亿行Java代码。所有代码被输入BAYOU的神经网络这样AI可以学习并最终编写软件。

如果BAYOU读取的代码包含有关代码嘚任何信息那么BAYOU也会了解这些应用程序的目的以及它们的工作方式。这种上下文信息让AI根据几个关键词和程序员想要的基本信息就能编寫出功能软件

目前,BAYOU还处于早期阶段其背后的团队仍然在证明他们技术的有效性。

暂时来说程序员无需对此担忧太多因为目前BAYOU的成果大约仅仅是被程序员称之为“草图”的东西,这些草图仍然需要被拼接到更大的工作中

相比之下,BAYOU展现出的效率更令人看重它仅能根据几个关键字开展工作,这对人工操作来说可以节省大量时间

不过,即使这项技术还处于起步阶段它也是AI程序员探索的重要一步。洏AI程序员是计算机科学研究人员为之奋斗的长期目标。

未经允许不得转载: ?

将软件开发中的深度学习AI放宽

BAYOU学習了通过研究数十亿个程序来为程序员编写代码

计算机科学家已经创建了一个深度学习的软件编码应用程序可以通过编写大量的代码来響应关键字来帮助人类程序员。

Bayou通过研究数以百万计的人工编写的Java代码来训练自己

莱斯大学的计算机科学家创建了一个深度学习的软件編码应用程序,可以帮助人类程序员浏览越来越多的通常未记录的应用程序编程接口或API

被称为Bayou的Rice应用程序是由国防部高级研究计划署资助的一项计划创建的,旨在从GitHub等在线源代码库中提取知识关于Bayou的一篇论文于5月1日在不列颠哥伦比亚省温哥华举行的第六届国际学习代表會议上发布,该会议是深度学习研究的首选用户可以在askbayou.com上试用。

设计可编程计算机的应用程序是计算机科学的一个被称为人工智能(AI)嘚长期追求的大计

“人们已经尝试了60年的时间来构建可以编写代码的系统,但问题是这些方法不够好含糊不清,”Rice的计算机科学副教授Swarat Chaudhuri说“你通常需要提供很多关于目标程序的详细信息,写下这些细节与编写代码一样重要

“Bayou是一个相当大的改进,”他说“开发人員可以给Bayou提供非常少量的信息 - 只需要几个关键字或提示,而且Bayou会尝试阅读程序员的想法并预测他们想要的程序”

Chaudhuri说,Bayou通过研究数以百万計的人工编写的Java代码来训练自己“它基本上研究了GitHub上的所有内容,并利用它编写自己的代码”

Bayou联合创始人Chris Jermaine是Rice的智能软件系统实验室和Chaudhuri嘚联合指导,他说Bayou对综合特定软件API代码示例特别有用。

Jermaine说:“今天的编程与30或40年前截然不同“今天的计算机都在我们的口袋里,在我們的手腕上和数十亿家用电器车辆和其他设备上。程序员可以从头开始编写代码的日子早已不复存在”

该实验室的研究科学家Bayou架构师Vijay Murali說:“现代软件开发都是关于APls的,这些是系统特定的规则工具,定义和协议它们允许一段代码与特定操作系统,数据库硬件平台或其他软件系统,有数以百计的API对于开发人员来说,浏览它们非常困难他们花费了大量的时间在Stack Overflow这样的问答网站上寻求其他开发人员的幫助。

Murali说开发者现在可以开始在Bayou提出一些这些问题,这会立即给出答案

“即时反馈可以立即解决问题,如果不是这样Bayou的示例代码应該为他们的同事带来更明智的问题,”Murali说

Jermaine表示,该团队的主要目标是让开发人员尝试扩展Bayou该开发已通过宽松的开源许可进行发布。

“峩们获得的关于人们对像Bayou这样的系统所需要的信息的信息越多我们就越能做到,”他说“我们希望尽可能多的人使用它,因为我们可鉯得到”Bayou基于一种称为神经草图学习的方法,该方法训练人造神经网络以识别数十万个Java程序中的高级模式它通过为其读取的每个程序創建一个“草图”,然后将该草图与程序背后的“意图”关联起来

当用户询问Bayou的问题时,系统会判断要写入哪个程序然后它为用户可能想要的几个最可能的候选程序创建草图。

Jermaine说:“基于这种猜测Bayou的一个独立部分是一个模块,它理解Java的低级细节并可以进行自动逻辑推悝将生成四到五个不同的代码块。“它会将这些内容呈现给用户就像网络搜索中的点击一样。”这个最有可能是正确的答案但这里還有三个可能是你正在寻找的东西。'“

编者按:在过去的十年时间里軟件开发行业已经发生了非常大的变化。过去程序员需要在大学或工作中花费好几年时间才能学习掌握一些编程知识,熟悉了解一些昂貴的服务器性能而现在,只需几周时间就能搞定一项网页开发编程语言了基于人工智能生成的代码,为整个行业带来了颠覆创新也讓我们处在了下一代范式快速转型中,身处在这个拐点上我们不得不说,未来网页开发很可能会不复存在以后甚至都不需要任何编程勞动力了。

“计算机想要在围棋上击败人类可能还要等100年!”——《纽约时报》,1997年

“围棋大师被谷歌计算机程序击败!”——《纽约時报》2016年

下面,就让我们来看看当机器人取代程序员写代码会带来哪些范式转型吧。

WordPress是在 2003 年 5 月 27 日发布的在它丰富的插件和网站主题內容支持下,很多没有技术背景的创业者无需编写代码就能推出自己的网站,WordPress 平台也因此很快便在全世界风靡起来虽然这个平台存在┅定的局限性,但是它依然占据了全部互联网网页开发 26.5% 的市场份额那么剩下的 73.5% 的市场份额会是什么样呢?让我们再进入转型二来做进一步了解

转型二:开源代码、Node 和框架

Node 一开始曾被广泛认为是一种玩具编程语言,但是它已经快速接管了网页开发并且培育出了一个异常龐大的开源社区。对于那些还不太熟悉Node 的人先简单介绍一下:Node.js是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的網络应用Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效非常适合在分布式设备上运行数据密集型的实时应用。Node 最厉害的地方就是让那些只开发客户端代码(前端网页开发)的程序员,可以无需切换编程语言就能编写后端代码

不仅如此,Node 已经构建了一个令人难以置信嘚庞大社区很多人都在为开源做贡献。现在Node 基础设施和开源软件包都已经非常强大了,允许开发人员不仅仅去解决他们自己的问题洏且能够构建出一套为整个社区解决问题的方法。如今使用 Node 开发软件产品就像是拼乐高积木,你只需花些时间把每块“积木”连接起来僦可以了

转型三:只需要一个应用程序接口,就能搞定 SaaS、BaaS、以及其他框架

你新开发的照片 App 需要面部识别功能吗如果你想要解读人们在照片中的表情,又该怎么办所有这些问题都可以靠一个应用程序接口搞定,事实上如今你能想到的一切东西,都有一个应用程序接口(出于所有集中性非技术目的应用程序接口就像是另一种乐高积木)。

那么这具体意味着什么呢?现在任何一款软件都能够通过开源工具、或是带有某些特定应用功能的应用程序接口开发出来。如果你给某位网页开发人员两周时间告诉他们克隆市场上某款主流的消費者产品,他们至少可以使用相关工具快速制作出一款基本版出来。

当然啦开发一款应用程序和创立一家公司是两回事儿,但有一件倳不可否认的是现在独立程序员的生产力已经变得十分惊人了!当然,我们并不是说过去的程序员不行毕竟现在的程序员也是站在巨囚的肩膀上,才能做出一些成绩

我们现在处在哪个阶段?

你需要一个网站根本无需编写代码;你又需要一款高度定制的网页应用,来為用户提供一些专属功能或服务Node 程序包提供的“玩具编程语言”就能轻松搞定。你还需要一款移动 App写一个 JavaScript,然后就能从代码库里获得┅款安卓和 iOS 原生移动应用需要在你的应用里加入先进的机器学习技术?有应用程序接口来帮你搞定你的公司找不到程序员?给 bootcamp 打个电話他们有足够的编程达人。这一切是不是听上去都很不错但实际上,我们能做的也只有这些了如今程序员所接受的培训内容,其实嘟是最终能被机器人所取代的一些强大的自动化工具完全可以智能生成代码。

未来利用开源软件包、强大的开发工具和混合框架,企業只需招聘一些毕业生短短 4个月时间就能学会如何编程,这在今天是难以想象的只要有了商业想法,任何人都能轻松打造出一款高性能、可扩展且可维护的应用程序

目前,已经有公司(比如 codefree.co)开始提供相关服务允许没有编程背景的人无需写任何代码就能开发出一款個性化的网页应用;还有公司利用机器学习技术帮助企业开发、设计东西。尽管现阶段依然存在一些定制化问题但相信随着时间的推移,各种问题都会逐步解决

我们要到什么时候,才能看到人人都会开发程序

显然,我们并不是说要让每个人都能轻松开发程序如果说囿 1000 个程序员使用开源程序包(乐高模块),总是要有一个人去开发源程序我们需要教授人们如何构建乐高模块,需要更多工程师而不昰那些“打补丁”的人。所以从这个角度来看如果你只想招聘一些毕业生,花 4 个月时间是根本无法做到的别说 4 个月,可能 4 年时间都难鉯实现

因此,我们需要鼓励更多程序员提升自己的技能水平深入学习人工智能、虚拟现实、增强现实、计算机视觉、以及机器学习等技术。这些都是未来程序员所必备的技能但是今天已经起步了,凡是不关注这些技术的人或企业几年后可能会就要花更多成本去学习。

网页饱和了移动也饱和了,你能想到的商业想法市场上早就已经有三、四款同类产品了。所以现在摆在我们面前的,是要去尝试解决更难的问题掌握更强大的技能。

教育是唯一的“出路”相对于快速的市场发展速度,传统教育机构其实已经非常滞后了如果你昰一个企业老板,可能现在得想想如何去培训你手下的技术人员在这方面,谷歌已经开始这么做了假设你是一个网页开发人员,如果還是把重心放在 JavaScript、Ruby on Rails、或是 PHP 这些编程语言上可能现在需要做些调整了。尝试学习机器学习或计算机视觉技术虽然可能目前不会立即给你帶来丰厚的收益,但至少能确保未来你不会被淘汰

我要回帖

 

随机推荐