这个是Quora上提出的一个问题。随着AI在近年来成为热门话题,并且在AlphaGo自学围棋击败了人类近10年最好的围棋选手之后,有人开始提出这个问题。具体来说这个问题有三层意思:
• 到2025年程序员还有没有用,到那个时候所谓的“程序员”是指什么?
• 代码本身还有没有用,到那时候代码会变成什么样子?
• 机器智能会不会取代(目前意义的)代码或程序员两者的其中一个或者全部?
大家基本上倾向于认为,到2025年时编程仍然有意义,但有人说2025年以后情况可能就不是这样了。
而那些认为编码将死、程序员将失业的人的理由是机器智能会像今天的程序员一样具备自学编程的能力。比如说AlphaGo击败李世石就是一个机器学习能力的证据。
我们摘编了一些人的回答,也希望听听你们的看法。
Code.org CEO Hadi Partovi:
绝对的。编程不仅在10年内还有意义,而且还会比今天更重要。不过编程语言的语法会变得越来越简单。刚开始的时候,编程是在纸板上面打孔(可编程打孔机)。然后形式变成了这个样子:00101010101。而现在看起来更像英语。随着编程语言变得越来越像英语,这种东西学习起来会越来越容易,越来越不神秘,所以也会越来越流行。同时,随着计算机渗透到我们的日常生活里面,告诉这些设备我们想做什么,发明新的用例也会变得越来越流行。
但是在可以用自然语言跟机器进行对话并且让它们完美理解并执行从未训练过的复杂任务这些事情上我们还有很长的路要走(好几十年)。当然,一些简单的、预编程好的任务是没问题的,比如“告诉我去加油站最近的方向。”
但是要想教计算机做从来没做过的事情,还是需要对如何跟这种特殊的计算机程序员进行沟通有特殊的理解,以及要有描述算法的计算思维。如何设计循环或条件供计算机执行任务或进行决策的语法也许会变,但底层的基础概念估计很久都不会消失。
自1999年开始就一直开发web门户的Christoph Richter:
Fred Brooks 1975年的一篇文章说软件开发永远都是复杂的。虽然有一些东西可能会变容易,但核心的东西永远都不会容易。《人月神话》这本书说的就是软件工程这项核心挑战一直都难以克服—没有银弹,40年过去了,至今情况依然如此。
Fred Brooks 1975年的一篇文章说软件开发永远都是复杂的。虽然有一些东西可能会变容易,但核心的东西永远都是很难的。《人月神话》这本书被誉为“软件工程的圣经”,40年过去了,那部书里面的观点仍然经得起考验。
有30年技术从业经验,曾当过工程师、产品主管、CTO、CEO的Greg Kostello认为:
10年内编程还是有意义的,但是20年内还有可能性,但30年内可能性也许没有了。
在机器学习的推动下我们现在进入了软件开发的新时代。IBM的Watson和Google的AlphaGo已经证明数据>算法。或者更精确地说,数据就是算法。但是现在你需要非常特殊的技能才能开发出机器学习解决方案。工程师和数据科学家仍然需要对机器学习算法进行编程,但最终同样的系统会教它们学会如何通过分析自己的代码来改进自己。
未来10年对软件工程师的需求还会更强劲,因为初创企业和大公司都把精力聚焦在把算法驱动应用转为数据驱动应用上。通过固定算法来处理信息安全已经太复杂了,需要机器学习即时学习并挫败新的攻击。当然,像无人车这样的计划已经在尝试这方面的努力。Google无人车到处转悠是因为它们需要收集数据来帮助系统学习。但这需要软件工程师和数据科学家一起协作来设计收集数据的系统。他们是这种新办法的先驱。
所以在近期对懂机器学习、知道利用大数据、传感器数据以及视觉和语音的软件工程师的需求会非常旺盛。如果你能够及时调整自己的技能的话,你的职业生涯并无近忧。
中期的情况略为模糊一点。从汇编语言、编译语言到脚本语言,软件每阶段的重新调整都会导致对程序员需求的增加。有点脑子懂基本编程技能的人都能找到工作。但新的工作需要不同的技能集。如果你在设计AI系统,高等数学是必要条件之一。如果你用AI系统,理解如何有效利用数据就很重要。像IBM、微软和Google这样的公司都在设法让这些系统对并不掌握那些技能的程序员来说更容易使用,这就导致了近期内变成工作岗位的爆发。而且由于现在产品设计师可以从更高的层次解决问题,制定智能解决方案,可以完成的事情的范围将会扩大。但是,那些技能不是入门级的。如果你对抽象思维和跟数据打交道不熟,那你的工作就跟无人车变得无所不在之后的Uber司机岗位一样岌岌可危。
从长期来看,应用会自己写自己。问题是,应用设计是由可最大发挥AI系统效能(因为理解问题解决机制)的程序员来做还是由不编程但擅长描述待解决问题的产品设计师来做,还是会涉及到其他技能?这个我还看不清楚。
John Brothers,有20年以上经验的软件开发者和架构师:
到2025年我们不仅还需要软件开发者,而且我觉得到时候软件开发可能还会成为地球上面最后一项“有用”的工作。当然,“开发驱动机器人的软件”是未来这种工作的一部分。
随着时间的推移,我们发现可以有越来越多的方式来用软件替代过去的脑力劳动。认为这种现象未来会停止出现是没有理由的。
反对者可能会说:“你怎么能设计一个程序来替代脑外科医生呢?”我的回答是:“不知道。但你知道什么事情比脑外科手术更难吗?创建一套可捕捉脑科手术涉及的所有关键决策、启发试探法以及算法的逻辑模型。”换句话说,很多任务double很难,但是在软件中捕捉那些任务更难。只要想想你就会发现只要有难度的任务要进行自动化,就会有软件开发者去进行尝试。比方说,地球上最后一项工作的自动化(注:这可真是程序员的自杀式工作啊)。
有人可能会说:“未来只要有合适的工具,编程应该是很容易的事情。”知道我怎么想吗?我想为你祈祷。
以为编程可以做得很简单的看法实际上非常目光短浅。他们的依据大概是这样的:“X类问题很容易建模。因为,任何人只要有合适的指导,都能利用软件对该问题建模。”
对于特定类型的问题来说也许是可以的。但是软件开发有趣的地方在于我们在不断制造新的问题类型,我们制造问题的速度跟找到老问题的自动化解决方案的速度一样快(如果说不是更快的话)。
深度学习和量子计算机都是我们推进软件潜力的例子,这些东西在20年前我们还只能想象。而那只是其中两个而已—我们今天教计算机做的各种事情在过去都只能靠想象。没有理由认为这种情况会很快停止出现。我们在扩大用软件可以做的事情的领域,这种扩张的速度要比我们自动化现有流程的速度要快。这种情况还将持续几十年。
自1978年就开始编程的Steve Traugott:
2025年编程当然还有用,而且作用可能还更大。
我的观点可能会孤立无援,这里我补充一些事情希望能有助于说明观点。至少有一门语言到2025年会发挥更大作用,到了2050年这门语言可能还会被重度使用,甚至到2100年还会存在。鉴于其部署方式,Javascript本身几乎已经成为了互联网协议,web浏览器对它的支持不但是
本文来源:不详 作者:佚名