`

编程的未来

阅读更多

 

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

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

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

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

人人都会编程

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

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

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

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

1
2
3
select * from html
and xpath='//ul[@id="homepage_promotion_count_ul"]/li/p[@class="name"]/a'

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

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

所见即所得

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

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

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

编程范型的进化

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

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

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

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

1
2
3
4
love(you, dog).
love(he, dog).
love(she, cat).
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年以后,编程会是什么样子,程序员又会是什么样子,我期待你的答案。

文章系本人原创,转载请注明作者和出处(http://www.raychase.net

注:本博客已经迁移到个人站点 http://www.raychase.net/ ,欢迎大家访问收藏,本ITEye博客在数日后将不再更新。

 

2
2
分享到:
评论
1 楼 xmpp 2012-10-15  
编程越来越方便,使用人也越来越懒惰。所以程序员不失业。

相关推荐

    【编程猫】林翔宇_风起时,少儿编程未来3年发展与趋势.rar

    【编程猫】林翔宇_风起时,少儿编程未来3年发展与趋势.rar

    【编程猫】林翔宇_风起时,少儿编程未来3年发展与趋势.pdf

    根据提供的文件信息,我们可以梳理出以下关于少儿编程未来3年发展与趋势的知识点: 一、少儿编程政策背景 1. 浙江省高考改革:自2014年起,浙江省将信息技术科目(包括编程内容)纳入高考体系,这一改革的实施标志...

    scratch编程-未来城市2重难点.pdf

    scratch编程-未来城市2重难点.pdf

    《初识汉语编程环境》-教学课件.pptx

    汉语编程是一种创新的编程方式,它以中文作为编程语言的基础,旨在降低编程门槛,让更多的人能够理解和使用...通过学习和实践,我们可以逐步掌握汉语编程的技巧,从而改变我们对编程的认知,走向更加广阔的编程未来。

    人机编程案列

    人机编程,也称为混合智能编程,是一种结合了人工智能与人类智能的编程方式。它旨在利用计算机的高效处理能力和人类的创新思维,提高软件开发的...通过智能化工具和方法,我们可以期待一个更加高效、智能化的编程未来。

    编程语言的发展趋势及未来方向

    该文档是Anders在比利时的TechDays 2010及荷兰DevDays 2010分别进行了一场演讲,阐述了他眼中对于编程语言的发展趋势及未来方向,本文便对他的观点进行了总结。需要的可以下载使用~不方便,请下方留言!

    汇编编程环境——未来汇编

    【标题】"汇编编程环境——未来汇编" 指的是一个专为汇编语言编程设计的集成开发环境(Integrated Development Environment, IDE),被称为"未来汇编"。这款工具以其出色的性能、易用性和良好的版本兼容性而受到用户...

    编程教育:未来已来, 将至已至.pdf

    报告中预测未来几年软件编程行业会保持高速增长的势头,到2023年预计市场规模将接近千亿元人民币。这表明编程教育相较于传统的英语、思维、音体美等素质教育产品来说,属于新兴的、增长迅速的领域。 编程教育的增长...

    未来汇编编程工具

    【标题】"未来汇编编程工具"所指的是一款专为汇编语言编程设计的工具,它可能提供了高效、易用的环境,帮助程序员更好地编写和调试汇编代码。汇编语言是一种低级编程语言,它与计算机硬件的指令集紧密对应,允许...

    (完整word)编程语言未来的发展趋势-最终版.doc

    编程语言未来的发展趋势 本文主要探讨了编程语言未来的发展趋势,从计算机语言的发展史、计算机语言的分类、编程语言未来的发展方向预测等多方面进行了分析和预测。 首先,本文对计算机语言的发展史进行了回顾,从...

    未来汇编 强大的编程软件

    《未来汇编:强大的编程软件探索》 在编程领域,汇编语言作为一种底层的语言,它直接对应于机器指令,对于理解和优化计算机系统的工作原理至关重要。本文将深入探讨一款名为“未来汇编”的软件,该软件以其高效、...

    scratch编程-未来城市讲义.pdf

    scratch编程-未来城市讲义.pdf

    少儿python编程教学 少儿编程python授课ppt

    总的来说,"少儿Python编程教学 少儿编程python授课ppt"是一个全面而有趣的课程,旨在以生动有趣的方式,激发孩子们对编程的兴趣,培养他们的计算思维,为未来的学习和发展奠定坚实的基础。通过这份少儿Python编程...

    编程猫:孩子们写的编程入门书.pptx

    这种能力不仅对他们的未来学习和工作有益,还有助于提高他们的创造力和创新能力。 《编程猫:孩子们写的编程入门书》是一本非常有趣、生动、实用和富有启发性的编程入门书。它通过有趣的猫形象和生动的故事情节,...

    GoC编程图形化c++编程电脑版安装包

    10. **更新与升级**: 虽然当前版本没有新版本,但关注官方渠道或开发者社区,可能会发现未来的更新或替代软件,以获取更好的功能和安全改进。 总结,GoC编程图形化C++编程电脑版安装包是一个适合初学者的编程工具,...

    斯坦福大学编程范式资源

    编程范式是编程领域中的核心概念,它定义了如何组织代码和解决问题的基本方式。斯坦福大学的编程范式课程提供了...通过系统地学习和实践,学生可以提升代码质量,提高编程效率,并为未来的软件开发工作打下坚实的基础。

    Python高级编程和异步IO并发编程

    理解事件循环、任务、回调和未来对象的概念,以及如何避免回调地狱,将使你在编写高性能网络服务时游刃有余。 在"AdvancePython-master"这个资源中,你可能找到这些主题的源码示例,通过实践学习,加深对Python高级...

    scratch编程-未来城市1重难点.pdf

    scratch编程-未来城市1重难点.pdf

    少儿编程Python课件

    通过这套少儿编程Python课件的学习,孩子们不仅可以掌握Python的基本语法,还能培养解决问题的逻辑思维能力,为未来深入学习计算机科学打下坚实基础。同时,"范文/模板/素材"的标签提示,意味着课件中可能包含了大量...

Global site tag (gtag.js) - Google Analytics