专栏首页Java学习网程序员的未来

程序员的未来

程序员的未来

在一个来自于CGP Grey很精彩的视频中,他提出说,在不久的将来,大多数工作将会由机器替代。许多行业,从卡车司机到医生,在不久的将来将会消失或发生巨大的变化,创造出一种全新的社会体制。但是,这样一来似乎有点说不通——既然未来的计算机程序将会大放光彩,那么势必需要更多的程序员。毕竟,创建自动汽车、自动化的医疗诊断系统、小贩机器人等等,都需要程序员的参与,不是吗?

大错特错。

编程是什么?

编程是将理念(业务、法律、游戏、数学问题等)翻译成机器可以执行,其他人可以读取的代码的学科。归根结底,程序员不过是中间人而已,一个既能明白问题又能理解机器的中间人,因此,可将两者进行转换。仅仅如此而已。

伟大的程序员既透彻了解他们编程的平台,又深刻理解问题域。创新迸发在域和技术甜美的交集中。这就是为什么(除其他事项外)如果让程序员(GitHub、Visual Studio、AWS等)去做大型产品和政府产品(Healthcare.gov,FBI’s Sentinel,等等)时,软件往往会变得糟糕又昂贵。

每个人都在编程

中间人最终会被淘汰。

编程在过去几十年间已经发展到了相当高的程度。高级编程语言和可用的在线信息将进入编程的门槛几乎降至为零。Scratch,一款来自于MIT有着数百万用户和上千万项目的儿童友好型的编程平台,已经可以媲美GitHub。现在,一个普通的程序员相较于20年前他的同行,需要理解的计算机体系结构和算法要少很多。

然而,这场革命近期似乎停滞不前了。我们最重要的工具——编程语言最近并没有发生太大的改变。大多数新的和流行的语言(如GO和Rust),只是逐渐改进了现有的范式,缺乏革命性的功能。目前最流行的编程语言是Java(1995年),C(1973)和C ++(1983年),年纪都已经不小。这个行业却反而开始专注于开发支持工具和方法,来提高生产效率。我们已经太久没有创新了,所以,我强烈推荐大家看看Bret Victor的演讲《The Future of Programming》。

这是什么意思?

S曲线

科技的发展是这样的:SSSSSSSSSSSSSS

如果要描述地更清楚点的话,它是这样的:

例如,IBM的第一个文字处理器程序(FORMAT)使用繁琐的穿孔卡片作为输入。在同一时间,最先进的打字机附带可替换字体、自动字符重复以及打印数学公式的能力。然而,却没有人使用打字机。本来位于打字机下方的文字处理器的曲线很快赶上并超越了打字机,打字机变成了过去时。

我相信,我们正处在一个类似的语言技术曲线上,正在等待一个新的时代的到来。

不需要程序员的编程语言

为了从系统中彻底淘汰程序员(中间人),我们需要让编程平台自身去“理解”问题,而不再需要编写代码。

这个想法并不是我首创的。 1963年,Ivan Sutherland在《Sketchpad》中就描述了这样一个系统,它可以解决给定的若干已定义约束的问题。Prolog(1972年),一种声明性编程语言就是为了解决给定的一系列逻辑规则问题而创建的。它虽然依然是一种需要程序员的编程语言,并且并没有被广泛使用,但是它没有完全消失。比如,它以及其他语言一起成就了IBM著名的超级计算机沃森(Watson)。

对于不需要程序员的编程语言,最伟大的例子是自然语言,如英语。从二进制代码到汇编,从C到Python,编程语言趋向于越来越类似自然语言。并且作为现在一种推崇的方式,越来越多的程序员正在试图让他们的代码尽可能地接近于白话英文,以便于其他程序员和未来自己的理解。那么这个融合的限制是什么?

NLP

现在的自然语言处理(natural language processing,NLP)系统能够理解文本中的单词角色以及它们之间的相互关系。下面是来自斯坦福大学CoreNLP输出的一个例子:

我们可以发现,仅通过分析文本,该程序就能够识别同一个人的联合引用,并识别单词的角色。

下面说一个更有趣的,例如,此简单的业务规则:

注意CoreNLP是如何识别条件(if – buy)和对象(buy – iPhones)的。那么现在将这些翻译成计算机程序还有什么难的吗?

有越来越多的新闻文章是由机器人写的。最近如Apple、Google、Microsoft和亚马逊等公司已经相继开发出基于语音识别和自然语言处理的客户产品。这进一步加快了这一领域的研究。

如果你想亲自体验自然语言处理,那么我强烈建议Python的NLTK。

遗传编程

另一个有趣的研究领域是遗传算法。使用类似于自然选择的进程,遗传算法通过生产最佳的解决方案来解决问题。从设计喷气发动机到玩超级玛丽都是它的应用范围。

但是,遗传算法肯定不能生成程序代码,是吧?再好好想想。

一个名叫Kory Becker的开发人员,编写了一个可以生成Brainfuck代码来解决简单问题的程序。当然,这款软件的实用性非常有限,但这仅仅是个开始。正如他所说,更复杂的问题需要更多的计算能力,来找出最适合的解决方案。

例如,下面的代码,完全是由程序写的,可打印hello。

+-+-+>-<[++++>+++++<+<>++]>[-[---.--[[-.++++[+++..].+]],]<-+<+,.+>[[.,],+<.+-<,--+.]],+]
[[[.+.,,+].-

该字段称为遗传编程,并且也不是什么新生事物:

对遗传和进化的研究需要结合查找的基因和生存价值标准。(Alan Turing,《Intelligent Machinery》,1948年)

结合NLP和GP,我们就可以建立能理解用自然语言写的约束的系统,并实施可解决这些带有约束的问题的程序。

享受这段美好时光吧

我相信不是所有的编程工作都会被机器人取代,至少不会很快。比如说,那些需要高度优化的代码或使用高级算法的编程任务。其他的还有领域过于复杂的情况。不过,我也相信,大量的程序员将会在未来几年被取代。我的预测是,这将急剧减少对程序员的需求,抵消对软件创造的不断增加的需求,并最终结束程序员的高薪时代。

这是否令你很难过?享受这段美好时光吧,至少我们比货车司机和医生要幸运得多,并且有机会参与到这场革命中。

本文分享自微信公众号 - Java学习网(javalearns),作者:javas

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-09-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 兴趣与坚持:程序员从初级到中级10个秘诀

      在一封与TechRepublic会员交流的邮件当中,他提到了面向程序员的博客、文章及杂志分成两类:面向初学者类(“hello world”这种类型的教程)以...

    用户1289394
  • 风雨20年:我所积累的20条编程经验

     原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务、生物技术、房地产、医...

    用户1289394
  • 5种类型的程序员

    5种类型的程序员 在我的代码旅程和编程冒险中,我遇到过很多奇怪的敌人,以及陌生的盟友。我发现至少有五种不同类型的代码战士,有的人能成为并肩合作的战友,而有些人似...

    用户1289394
  • 程序员的未来

    原文出处: tcz.hu 译文出处:码农网 – 小峰 程序员是注定灭绝的一个物种。 在一个来自于CGP Grey很精彩的视频中,他提出说,在不久的将来,...

    wangxl
  • 观点 | 未来程序员会被机器取代吗?

    用户1737318
  • 编程王道,为「慢」不破

    最近一段时间,在团队中我发现好多程序员,尤其是初级或者新手程序员常常犯得的错误都很初级,经常犯一些编程中的大忌。不是没有能力做好,而是做事不细心,我一直在给他们...

    非著名程序员
  • 每次不能把工作干好的时候,就看看

    软件蚕食一切。未来属于程序员。所以人人都想当程序员。但是并不是每个人都能当好程序员。在你做出决定前还是先看看自己能不能当好程序员吧。可是什么样的人不适合当程序员...

    前朝楚水
  • 一个一直“朝九晚五”的程序员

    要成为一个伟大的工程师,你不需要写博客,也不需要致力开源,更没必要进行技术演讲或者做任何其他事情。

    java架构师
  • 同样是程序员为啥差距那么大?

    号称10x的程序员根本不存在。反对观点一般分为以下三种: 最初10x这个数字来自一个研究(Sackman,Erikson, and Grant (1968))...

    程序员互动联盟
  • 以一当十的程序员不是传说

    昨晚,我发了下面的微博: 有些人议论所谓“10x”或者“超级”的程序员都是传说。可那些著名运动员,艺术家,作家,呃,还有摇滚明星的都是神话吗? — Yev...

    用户1410343

扫码关注云+社区

领取腾讯云代金券