软件2.0时代 人工智能有望从根本上改变软件开发
分析
Constellation Research的首席分析师兼创始人Ray Wang表示,人工智能技术也出现在静态和动态软件分析工具中。
Wang说:“机器学习的功能已经很丰富了,比18个月前更加丰富。神经网络渐渐得到了应用。如今,与其说这是静态分析,不如说是动态分析,但由人工智能驱动的动态分析将在未来几年出现。”
开发代码
然而,就从头开始编写新代码而言,当前的技术还有待改进,Build.com的Berry如是说。
Berry说:“现在我们可以使用一些现成的系统,如你的集成开发环境,但这更像内置模板剪切粘贴得来的。”
但情况开始发生变化。最受欢迎的集成开发环境(微软的Visual Studio)在4月发布的最新版本中内置了人工智能代码自动完成功能。微软Visual Studio IntelliCode的高级项目经理Mark Wilson-Thomas表示,该功能基于数千个开源的GitHub存储库提供的机器学习。
“我们吸取了开源社区代码的智慧结晶”,微软Visual Studio和Visual Studio Code程序管理合作总监Amanda Silver如是说。
Silver补充说,这也有助于他们理解常用类的使用方式,“在处理不熟悉的代码时,这尤其有用。”
最近对IntelliCode用户进行的一项调查发现,超过70%的人表示,与经典的IntelliSense相比,使用新的由人工智能驱动的IntelliCode使他们觉得有更高的效率,Silver如是说。
Silver说,使用这个工具的企业也可以为自己的员工创建自定义的私有模型。
Silver说:“这使IntelliCode与你的团队或组织有共同的代码语言,你无需将源代码发给微软。”
Gartner的分析师Svetlana Sicular表示,这种功能是微软购买GitHub的首要原因。
GitHub拥有1亿多个存储库(其中有2500多万个存储库是开源的),微软于去年收购了GitHub。该平台对公共存储库和小型的私有项目免费开放。
Sicular说:“GitHub是一个代码存储库。在我看来,微软将使用它来生成新的代码。”
智能应用程序开发平台
Build.com的Berry也在密切关注低代码和无代码领域里发生的事情。
Berry说:“这根本谈不上是新鲜事儿,只要有开发,开发人员就已经将系统整合在一起了。”
Berry说,最近,人工智能系统的部署因此而变得更轻松快捷。他说:“例如,用于推荐引擎的固有解决方案将过去很难实施的解决方案和定制的解决方案商品化。”
现在,这种低代码方法变得更加智能,使公司不再浪费时间创建商品系统,Berry如是说。他说:“我们因此有机会提出全新的,真正的创新,这就是这种方法的意义所在。我对这些领域在未来所能做出的贡献感到非常兴奋。”
以Mendix为例,该公司在长达十年的时间里一直提供积木式的系统,这些系统可以用来创建各种应用程序。开发人员将平台上各种可用的功能集中在一起,当这些功能不够用时,他们就使用外部代码。如今,该公司创建了一个深度学习系统来分析这些模型,考察这些模型在生产中的表现,看看哪些模型是最管用并据此来识别各种模式。
Deloitte Cyber的应用程序安全负责人Vikram Kunchala说,IT部门依然十分抗拒这些平台,而业务方又缺乏信心。
Kunchala说:“此刻,对平台的采用似乎更像是好奇心使然。企业正在一点点进行对这些平台进行试验。又或者是他们不得不尽快落实——我们已经见过这种情况了。但我没有看到哪个客户将其视作我所了解的企业标准。”
软件2.0
但最大的变化是,企业开始使用与传统代码毫无联系的应用程序。
比如说,你想创建一个玩三子棋(Tic-Tac-Toe)的应用程序。你可以编写规则和游戏策略。对手怎么做,你就怎么做。开发人员的工作是选择正确的策略并创建惊艳的用户界面。
如果以击败人类棋手为目的,那么这种策略适用于三子棋、跳棋、甚至是国际象棋。但是对于围棋等更高难度的棋类竞技,创建规则并不容易。这时深度学习和神经网络等人工智能技术就登台亮相了,这些技术彻底改变了软件开发流程。
开发人员不是从制定规则开始,而是从收集数据开始——大量的棋类竞技。谷歌根据人类棋手下的大量棋局来训练系统。由于有了最新的AlphaGo Zero,训练数据来自系统与自身对弈的棋局,始于随机下子。
只要培训数据清晰且充分,而且评估其好坏的标准也十分明确,那么这种方法就有可能彻底改变软件开发。如今,开发人员必须努力管理培训数据和评估标准并让系统来编写代码,而不是弄懂对弈规则并编写对弈规则。
特斯拉的人工智能主管Andrej Karpathy表示,这正是特斯拉对自动驾驶汽车所采用的方法。
Karpathy在去年的技术会议主题演讲中说道:“这是一种全新的软件设计方式。如今,我们不是毫不隐讳地编写代码,而是积累和优化数据集,而这些数据集实际上就是代码。”
例如,因此,特斯拉驶经隧道时很难判断要不要启动雨刮器。在传统的软件开发中,程序员会查看代码,从而发现逻辑错误出在哪里。由于有了Software 2.0,开发人员只要查看数据就可以了。
例如,在这种特殊情况下,穿越隧道的车辆缺乏训练数据。特斯拉必须上路实测,获得更多数据,对这些数据进行注释,将其添加到训练数据集并重新运行深度学习算法。
Karpathy说:“我们通过这种方法使所有问题看起来都一个样子。”
Karpathy补充说,传统的发展仍有生存空间。目前,这些系统的用户界面是手动创建的,与其他平台的集成也仍然是手动完成的。
但随着越来越多的公司向人工智能求助,用于那些有大量可用数据和其他低代码平台的应用程序,那么软件开发的工作将在不久的将来发生巨大变化。
图片新闻
最新活动更多
-
11月22日立即报名>> 【线上&线下同步会议】领英 跃迁向新 年度管理者峰会
-
11月30日立即试用>> 【有奖试用】爱德克IDEC-九大王牌安全产品
-
即日-12.26火热报名中>> OFweek2024中国智造CIO在线峰会
-
限时免费下载立即下载 >>> 2024“机器人+”行业应用创新发展蓝皮书
-
即日-2025.8.1立即下载>> 《2024智能制造产业高端化、智能化、绿色化发展蓝皮书》
-
精彩回顾立即查看>> 2024 智能家居出海论坛
推荐专题
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论