我们今天的主题要从奥巴马的一段演讲开始说起。
这段视频是奥巴马去年应邀为美国在线编程教育网站code.org举办的“编程一小时”活动做的宣传片。为了呼吁美帝人民学习编程知识,奥巴马甚至还亲自挽起袖子写了一段javascript代码,这也让他成为美国历史上第一位会写代码的总统。(虽然写得不怎么样)

在code.org 随后推出的一段《编程,学校不会交给你的课程》的广告中,包括 Bill Gates,Mark Zuckberg等各界名人也纷纷献身说法,号召编程要从娃娃抓起。
搞编程的并不只有美帝一家,大洋彼岸的英国甚至将2014年设立为"Year of Code",规定所有5-16岁的学生都必须学习编程。
那么现在问题来了,为什么会有那么多社会精英公开呼吁全民编程?编程这一技能在未来究竟意味着什么?
一个显而易见的事实是,计算机和互联网早已渗透我们生活的方方面面,并且在可预见的未来里将会与现实有着更为紧密的结合。从社交聊天,吃喝玩乐,学习提升到你在手机上打开这篇文章开始阅读,它们无所不在,而这一切都离不开计算机和编程技术的发展。计算机技术对一个国家未来的发展显然有着至关重要的作用。
但你可能会有疑惑:我只是个文科生/我不是IT行业的,编程跟我有什么关系呢?
说一说我自己的理解。大家一定都用过谷歌翻译吧?你还记得5年前,10年前的谷歌翻译是什么样子吗?有没有感觉谷歌翻译的质量正变得越来越好?(虽然跟人工翻译还有很大的差距),而这一切又是怎么发生的?
谷歌翻译质量提升的重要关键并不是语言学和语料库研究的突破,而是因为一项技术:大数据。
在大数据技术出现之前,传统的机器翻译大概遵循以下的规则:先设定好一套尽可能完善的语法规则以及两种语言的对应词库,然后根据这套规则对输入的语言进行翻译。为了完善语法规则和词库,机器翻译研究机构曾经雇佣了很多语言学和翻译专家,但研究了很久最终结果并却不理想。比如,由于机器翻译死抠语法规则,翻译"It serves him right."这句话可能会得到“它服务他正确”这样荒诞的结果。
直到大数据技术出现,机器翻译才有了新的突破。简单来说,使用大数据进行翻译时并不是按照语法规则来翻译的,而是按照数据之间的相关性和机器学习算法。比如翻译"It serves him right."这句话时谷歌并不是逐词翻译,而是将整个句子放到互联网数据库中搜索,然后统计出整个互联网上所有与这句话翻译相关的结果(比如各种中文英对照文章中可能会出现这个句子及对照翻译),而统计次数最高的译文就可以作为最终的答案参考。通过这样处理后,谷歌能够保证翻译出来的结果在互联网上最为流行,被用户接受程度最高,翻译的质量也有了很大的提升。

这就是计算机技术在翻译领域的一个成功应用。
举这个例子是为了说明,即使是纯文科的翻译领域也会不可避免地与计算机技术产生交集,其他学科更不必说。其实在欧美大学文科生学编程并不是什么新鲜事,不少文科生已经开始用Python(一种脚本语言)进行文本挖掘以及数据处理了。国内目前也有大学开设了计算机和语言学交叉课程,比如有个课程叫“计算语言学”,基本上就是采用编程和数学的方式来研究英语,有兴趣的同学可以了解下。
因此不管是从功利还是从兴趣爱好的角度来讲,编程在现在及未来都将是一门非常重要的技能。

懂编程能够带给你很多实际收益。就拿英语学习来说,如果你懂编程的话可以写爬虫去各大词典网站抓取自己感兴趣的单词,制作生词本,可以统计高频词,还可以量身抓取外媒上第一手的听力和阅读材料。有意思的应用还有很多,就看你的想象力和创造力了。
当我们在学编程时我们在学些什么?
每个人都应该懂点编程,但这并不意味着每个人都要去当码农(这也并不现实)。你可以不会编程,但至少要懂最基础的编程原理。就如乔布斯在1995年的访谈中提到的那样“学习编程教你一种新的思考方式”。



学编程最大的好处其实是可以对人的思维方式进行训练。它是一个对思维完整性和逻辑性进行训练的过程,而在这个过程中我们可以培养一种新的看待问题和处理问题的方式。

举个例子,俄罗斯方块这款小游戏你一定玩过吧?假如现在让你写一个俄罗斯方块游戏,你会怎么入手?

从编程思维的角度来看,我们需要将问题分解,将一个大问题拆解为一个个小问题,然后逐个完成。比如对于上面的游戏,我们大致可以将其分解为三个小问题:
1.游戏界面(速度和积分显示怎么处理?主游戏界面怎样显示?)
2.俄罗斯方块(一共有多少种方块?每种方块用数学坐标应该怎样表示?)
3.游戏逻辑(方块的下落,左右移动,上下翻转,掉落消除应该怎么处理?对应的数学坐标应该怎样计算)
编写这个游戏的过程充分应用了分类讨论,函数思维,问题抽象等多种思维方法。写完这个游戏之后你会发现原来一个看起来很简单的游戏竟然隐藏着如此多的细节,背后有那么多的复杂的逻辑需要处理。每一个软件和游戏都是思维的艺术品。
在这个过程中你也会不断发现自己思维存在的缺陷和问题,并着手去进行完善。将这种编程逻辑应用到日常生活中,应用到读书写作中,你会有新的收获。
比如现在要写一篇议论文,但感到无从下手,我们就可以按照编程的方式将问题分解——是想不到论点,还是没有支持的论据?论点不足应该怎么办,论据不足又该怎么办。你手头有哪些工具可以利用?你期待写成什么样子?明确问题之后再将它们逐个击破,问题也就得到了解决。
编程是不是很难学?
编程的确有一定的门槛,但并没有想象中的那么难学——你只需要具有一定的数学基础和逻辑思维能力,还有投入时间去练习。要知道,欧美八九岁的小学生都能自己开发游戏了,他们能做到的,你同样也可以。
而且比起十几年前的程序员,现在学习编程实在要幸福很多——互联网上有大量的课程和资源可供学习,有Google,有Github,有Stackoverflow,只要你肯花时间去学,并没有什么能难倒你的事情。
初学者可以选择从Python或者PHP(世界上最好的编程语言)开始,它们都足够简单,就算你毫无基础也可以在两三个月内利用它们做出一些有意思的小东西出来。
学编程就像学习其他任何技能一样,都需要投入大量时间去练习,不断去犯错改正学习,最终日臻完美。最关键的,是要对自己有信心,就像奥巴马所说的 "Don't let anyone tell you 'you can't.'"
为什么要学英语?
前几天朋友圈里有两张图很火,说的是马云和马化腾跟随习大大出访期间,在中美互联网论坛上的两个镜头:
图片的主题就叫《论学好英语的重要性》——相比于英语老师出身的马云,腾讯的小马哥英语口语显然要稍逊一筹,错过了跟美国的贝索斯和库克谈笑风生的好机会。
马云的英语的确不错,他大学读的是外语系,毕业后又当了多年的英语老师,而且还经常给在杭州的外国游客当翻译——正是这段经历为其日后的成功埋下了伏笔。马云在翻译过程中认识了一对来自西雅图的夫妇,并在他们家做客时第一次接触到了互联网,于是有了后面阿里巴巴的故事。
为什么要学英语?这个问题的答案其实跟为什么要学编程差不多,因为它们都能带给你一个不一样的视角,让你获得更多的信息,而信息可能就意味着机遇。
马云的例子也许太遥远,举个近一点的,13和14年曾经有个很火的名词叫“比特币”,而这一概念最早也是从国外发源的,当然是以英文信息呈现的。国内最早关注并投资比特币的人后来都收益颇丰,这就是信息的力量。
当今世界上最先进的知识和文化绝大多数都是以英文为载体的,如果不学英文,这些你统统都接触不到,即使接触到了,可能也是过时的或者被加工过的信息。
身处于互联网时代,你可能对此有更深的体会:最新的技术书籍和文档是英文的,苹果发布会是英文的,最新的英美剧是英文的,维基百科是英文的,facebook,Quora和twitter 也都是英文的...如果不会英语,天知道你会错过多少好东西。
这就是为什么那么多人都在努力学英语的原因,希望能让自己与更大的世界对话连接。这些人中,有怀揣梦想的普通人,也有身处顶层的行业精英,比如联想的CEO杨元庆。
当联想在2005年收购IBM的个人电脑部门时,媒体曾担忧不说英语的杨元庆怎样去管理美国人团队。为了学好英语,他做出了一个对企业CEO而言时间成本非常高的决定:举家搬到北卡罗来纳州,聘请英文家教,严格要求自己每天学英文一小时,并不厌其烦地收看CNN电视节目。从不熟悉英语到能用英文自信流利地演讲,他用几年的时间给出了答案:(看完之后你会发现,比你成功、比你有钱、比你聪明的人,往往都比你还努力在学英语,你有什么理由找借口?)

这也是一个非常有说服力的例子,学英语其实就是一个坚持和积累的过程。语言学习的过程很公平,它并不需要太多的天赋,你付出了多少往往就能得到收获多少。在演讲台上用英文谈笑风生的背后是多少日夜的坚持与积累,真正努力过的人相信都会有很深的体会。在这个过程中,你收获的并不仅仅是一门语言技能,还有一个强大的内心,一个更好的自己。
为什么要学英语?或许答案就如蔡康永说的“15岁觉得游泳难,放弃游泳,到18岁遇到一个你喜欢的人约你去游泳,你只好说“我不会耶”。18岁觉得英文难,放弃英文,28岁出现一个很棒但要会英文的工作,你只好说“我不会耶”。人生前期越嫌麻烦,越懒得学,后来就越可能错过让你动心的人和事,错过新风景。”
题图来源: Google
音乐: Whistle, 来自Flo Rida
继续阅读
阅读原文