编程的未来

标签: 编程 未来 | 发表时间:2012-10-14 23:38 | 作者:
出处:http://www.iteye.com

 

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

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

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

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

人人都会编程

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

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

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

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

1
2
3
select * from html
where url= ' http://www.dangdang.com/'
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博客在数日后将不再更新。

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [编程 未来] 推荐:

编程的未来

- - ITeye博客
最近在看一本书,加来道雄(Michio Kaku)的《物理学的未来》,第一、第二章是程序员更加关心的,对于下一个100年计算机和人工智能未来的预测. 想想计算机发展短暂的历史,这些发生了的翻天覆地的变化,似乎都在弹指一挥间. 无论如何,书中对其这样几个猜想令我记忆深刻:. 这是物理学家眼中的世界(另外推荐他的另一本书《平行宇宙》),激动人心;另一方面,我回想起小时候无比痴迷的机器猫,小小四维空间袋,寄托了孩子多少纯真的梦想,有多少神奇的道具已经成为现实…….

将会改变未来IT世界的十种编程语言

- - 外刊IT评论
提示:如果您在阅读器里点击订阅本站的文章链接时发现有一个中转页,这说明你的订阅地址有误,本站的订阅地址(RSS)是:. http://www.aqee.net/feed/,请及时纠正. 这里要说的都是革新,说这些的目的就是要保持关注最新技术. 如果你是一个程序员,想要探寻未来技术,那这篇文章就是你的必读之选.

GC的三种方式,读ruby之父写的《编程语言的过去、现在和未来》笔记

- - C++博客-首页原创精华区
所谓垃圾(Garbage),就是需要回收的对象. 作为编写程序的人,是可以判断“这个变量已经不需要了”的,但是计算机做不到. 因此,如果程序直接或间接的引用一个对象,那么这个对象就被视为“存活”;反之,已经引用不到的对象被视为“死亡”. 将这些“死亡”的对象找出来,然后作为垃圾进行回收,这就是GC的本质.

Hadoop Streaming 编程

- - 学着站在巨人的肩膀上
Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如:. 采用shell脚本语言中的一些命令作为mapper和reducer(cat作为mapper,wc作为reducer). 本文安排如下,第二节介绍Hadoop Streaming的原理,第三节介绍Hadoop Streaming的使用方法,第四节介绍Hadoop Streaming的程序编写方法,在这一节中,用C++、C、shell脚本 和python实现了WordCount作业,第五节总结了常见的问题.

Shell编程

- - 博客园_首页
本来打算寒假回家好好学习Linux的,为以后学习嵌入式打好基础的. 回家之后的学习效率非常低,之前为了搭建Linux环境,折腾了很长时间,学到现在也就勉强才把Shell编程学完了. 今天就把自己学习的相关知识点总结整理一下. 个人感觉shell程序跟windows下的批处理文件有点像,就是将一些系统命令写进一个可执行文件中,然后执行.

用 AlphaCode 编程

- - 奇客Solidot–传递最新科技情报
至少在部分问题上 AI 程序员能与真正的程序员竞争了. Alphabet 旗下 AI 子公司 DeepMind 宣布了 AI 代码生成系统 AlphaCode(PDF),声称测试显示其水平在编程竞赛中已经具备了竞争力. 计算机科学家 Scott Aaronson 也为 AI 在编程方面的进步 惊叹不已.

未来的汽车

- Allen - 译言-电脑/网络/数码科技
来源Cars Of Future. 也许几年后,所有的汽车可能会以这种风格呈现于你的眼前.   地质年代的新名词:人类世-人类的时代.   【2011.02.19】奥巴马每周电视讲话:在英特尔的讲话“赢得未来”(MP3+MP4).   神奇的3D打印制造技术 - 把”小提琴“打印出来.

黑莓的未来?

- sg - 莓文化
一个月没写博客了,感觉没什么好写. 最近 RIM 的股价一直跌,他们的重心应该是 PlayBook 吧,看来不是很有希望. 相比平板电脑,我还是更喜欢手机多一些. 前几天把 iPad 也寄给朋友玩了. 黑莓的新旗舰 9900 要到九月后才能买到,那一整个夏天黑莓似乎也没什么好作为的. 在六月之前,还有好多朋友是对 9900 有购买意向的,一切的转机发生在前几天 iOS5 发布,新的系统增加了相当多的功能,这也罢了,还把各个系统的优点都融合了进来,Android 的通知方式,iOS 专享的 iMessage 等等,一切来得太突然了,几乎所有人都在期盼新的 iPhone.

搜索的未来

- Levi - 月光博客
笔者认为,未来的搜索有两个趋势:个性化,社会化. (注:本文给出的很多链接需要特殊方式才可以访问,请自行解决).   从google诞生的那一天起,google的搜索本质上并没有什么变化,依旧是:一个大大的搜索框,你敲进去几个词,google给出一些相关的网页. 不同的人对于同一个关键词所期待的搜索结果可能有很大差别啊.

《飞出个未来》

- Yongwei - 【枪·东东枪的枪】
几年前我进入广告行业做苦力,入行没多久就听说了一个新词,叫“飞机稿”,指的是那些并非源于客户需求而是创意人员自己主动创作出来的广告作品. 起初我以为这“飞机”二字指的是这些稿子经常要远赴重洋参加各类比赛,后来才知道其实是“打飞机”的意思. 有些同行很热衷于产出这类飞机稿,并指望着能拿些国际奖项回来抬升身价,这计划还被旁人借用美国动画片的名字嘲笑为“飞出个未来”.