物理学家眼中的世界:编程的未来

最近在看一本书,加来道雄(Michio Kaku)的《物理学的未来》,第一、第二章是程序员更加关心的,对于下一个100年计算机和人工智能未来的预测。想想计算机发展短暂的历史,这些发生了的翻天覆地的变化,似乎都在弹指一挥间。谁的大胆预测可以那么准确?无论如何,书中对其这样几个猜想令我记忆深刻:

  • 因特网眼镜和隐形镜片
  • 无人驾驶汽车
  • 摩尔定律结束
  • 通用翻译器
  • 全息摄影和三维影像
  • 意识识别
  • 有意识情感的机器人
  • 模拟大脑

这是物理学家眼中的世界(另外推荐他的另一本书《平行宇宙》),激动人心;另一方面,我回想起小时候无比痴迷的机器猫,小小四维空间袋,寄托了孩子多少纯真的梦想,有多少神奇的道具已经成为现实……

但是程序员要说的看法,尤其在自己熟知的领域,我们不谈语言的发展和趋势,这些留给专家去做吧——不妨把目光放长远一点,100年后的程序员,他们都在做怎样的事情?100年后的编程,会是怎样的一种劳动?

人人都会编程

微博上,有朋友对于HTML5实现的web操作系统评论道“断网就是废物一个”,但是他并没有意识到,很快网络就将如同现在的水、电这样一样,是人正常生活不可缺少的基础设施。

类似的,编程,也将是未来人们日常生活的必备技能,如同写字、阅读一样。编程并不非得指写那些非程序员看不懂的奇形怪状的代码。你把衣服放到洗衣机里,设定好水量中等,浸泡20分钟,洗涤20分钟,漂洗3次共15分钟,再甩干3分钟——这,就是编程,你做的仅仅是按几个按键,把这几项工作组合起来。

再如ifttt这样的网站,你都可以实现编程的分支功能了——如果明天天晴的话,就发给你一条短信,去爬山。完成这样的功能,你根本不需要是程序员,你只要会操作电脑,会上网就可以了。

互联网的资源,将被得到更好地组织和获取,以YQL(Yahoo! Query Language)为例,你可以体会到这一点:


  1. select * from html  
  2. where url='http://www.dangdang.com/' 
  3. and xpath='//ul[@id="homepage_promotion_count_ul"]/li/p[@class="name"]/a' 

它做了这样一件事:从当当网的页面去获取数据,而数据的路径通过XPath表达式给出。如此一来,你可以感受到,整个互联网就变成了一个超级大型的数据库。当然,这样的语法还是不够简单,希望能看到类似ifttt的应用出现,目的却是让不会编程的人也可以轻松从互联网这个大型数据库中查询自己需要的东西。

另外,未来需要普通人掌握的编程技能也不尽相同,就如同现在年轻人和老人的阅读技能大不相同一样。但是可以确定的是,生活中会充满编程的行为,让机器替代自己做更多的事。

所见即所得

好吧,在这里我谈这个话题也和我的启蒙编程语言是VB有关。你也许和我一样,谈到所见即所得的时候,想到很多编程语言、IDE,甚至包括 FCKeditor这样的富文本编辑组件。Google已经做了这样的尝试,App Inventor就是这样的东西,它是为手机端准备的编程软件,你可以看看这样的宣传视频:

上面这则视频似乎只是针对非专业程序员的傻瓜式工具,那么再来看看这个在网上已经广为流传的Bret Victor的神一般的演讲,题为《Inventing on Principle》,第一次看的时候,你一定会像我一样惊讶地合不拢嘴:

所见即所得使得编程的过程更贴近人最自然的思维,而一张丰富画面所传递的内容远远大过枯燥的代码行语义和数值。

编程范型的进化

相较于硬件的摩尔定律,软件的发展似乎真的是“太慢了”,相较于硬件淘汰的速率,几十年历史的编程语言却可以长盛不衰地存活下去。好在软件的发展也是有驱动力的,软件的复杂性就是直接驱动力之一。想想现在做一个普通网站的代价,和十五年前比较,我们能省做多少功。

很多时候程序员会觉得,算法还是不容易转变成代码,即便是简单的算法,思路简单的纸上实现,变成代码却比较冗长。我觉得大部分情况下这不是你编码技巧的问题,而是编程语言的问题——换句话说,如果你使用一种合适范型的编程语言,兴许就可以轻松解决这个问题——即便这样的语言并不一定好找,并不一定容易设计。

我们都知道从过程式编程到面向对象编程的进化,可是如今常用的编程范型已经远远超出这两者了,例如声明式编程、面向方面编程、基于规则的编程等等,我们的固有思维模式一次有一次遭到挑战。

以Prolog语言为例,它是由事实和规则组成的,我们先告知程序这些已知的事实和规则,再去询问程序一个需要推断的问题,让它给出推断的结果。比如:


  1. love(you, dog).  
  2. love(he, dog).  
  3. love(she, cat).  
  4. friend(PA, PB) :- \+(PA=PB), love(PA,Animal), love(PB,Animal). 

我来解释一下:

  1. 给定了三个事实:你爱狗,他爱狗,她爱猫;
  2. 给定一条规则:对于人物A(PA)和人物B(PB),如果人物A和人物B不是同一个人(“\+”表示取反),人物A爱动物Animal,并且人物B也爱同一种动物Animal,那么人物A和人物B就是朋友(friend)。

好,现在来询问程序一个问题:


  1. | ?- friend(you, he). 

你和他是朋友吗?程序判断你爱狗,他也爱狗,就给出结论:


  1. yes 

这只是基于规则的编程范型的一个例子,不同范型的语言适用于解决特定的问题。我们在未来能看到更多范型的语言,目的就是让对特定问题的表述和解决更见简单和易于理解。

创造性的工作在哪

既然编程会成为一件几乎人人都能够做的事情,那么程序员,你的价值在哪?

好,先来看看为什么越来越多的人可以编程呢?因为编程的门槛更低了。即便是现在,编程的门槛已经比二十年前低得多了:不明白网络协议?好,已经有现成的类库可以使用;不懂平台差异?好,你只需要在无差别的虚拟机上写程序;不理解内存管理?好,让程序来自动帮你完成这件事情……

所以,如果你还在为了解语言的不良设计、历史原因等等遗留下来的陷阱,或者为知道某个提高语言表达的语法糖而沾沾自喜的时候,你想过没有,这样的优势很可能太不值钱了。

程序员最有价值的部分不应在“翻译”上,即不应在将思考的结果翻译到代码这一层面上。编程的未来一定是让编程工作越发贴近人本质的思考,这样的“翻译”工作导致的歧义、错误、陷阱会越来越少,把清晰的思考变成代码是一件越来越简单的工作,以至于某天可以让能够读懂人脑的计算机来完成。

另一方面,很多公司的老大们却都不懂程序员,在他们心目中,“程序员”只是高成本的劳动力,只会在一台搞不懂的机器上干一些更搞不懂的事情。

看到这里,你是不是也发现,程序员本质上应该和音乐家、画家类似,往往也让许多人无法理解,而且艺术的价值,常常也都来源于思考?

音乐家有了更先进的乐器,画家有了更丰富的画笔,情感的抒发都可以更加自由。甚至有一天,拿掉乐器和画笔这些传统物理实体,给大脑接上两根线,思考之后的乐谱和画册就诞生在电脑里了。

可是,即便计算机可以帮助人思考,它却不能全面代替人思考,尤其对于艺术的创作。即便到了100年以后,程序员创造性的工作,还是无从替代的。

最后,放开枷锁去想象吧,100年以后,编程会是什么样子,程序员又会是什么样子,我期待你的答案。

时间: 2024-09-30 17:21:29

物理学家眼中的世界:编程的未来的相关文章

编程的未来

最近在看一本书,加来道雄(Michio Kaku)的<物理学的未来>,第一.第二章是程序员更加关心的,对于下一个100年计算机和人工智能未来的预测.想想计算机发展短暂的历史,这些发生了的翻天覆地的变化,似乎都在弹指一挥间.谁的大胆预测可以那么准确?无论如何,书中对其这样几个猜想令我记忆深刻: 因特网眼镜和隐形镜片 无人驾驶汽车 摩尔定律结束 通用翻译器 全息摄影和三维影像 意识识别 有意识情感的机器人 模拟大脑 这是物理学家眼中的世界(另外推荐他的另一本书<平行宇宙>),激动人心:

Hadoop之父Doug Cutting眼中大数据技术的未来

上次见到(膜拜)Hadoop之父Doug Cutting是在2年前,2014中国大数据技术大会上.今年Hadoop10岁,刚看到他的Hadoop十周年贺词,感觉时间飞逝. Doug Cutting成长史 1985年毕业于美国斯坦福大学的Cutting并不是一开始就决心投身IT行业的.在大学时代的头两年,Cutting学习了诸如物理.地理等常规课程.因为学费的压力,Cutting开始意识到,自己必须学习一些更加实用.有趣的技能.这样,一方面可以帮助自己还清贷款,另一方面,也是为自己未来的生活做打算

Geek眼中的世界:解密匪夷所思的App诞生史

原题<Geek眼中的世界> 为什么会有那么多匪夷所思的App, 它们是如何诞生的?人认识世界的传统路径其实是单向的,所以总是有人想反抗,而且,他们成功了. 文|CBN记者 杨樱 实习记者 李蓉慧 王清 施钰涵 利用庞大数据库重新定义知识传递的方向. 假设在野外,看到一种植物,你想知道它的名字,你电话请教一个植物学家,这个时候你会发现,准确描述这个叶子的形状.特点是一件很难的事. 命名是人类认识世界的最基本方式,我们学到的知识也大都是借助"被命名"来完成,也因为这样,知识传递

Android 响应式编程的未来展望:RxJava 2 版本前瞻

本文讲的是Android 响应式编程的未来展望:RxJava 2 版本前瞻, 下一代的 RxJava 已经发布:RxJava 2.如果你现在的工作项目使用 RxJava 1,现在可以选择迁移至新版本.但我们是应该马上动手迁移,还是应该等待一段时间,先做些项目的其他工作? 要做出这个决定,你需要仔细考虑一下「投资回报(ROI)」,想想花费时间进行迁移能否在短期或长期内得到回报. 迁移的好处 响应流的兼容性 RxJava 2 其中一个结构性变化就是增加了对响应流(Reactive Streams) 

存储及可编程是未来物联网芯片发展的关键

在刚刚举办的"2016新一代互联网基础设施论坛"上,英特尔运营商事业部总监叶维琛指出:"今天物联网的发展只是开始,其腾飞将在今后的若干年里实现,且会呈指数式增长.同时任何物联网的存在,都会以交换.存储为中心.这也要求芯片厂商注重存储及可编程解决方案的研发." 当今,可穿戴设备已经非常普遍,但远远不够.云计算是重塑未来智能.连接世界的最重要趋势,PC.物联网终端连接至云端会产生更大价值.英特尔的愿景是希望能够基于万物互联的云计算,提供强大的数据处理能力.其次,能够把各

世界标准日:未来企业发展标准化很重要

2012年10月14日,北京 --今天,国际标准领域迎来了其最重要的节日之一--世界标准日(World Standards Day),暨国际标准化组织(ISO)成立纪念日.世界标准日发起于1946年10月14日,旨在提高对国际标准化在世界经济活动中重要性的认识,以促进国际标准化工作适应世界范围内的商业.工业.政府和消费者的需要.作为ISO的创始成员之一,BSI指出,在当今社会,人们几乎每天都会在各个国家的新闻里发现"标准"这一字眼.可是,尽管我们迎来了 2012 世界标准日,依然有人对

凯雷创始人:世界PE的未来 不会再错过中国

中国将成为世界上最大的经济体,并可能在我们有生之年成为世界上最大的私募股权市场 大卫·鲁宾斯坦戴着他标志性的黑框眼镜走了进来. 保守.刻板,似乎是这位美国金融界传奇人物给外界留下的第一印象,但这恰恰是凯雷投资集团 (NASDAQ:CG)创始人.联席CEO鲁宾斯坦刻意打造的形象.更确切地说,多年以来,他代表了凯雷的形象:谨小慎微.深藏不露.这既与他早年从政--27岁时进入白宫,任卡特总统的副国内政策助理有关,也与他及另两位创始人与华尔街若即若离的态度有关. 作为创始人之一,鲁宾斯坦将凯雷带上全球私

虚拟现实的真正奥义:改变你眼中的世界不算什么

摘要: 我一直以为自己是个无可救药的技术乐观主义者,对新技术的未来总是过于乐观.但是这半年来,我发现在虚拟现实这个点上,真实情况可能比我想的还要乐观.这可能是二十多年里我 我一直以为自己是个无可救药的技术乐观主义者,对新技术的未来总是过于乐观.但是这半年来,我发现在虚拟现实这个点上,真实情况可能比我想的还要乐观.这可能是二十多年里我头一次低估的技术. Oculus VR刚出来的时候,我是纯粹把它当成一款颠覆性的游戏和电影设备的,很棒,没了:第一次在车库上手了第一代设备后,还是这种感受,没错,它会

预测:2016 年主流编程的未来发展趋势

JavaScript 最新版本 自2015年6月 JavaScript/ECMAScript 6 推出以来,其新功能被广泛应用于网络开发领域.超过 90% 的主流浏览器和 Node.js 兼容 ES6 语法,即使是未实现 ES6 的老版本浏览器,你也能通过转译器或者 polyfill 用上 ES6.旧版本的 JavaScript 不会一夜之间消失殆尽,但我们可以看到 ES6 在2016年的使用有显著增长,预计明年会有更多开发网站投入使用. BaaS BaaS 在2016的使用情况有所增长.Baa