软件开发的未来是什么?

软件开发的未来是什么?

多年来,软件开发都是手动完成的。

从FORTRAN中的打孔卡到Go中的分布式方法,该学科基本上保持不变:认真思考问题,提出巧妙的方法(即算法),并给机器提供一对指令来实施。

从大型机到智能手机,从互联网热潮到移动革命,这种方法(可能称为“显式编程”)是关键。它帮助建立了新的市场,并使苹果,微软,谷歌和Facebook等家喻户晓的公司成为了家喻户晓的公司。

但是,仍然会缺少一些东西。古代计算机时代的作者,菲利普·迪克(Philip Dick)的机器人出租车到乔治·卢卡斯(George Lucas)的C-3PO所设想的智能系统,仍然是科幻小说。看似简单的任务甚至最聪明的计算机科学家都顽固地挑战自动化。权威人士指责硅谷面对这些挑战,转向基本发展,而专注于渐进式或时尚驱动型公司。

显然,这将改变。 Waymo的自动驾驶汽车最近行驶了800万公里。微软的翻译引擎,即使不流利的六百万种交流形式,也可以满足汉译英任务的准确性要求。初创公司正在智能助手,工业自动化,欺诈检测等许多领域开辟新天地。

这些新技术单独会影响我们的日常生活。总体而言,它们代表了我们对软件开发的思考方式的巨变-也是显式编程模型的显着偏离。

支持这些进步的心脏突破是深度学习,这是一种由大脑构造推动的人工智能策略。最初是一个相对狭窄的数据评估工具,现在却可以用作通用计算系统。在许多工作上,它的性能都优于传统软件,并且最终可能会提供长期以来计算机科学家无法掌握的智能系统-这些成就有时会使媒体不相称。

但是,在深刻的学习炒作中,大多数观察者忽略了对其前景持乐观态度的最大原因:深刻的学习要求编码人员几乎不编写任何代码。深度学习程序不依赖于预设规则或if-then发票,而是根据先前的示例自动编写原理。软件开发人员仅需制作一个“粗糙的骨架”即可解释特斯拉的安德烈·卡帕蒂,然后让计算机完成其余的工作。

在这个新的世界中,程序员不再需要为每个问题设计一种特殊的算法。大多数工作都集中在生成反映所需行为的数据集和管理培训过程上。 Google的TensorFlow团队的Pete Warden早在2014年就指出了这一点: “我曾经是编码员,”他写道。 “我教计算机编写自己的应用程序。”

再说一遍:推动当今应用程序最重要改进的编程模型并不需要大量的实际编程。

这对软件开发的未来意味着什么?

编程和数据科学将日益融合

在可预见的将来,大多数应用程序将不包括“端到端”学习程序。它将依靠数据模型来提供核心的认知能力和与用户进行交互并转换结果的显式逻辑。问题“我应该使用AI还是常规方法来解决此问题?”将会越来越发展。设计智能系统将需要同时控制两者。

人工智能专业人士可能会成为摇滚明星

做AI很难。一流的AI程序员-不仅是杰出的学者和研究人员-稍后将成为软件企业最有价值的工具之一。这对传统的编码人员来说有点讽刺意味,因为他们在1950年代就开始在不同行业中自动工作,而目前他们正面临着自己工作的部分自动化。他们对服务的需求肯定不会下降,但是希望保持领先地位的个人需要以有益健康的怀疑态度来检查AI的力量。

需要构建AI工具链

Lyft的机器学习负责人Gil Arditi表示最好。 “机器学习现在处于原始的汤期。它与80年代初或70年代末的数据库非常相似。您必须成为世界专家才能使这些项目正常工作。 ”研究还表明,许多AI模型都是不容易解释,不容易欺骗并且容易受到偏见。除其他外,解决这些问题的工具对于释放AI开发人员的潜力至关重要。

我们都需要熟悉不可预测的行为

个人计算机“教育”的概念适用于程序员和用户。它增强了这样的印象,即计算机完全按照我们所说的去做,相似的输入始终产生相似的输出。相比之下,AI版本就像呼吸,生命系统一样。新的工具将使它们的行为更像显式程序,特别是在对安全性要求严格的配置中,但是,如果我们将护栏放置得过紧,我们可能会失去这些系统的价值,例如AlphaGo的“异形”举动。随着我们发展和使用AI软件,我们必须了解并接受概率结果。

并希望AI接管的可能性接近于零。