• 编程的未来
    时间:2012-10-19   作者:四火的唠叨   出处:raychase.net

    最近在看一本书,加来道雄(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就是这样的东西,它是为手机端准备的编程软件,你可以看看这样的宣传视频:

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

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

    编程范型的进化

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

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

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

    以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年以后,编程会是什么样子,程序员又会是什么样子,我期待你的答案。

    网友留言/评论

    我要留言/评论

    相关文章

    创业不是纸上谈兵,把你的商业计划扔进垃圾桶吧:William Hsu,洛杉矶创业公司加速器MuckerLab的联合发起人,曾在AT&T和 eBay担任高层管理职位。他说,创业就得是非理性的人干的事,没有什么是可以计划好的,计划永远赶不上变化。“如果你还在花时间精益求精地做商业计划或者规划盈利模式,那么我劝你先把那些放到一边。”
    9个让用户烦躁的应用程序特征:无可置否,应用程序让我们的生活更加便捷,它能简化我们的日常流程、定制购物清单,让同事间的协同合作更加方便。但在带来便捷的同时,却没有太多程序照顾用户反馈这些应用程序带来的不良影响,即便只是很小的细节。希望本文的列举能让应用开发者更好的注意改进这些缺陷,把它们列入更新的范围。
    创业,活下去是关键:现在创业,门槛越来越低了。自己有什么骨灰级的爱好,做个产品出来;做技术的,可以做些服务或者应用出来;做产品的,平时多看业界产品,多看Techcruch(著名科技博客),有自己的思路了,复制一个出来;做运营的,有什么线下资源,开个小店或者做个流量入口。门槛低是互联网的特点,但是,进入容易也标志着容易死掉。
    关于中国手机游戏市场的4大现实趋势:众所周知,中国游戏市场规模庞大(甚至远超日本)!但你对中国市场的游戏状况真正了解多少呢?它如何区别于美国?你能在中国赚钱吗?谁会是该地区的赢家?(暗示:不是苹果!)
    安卓比苹果好的十个方面:iphone5大幅升级的参数可能吸引了大家,但它的创新并不如近期发布的安卓手机。虽然是大屏,支持4G LTE,处理器也更快,但这些功能安卓手机早已具备,何况苹果晚了一年。事实上,即使算上iphone5升级后的性能,现在的安卓手机还有很多超过它的关键特性。
    办公桌前不要做的四件事:我们需要把我们的办公桌当成是一个工作台。但在现实中,我们把所有的事情都在办公桌前完成,其中有很多并不属于工作(或在办公桌前不能产生最好的工作效率)。
    如何成为一名合格的管理者?:职业通路是狭窄的,“金字塔”结构很好地描绘了每个人在职场将要走过的路。在职位与薪酬待遇紧密挂钩的当今职场,芸芸技术专家总有一天会 面对这个华丽而痛苦的蜕变。能将技术和管理两者有效融会贯通的人才是真正的人才,才是优秀企业激烈争夺的职场精英。本文总结了我多年工作的经验和体会。
    融资时VC常提的三个问题:与VC见面进行融资谈判的时间一般不会超过一两个小时。一方面投资人们也很忙,自己的行程也很满,容不得在你一个人身上花太多的时间;另一方面对于有经验的VC来说这一两个钟头对于让他们了解自己所需的情况已经绰绰有余。随着在投行工作经历阅历的积攒,接触创业者融资也变得熟稔起来,于是乎直接影响到融资会议的行程标准化。以下就是投行NextView联合创始人David Beisel坦言自己几乎每次接受融资都会问到的问题。这三个问题既可以提升会议档次加速会议进程,同时也可以使会议性质马上有别于普通的VC社交活动。
    如何获得你的前100万个用户?:到达第一个“百万用户”,社交平台Twitter用了24个月,图片视觉分享网站Pinterest用了20个月,地理签到应用Foursquare用了13个月,社交媒体Facebook用了10个月,网络文件共享工具Dropbox用了7个月,移动图片分享应用Instagram用了2个半月,而Path 2.0仅用了2周就达到了100万次的下载量。
    创业者的10大谎言:我上周的一贴“风险投资的10大谎言”着实惹恼了风险投资家们。这周的开篇干脆我就把恶人做到底,来披露一下“创业者的 10 大谎言”。这一篇的难写之处在于把创业者的谎言限制在 10 条以内。