程序员的未来

原文出处: tcz.hu 译文出处:码农网 – 小峰

程序员是注定灭绝的一个物种。

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

享受这段美好时光吧

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

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

原文发布于微信公众号 - php(phpdaily)

原文发表时间:2015-10-01

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏专知

【专知独家干货】-《科研写作之读论文》的一些心得体会

今天特别给大家分享下来自我们专知团队成员-钱胜胜博士最近在2017年中国多媒体大会上作的《撰写论文的一些心得体会》的报告。钱胜胜博士是中国科学院自动化研究所模式...

3066
来自专栏AI科技大本营的专栏

1000万个“AI名师”:用机器算法“解剖”应试教育 | AI聚变

AI科技大本营按:“AI 创造的是 100 万个、1000 万个名师”,“AI 替代了名师 70% 的必杀技”——就是这样两句话,在整个采访过程中,论答创始人王...

1144
来自专栏人工智能头条

华为诺亚方舟实验室主任李航:迎接自然语言处理新时代

1694
来自专栏北京马哥教育

DevOps,就是开发吃掉运维?

? 本文转载自 DevOps 时代社区高翻院 在大多数的团队中,开发、运维之间有着一系列冲突和博弈。 有人说,DevOps 的出现让开发和运维不再相爱相杀,从...

3286
来自专栏Android 研究

PMI-ACP 敏捷项目管理3——敏捷框架

对比PMP项目管理过程的五大阶段:启动、规划、执行、监控、收尾,敏捷项目管理同样可以把整个框架分为五个阶段,分别是:构想、推测、探索、适应和结束阶段。

732
来自专栏机器之心

从技术到人才,清华-中国工程院知识智能联合实验室发布「2018自然语言处理研究报告」

报告下载地址:https://www.aminer.cn/research_report/nlp?h=5200&download=true

802
来自专栏人工智能头条

合肥工业大学吴信东:大数据Processing Framework多层架构

1164
来自专栏数据猿

【每周一本书】之《Java自然语言处理》(附上期赠书活动获奖名单)

【数据猿导读】本书整合基本问题解决更为复杂的NLP问题;训练NLP模型解决特定领域的问题;利用实用指南学习使用各种核心NLP技术 编辑 | abby 官网 | ...

2776
来自专栏AI科技评论

活动 | SMP2018计算传播学论坛议程出炉,将从三大角度探讨学科进展

SMP 专注于以社会媒体处理为主题的科学研究与工程开发,为传播社会媒体处理最新的学术研究与技术成果提供广泛的交流平台,旨在构建社会媒体处理领域的产学研生态圈,成...

1073

用于AI开发的5种最佳编程语言

你是一个对你下一个项目选择编程语言困惑的AI(人工智能)追求者吗?如果是这样,那么你来对地方了,因为在这里我们将看到AI开发最好的5种编程语言。

2199

扫描关注云+社区