程序员的未来

程序员的未来

在一个来自于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,我们就可以建立能理解用自然语言写的约束的系统,并实施可解决这些带有约束的问题的程序。

享受这段美好时光吧

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

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

时间: 2025-01-13 13:08:58

程序员的未来的相关文章

第1次作业:这是一个不想当程序员的未来程序员

前言:这是一个不想当程序员的未来程序员对于计算机专业的某某看法.... 1.结缘计算机 问题1.1:你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? 对于这个问题,其实计算机专业并不是我的第一志愿,而是第三志愿,我第一二志愿分别是会计和金融,不过现在看来其实我的兴趣也不在这几个方面,有句话说得好,三分靠高考,七分靠志愿.志愿填的好,将来烦恼会少很多.经过两年的学习,我发现当初我就不应该考虑就业前景而填报专业,而是应该结合自己的兴趣爱好来,即使这份兴趣爱好所对应的专业将来并不好找到工作

大龄程序员的未来在何方

来源:http://www.gad.qq.com//article/detail/30358?sessionUserType=BFT.PARAMS.229862.TASKID&ADUIN=114328649&ADSESSION=1501026740&ADTAG=CLIENT.QQ.5533_.0&ADPUBNO=26719 作者:foruok 大家都对大龄技术人员的未来非常关心,有的迷惘,有的坚定,不一而足.因此,我准备写一篇文章专门来谈谈这个问题. 大龄程序员的界定 老早

做了两年程序员对未来迷茫怎么办?

近期新霸哥看了一些关于技术交流的QQ群聊天记录,其中感慨最深的就是有一哥们说自己做程序员都快两年了,不知道自己想要啥,该怎么做,是继续做程序员该是转型做其他的行业?这个问题,新霸哥相信有很多的朋友也经历吧. 回想过去刚刚进入职场,特别是进入了一个高薪的职位的时候,虽然会很苦,很累,但是一想到是自己的专业工作,知道自己想要啥,就一股劲的拼命的向前冲.可是两年后的今天为什么会出现不知道该做啥好呢?这个时候新霸哥建议是时候该停下工作好好的重新认识自己,这样不仅对公司还是对个人都是有利的. 新霸哥觉得,

程序员迷茫的未来

本文的作者:Ed Finkler 我是一名充满热情的程序员,一名开源软件的倡导者,我喜欢用科技提高人们的生活.我喜欢创造东西,喜欢将它们分享给世界.我有大量的开源开发作品,请看我的GitHub页面. 我一直担惊受怕,过去,可能是因为我年轻,但现在,我已经不是那么年轻了,我仍然发现有很多事情让我害怕. 我越来越担心我作为一个程序员的未来. 当年纪越来越大后,我开始变得不能加班.我开始用更多的时间和家人在一起,而不是坐在计算机前(尽管这样,她们仍是抱怨).我在本地教育委员会社区里提供一些帮助,还组织

温水里的程序员,技术将淘汰一切。

七月,炎炎的夏日,疯狂的暴雨不分昼夜,侵袭着这座城.早上七点,我骑着摩拜单车出发去往地铁站,誓死如归一般的,挤进地铁.像往常一样,骑车.挤地铁.打卡上班.相 信大家都跟我一样,未来的憧憬支撑着我们,日复一日的写着代码.重复着一样的工作.造不完的车轮.用不完的框架,然而我慢慢的开始觉得这是一个陷阱,一个把我们的梦想与未 来禁锢在牢笼中.细细把玩的理想主义者. 说一个老掉牙的故事:<温水煮青蛙>, 美国康奈尔大学作过一次有名的实验. 经过精心策划安排,他们把一只青蛙冷不防丢进煮沸的油锅里,这只反应

【原创】PHP程序员的技术成长规划

PHP程序员的技术成长规划 作者:黑夜路人(2014/10/15) 按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定学习成长目标. 本文按照目前主流技术做了一个基本的梳理,整个是假设PHP程序员不是基础非常扎实的情况进行的设定,并且所有设定都非常具体明确清晰,可能会让人觉得不适,请理解仅代表一家之言.(未来技术变化不在讨论范围) 第一阶段:基础阶

PHP 程序员的技术成长规划

按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定学习成长目标. 本文按照目前主流技术做了一个基本的梳理,整个是假设PHP程序员不是基础非常扎实的情况进行的设定,并且所有设定都非常具体明确清晰,可能会让人觉得不适,请理解仅代表一家之言.(未来技术变化不在讨论范围) 第一阶段:基础阶段(基础PHP程序员) 重点:把LNMP搞熟练(核心是安装配置基本操

PHP程序员的技术成长规划

PHP程序员的技术成长规划 作者:黑夜路人(2014/10/15) 按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定学习成长目标. 本文按照目前主流技术做了一个基本的梳理,整个是假设PHP程序员不是基础非常扎实的情况进行的设定,并且所有设定都非常具体明确清晰,可能会让人觉得不适,请理解仅代表一家之言.(未来技术变化不在讨论范围) 第一阶段:基础阶

《失业的程序员》终极花絮:跌倒了请对原地做个标记,并在其他地方爬起来

<失业的程序员>程序员连载章节入口:第一章      第二章   第三章  第四章  第五章  ........... 小提示:其实我本身只是一个创业中的程序员.偶尔在博客园连载了一些我的个人真实创业经历,没想到竟然会成书.(呵呵 一下吧) 以下是我去年首次写IT创业经历连载之前的花絮(写于昨日凌晨) -------------------------------------------------------------------------------------------------