您的位置:www.85058.com > 技术支持 > 软件开发即将到来的革命

软件开发即将到来的革命

发布时间:2019-10-22 08:07编辑:技术支持浏览(196)

    原标题:软件开发即将到来的革命

    图片 1

    图片 2

    还记得软件席卷世界的时候吗?一个最近比较流行的观点是,人工智能正在席卷各类软件。过去,谷歌的首席执行官桑达尔·皮查伊(Sundar Pichai)谈到了“自动编写自己”的软件。有些人认为软件开发的工作只是比创造不断重复代码片段复杂一点,那么现在,人工智能的快速发展可能会让软件工程师们集体失业。

    几十年来,软件开发已经手动完成。

    传统上,开发人员编写软件有着一系列固定的规则,例如:如果a发生,那么就进行b操作。人类码农指导着机器,这是软件1.0时代。但在软件2.0时代里,人们认识到,基于深度学习研究的进步,我们可以构建一个神经网络,来学习需要哪些指令或规则才能获得预期的结果。特斯拉人工智能总监安德烈·卡帕西(Andrej Karpathy)等人是2.0时代的支持者,他们提出的论点是,未来里,我们将不再需要亲手编写代码。我们只需要找到数据并将其输入机器学习系统,一切就完成了。在这个场景中,软件工程师的角色将转变为“数据监管员”,或是“数据赋能者”。

    从FORTRAN中的打卡到在Go中编写分布式系统,该学科基本上保持相同:深入思考问题,提出一种聪明的方法(即算法)并给机器一组执行指令。

    然而,软件工程不会很快消失。即使软件工程师2.0、数据科学家2.0这样的新职业正得到不断的发展,人工智能技术也会反过来增强软件1.0时代工作者的能力。事实上,我们还不能确定软件工程在不久的将来,是否会变得和今日完全不同。深度学习神经网络系统中将会为我们提供帮助,但它不会完全取代我们。

    这种方法可称为“显式编程”,从大型机到智能手机,从互联网热潮到移动革命,都是不可或缺的。它帮助创造了新的市场,并使像苹果,微软,谷歌和Facebook家喻户晓的公司成名。

    机器学习将如何塑造软件开发?

    然而,缺少一些东西。早期计算机时代作家设想的智能系统,从菲利普迪克的机器人出租车到乔治卢卡斯的C-3PO,仍然是科幻小说。即使是最聪明的计算机科学家,看似简单的任务也顽固地无视自动化。专家们指责硅谷面对这些挑战,转而摆脱基本进步,专注于增量或时尚驱动的业务。

    这将是一个全新的世界,但我们并不是活在电视剧里。事实上,一般的智能办公室助理已经能安排一天的日程,并启动电话会议。甚至有些AI支持的系统,可以为企业生成商标,并根据反馈自动改进商标。

    那当然是即将改变的。 Waymo的自动驾驶汽车最近通过了800万英里。微软的翻译引擎虽然不能流利地使用600万种通信形式,但在中英文任务中可以达到人类的准确程度。初创公司在智能助理,工业自动化,欺诈检测等领域开辟了新的领域。

    今天,手机会自动检查拼写并提示下一个单词。在编写代码时,类似的工具也会高亮潜在的错误。例如,从事结对编程(Pair programming)的人自然会预想到软件2.0对他们工作方式的影响。考虑到机器学习和会话接口方面的进步,可以想象,未来的一台机器就能撑起结对编程任务的半边天。

    个别地,这些新技术有望影响我们的日常生活。总的来说,它们代表了我们对软件开发的思考方式的巨大变化

    多年来,我们一直使用自动化工具来节省编写模板代码的时间。现在,AI驱动的助手工具也越来越频繁地出现在更加复杂的软件开发中。它们以增强式集成开发环境的形式出现,为人们推荐更好的代码组合。

    • 与显式编程模型的显着不同。

    人工智能的角色

    这些进步背后的核心突破是深度学习,这是一种受人类大脑结构启发的人工智能技术。最初作为一个相对狭窄的数据分析工具现在可以作为一个接近通用计算平台的东西。它在广泛的任务范围内优于传统软件,最终可能提供长期躲避计算机科学家的智能系统

    让我们想象一个更高级的人工智能助手在未来发挥的巨大作用。在进行编码工作时,你的AI同时会通过分析确定你正在编写的是哪种代码,并且根据你的风格来自动完成其余的代码撰写。本质上,人工智能助手更像是获得你的授意,为你完成剩下的工作。

    • 这些都是媒体有时不成比例的壮举。

    另一个人工智能助手将大有作为的领域是测试驱动开发。与人类工作速度形成鲜明对比的是,一个机器同事可以快速进行数百万次的迭代,来找到解决测试的正确代码段。拥有一个AI同事意味着,测试验证这项任务将交由AI完成。我们不用同时应对编写测试和测试验证这两项工作,从而节约了在编码上花费的时间,让我们有更多的时间用于理解和解决业务问题。

    然而,在深度学习炒作中,许多观察者都错过了对其未来持乐观态度的最大理由:深度学习需要编码人员编写非常少的实际代码。深度学习系统不是依赖于预设规则或if-then语句,而是根据过去的示例自动编写规则。软件开发人员只需要创建一个“粗糙的骨架”来解释特斯拉的Andrej Karpathy,然后让计算机完成其余工作。

    将来,软件2.0甚至可能会帮助指导测试驱动开发,为测试提出建议,并给出它自己的原因。让我们想象一下,营销人员来到开发团队,说他们想要这样或那样的功能。如果他们能以机器能够理解的方式表达他们想要的东西,机器就能自动选择必要的测试,并提出下一步的建议。

    在这个新世界中,开发人员不再需要为每个问题设计一个独特的算法。相反,大多数工作重点是生成反映所需行为和管理培训过程的数据集。来自谷歌TensorFlow团队的Pete Warden早在2014年就指出这一点:“我曾经是一名程序员,”他写道。 “现在我教电脑写自己的节目。”

    强化,而不是代替

    再次:驱动当今软件中最重要的进步的编程模型不需要大量的实际编程。

    这引发了一个终极问题:机器会完全取代软件工程师吗?现实情况是,我们最多只能达到百分之九十几的能力,而这仍然意味着1%的失败和不可预测性。一个监控系统需要用来确保所写的代码能够正常工作。也许软件工程师的新角色就是监控代码并帮助机器学习系统达到接近100%的准确率。

    本文由www.85058.com发布于技术支持,转载请注明出处:软件开发即将到来的革命

    关键词:

上一篇:爆料大神:6.1英寸iPhone XC也支持双卡双待

下一篇:没有了