研发软件工程师Lakshmi Narasimhan Ramakrishnan:
简答:是的!但不是的样子。
从机器语言、到面向对象语言,编程的演进历史是不断地抽象。这一路上我们还在操作系统的作用下得以开发出更好的基础设施。大家很快意识到自己可以在这些基础设施之上编写出更复杂的程序,然后继续开发出更复杂的软件架构。
然后有了互联网(也是基于软件协议开发的),这个东西使得对地球另一端的计算机进行编程/沟通成为了可能。互联网起到了一个强大的基础设施的作用,围绕着它开发出了许多的软件,在,我们把云视为一台庞大的计算机(接入互联网运行分布式操作系统的计算机子集)。
过去几年机器学习和人工智能成为了一个热门话题。其中的出现的一个误解是AI会发展到不需要人来编程的地步。这是不对的。我的观点是AI能发展到做出比人更好的决策(尤其在问题搜索空间庞大的情况下)。比如Google的AlphaGo是证据之一。我会吧AI看做建设更复杂基础设施的工具。而这反过来又会帮助我们开发出更好的软件。
我的意思是说,这是一个恶性循环。软件演进然偶帮助我们创建出更强大的基础设施进而引领我们走向更高层次的抽象,反过来又让我们做出比更复杂的软件,如此周而复始。所以编程始终都是有重要意义的,但是抽象和你试图用代码解决的问题会不断发生快速演变。(注:这个观点跟英国量子物理学家戴维·多伊奇的《无穷的开始:世界进步的本源》有些类似,尽管现象亘古不变,但我们始终都在寻找好的解释)