不要学习代码,要学会思考《IT蓝豹》

这是一个人人都在学习编程的时代:Code.org请了比尔·盖茨,马克·扎克伯格和克里斯·波什等这些名人,来告诉你,每个人都可以编程;CoderDojo’s在各个国家悄然兴起;在英国,编

程已经是各个年级学生的正式课程。

我认为这里有个误区。别误会我——如果每个人都会一些编程知识,这个世界当然会变得更好——但是学会写代码不应该是我们的目标。计算机和程序只是一个工具,是一种达到某种目的的

方法。

真正的目标应该是学会思考的方式。换句话说,我们应该尝试教授计算机科学,而不是教着写代码。在本文中,我将介绍两者的不同,以及为什么后者是当下学编程浪潮成功的关键。

如果你喜欢视频的解释,我强烈推荐Simon Peyton Jones的TED,Teaching Creative Computer Science。这和本文的观点不谋而合。

看完之后,依然想看文字的版本么?好的。让我们先从一个关键的问题开始吧:为什么你要学习编程或计算机科学呢?

回答这个问题之前,我们先卖个关子。
欢迎来到真实的世界

现在,你可能正在用Chrome或者Firefox浏览器在看这篇文章,运行在Windows或者OS X操作系统上,用的一台笔记本或者台式机。我猜你今天还花了一些时间查看电子邮件,刷Facebook,或

者在Youtube上看视频了。如今,人们的生活越来越依赖于计算机:医疗记录存放在了数据库中;简历放在LinkedIn上;使用Google或者Facebook来推销你的产品;用Amazon来买东西;在网上

报税;在线管理你银行的账户;甚至还涉足了比特币。

现在,从屏幕上移开你的眼睛:在你的口袋,包包,或者旁边的桌子上,可能就有一部智能手机。它装有GPS,摄像头,触摸屏,还有成千上万的应用。如果你现在在客厅,你可能还有一台联

网的LCD电视,一台DVR,DVD播放器,苹果TV,XBox,或者PlayStation。你每天看的电影,听的音乐,玩的游戏,就封装在这些设备显卡和声卡中。

软件正在占领这个世界,但这还只是个开始。不知不觉中,你就穿着各种可穿戴设备,用计算机来锁门,用机器人来运货,打扫房间。拥有你自己的电子技术,经营自己的生产厂,生活在虚

拟的世界中,乘自动驾驶的汽车去旅行,甚至飞向太空。
代码无处不在

毫无疑问,以上我所描述的技术的源动力是软件。你生活的每一个方面,都被代码所包围。大量的代码会让未来变得美好。

但是,仅仅是一项技术非常普遍不能成为你在学校学习它的理由。就像我们乘坐飞机,但是考飞机驾照并不在从幼儿园到12年级的课程中。

然而,飞行的原理却是课程的一部分:

物理学和数学让你明白重力、弹性元件、压力、速度、摩擦和攀升等方面的知识。
    生物学让你明白人体在高海拔、低氧、极端寒冷等情况下的反应。
    历史解释了飞机的发明,进化,以及其在旅行、商业和战争中扮演的角色。

从中学毕业的时候,你就已经知道了飞机是什么,它是如何工作的,如何安全乘坐飞机。通识类课程,像物理学,数学,历史,教会你如何思考各种各样的问题,包括飞机;与之形成对比的

是教会你是用工具的课程,像教你如何驾驶一种特定类型的飞机。
什么是计算机科学?

计算机科学是一门研究计算的学科:就是说,如何表述和处理信息。以下是一些你会学到的概念:

解决问题:你将会学习算法——就是通用的一些方法,像是分治算法、递归、遗传算法、贪心算法——帮助你建模,分解,解决各种各样的问题。
    逻辑:你将开始使用精密又正式的方法思考问题,像是抽象,逻辑代数,数论和集合论,来用严密的逻辑解决问题。
    数据:你将会接触到信息论,并开始思考什么是信息?如何表述?如何对真实的世界建模?
    系统:如何设计与构建复杂的系统,来实现一系列的需求?系统工程是一个几乎在各个领域都涉及到的重要的主题。
    思考:了解人类大脑最好的方式,是试着去复制它。像人工智能、机器学习、计算机视觉、自然语言处理这些话题,不仅仅在计算机科学领域,同时在数学,生物,物理,哲学等方面都

是最前沿的科学。

注意,上面的清单中并没有提到代码或者编程,因为它们只是实现计算的工具:它们本身并不是计算机科学。

计算机科学并不是关于计算机的科学,就像天文学不是关于望远镜的科学,生物学不是关于显微镜的,滑雪不是关于烧杯和试管。科学并不是研究工具的。——Michael Fellows和Parberry
什么是编程?

编程,或写代码,就是指示计算机来执行哪一些指令。如果你从未写过代码,也可能通过操作应用程序来和计算机交互。其实在内部,这个应用程序也是通过代码来告诉计算机显示什么,在

哪里检索数据,以及对于你的点击操作做出什么回应。

所有的编程都是建立在我们上面讨论的计算机科学的原理上的。值得注意的是,同一组概念——逻辑、算法、数据、系统工程——可以用来构建任何软件,小到你现在阅读这篇文章用的这个

浏览器,大到飞机上的自动驾驶软件。尽管会涉及到一些数学和架构的知识,但这却是极富创造性的活动:你将想法变成现实,一次一行代码。

将编程作为学习计算机科学的一部分有以下的好处:

DIY:如果你会编程了,你就可以制作一些东西。可以从最简单的开始:做一个能给旅游照片批量重命名的脚本,或者写一个Excel公式帮自己计算税务;然后,开始发烧级别的:给你自

己的文件系统写一个浏览器;给你们公司做一个app;或者写一个能够和朋友一起玩的游戏。
    解决问题:一旦你亲手做了几个app,弄清楚其他的就简单多了。一旦你不再害怕计算机——未知的领域——你就会成为技术达人。随着技术已经关系到我们生活的每个部分,掌握它们就

会变得和学会阅读一样重要。
    事业:我们学习计算机科学的目标不是成为职业的程序员。我们都学了数学,物理,化学,但是我们并没有都成为这方面的专家。然而,如果你对这方面有激情的话,软件工程师也是一

份评价高,薪资高,进步快的职业。

综合考虑

简要重述:

计算机科学是一种新的思考方式。在这个技术时代,其中的概念对每一个人都很有帮助。
    编程是学习计算机科学重要的一部分,以实现这些新的思考方式。然而,编程本身并不是目标。

混淆这两个观点,就导致了现在学习编程热潮的圈子的一些问题。Slate 发布了一篇文章,《也许并不是每一个人都需要学编程》;Atlantic写了一篇《新闻学院应该要求记者写代码吗?不

》;Jeff Atwood写了《请不要学习写代码》,其中提出了一个精辟的问题:

“如果迈克尔·布隆伯格(纽约市市长,译者注)是一个专业的Java程序员,他能更好的领导一个美国的大城市么?”

当然,这个问法是错误的。这就表示这些活动的目标是学习代码,而不是学习思考的方式。如果连Jeff Atwood这样经验丰富的程序员都搞错了,那么普通人更分不清楚了。问题应该这样问:

如果通过学习解决问题的方法,训练严密的逻辑来提高自己的能力,那么迈克尔·布隆伯格(或者其他人)能工作的更好吗?

我相信,答案是显而易见的。而且随着科技的发展,答案会越来越清晰。这就是为什么,我们要把教学重点放在计算机科学上,而不是代码。
如何开始?

好消息是,你不必等Code.org来宣布你已经开始学习计算机科学了。事实上,这是最容易学习的一个主题,你只需一台电脑和一根网线。我想,现在你正在阅读本文,那么很可能你两者都有

了。

文章来源:IT蓝豹“http://www.itlanbao.com/preview.aspx”

时间: 2024-08-04 20:52:13

不要学习代码,要学会思考《IT蓝豹》的相关文章

不要学习代码,要学会思考(转)

英文原文:Don't learn to code, learn to think 译/赖信涛 这是一个人人都在学习编程的时代:Code.org请了比尔·盖茨,马克·扎克伯格和克里斯·波什等这些名人,来告诉你,每个人都可以编程:CoderDojo’s在各个国家悄然兴起:在英国,编程已经是各个年级学生的正式课程. 我认为这里有个误区.别误会我——如果每个人都会一些编程知识,这个世界当然会变得更好——但是学会写代码不应该是我们的目标.计算机和程序只是一个工具,是一种达到某种目的的方法. 真正的目标应该

不仅学习代码,也要学会思考

这是一个人人都在学习编程的时代: [合肥开源IT教育][开源培训][php培训][开源教育][开源IT教育培训][合肥php培训]Code.org请了比尔·盖茨,马克·扎克伯格和克里斯·波什等这些名人,来告诉你,每个人都可以编程:CoderDojo’s在各个国家悄然兴起:在英国,编程已经是各个年级学生的正式课程.我认为这里有个误区.别误会我——如果每个人都会一些编程知识,这个世界当然会变得更好——但是学会写代码不应该是我们的目标.计算机和程序只是一个工具,是一种达到某种目的的方法.真正的目标应该

不要只为学习代码,要学会思考

这是一个人人都在学习编程的时代:Code.org请了比尔·盖茨,马克·扎克伯格和克里斯·波什等这些名人,来告诉你,每个人都可以编程:CoderDojo's在各个国家悄然兴起:在英国,编程已经是各个年级学生的正式课程. 我认为这里有个误区.别误会我--如果每个人都会一些编程知识,这个世界当然会变得更好--但是学会写代码不应该是我们的目标.计算机和程序只是一个工具,是一种达到某种目的的方法. 真正的目标应该是学会思考的方式.换句话说,我们应该尝试教授计算机科学,而不是教着写代码.在本文中,我将介绍两

转:学习为了什么?我一直说学习是为了学会更好的思考,其实更通俗的讲学习是为了避免犯大错误

㊣华哥日记㊣ 3.22 学习为了什么?我一直说学习是为了学会更好的思考,其实更通俗的讲学习是为了避免犯大错误,兄弟姐妹们,你们知道一个大错误可以让我们浪费几年甚至十几年吗,人生承受不住大错误,可我们大多数人懒于思考,每次在深圳都会听到各种悲剧的故事,张三和王二十年前合伙做生意赚了500万,平分分赃,张三在龙岗买了一块地,王二回老家盖了个房子,现在张三亿万家财,王二在深圳还在租房!深圳之行见了很多米粉,生意上质一样的进步,可是他们中去年选择置业的明显更幸福,没置业的不是没能力,真的,他们去年缺乏一

学习代码,需要勤学多思

互联网时代已然来临,对于编程的学习则显得尤为重要.可能你不会相信,在发展迅速的英国,编程已经是各个年级学习的正式课程. 虽说对于互联网来说编程是很重要的一部分,如果每个人都会一些编程知识,这个世界当然会变得更好--但是学会写代码不应该是我们的目标.计算机和程序只是一个工具,是一种达到某种目的的方法. 教学真正的目标应该是学会思考的方式.教着写代码是最基础的环节,教授计算机科学才是真正的重中之重.写代码比以前更容易这倒是真的.因为现在有大量的资源可以用,不过我认为,学计算机科学或者变成一名程序员并

职场困惑——还该不该学习代码?

最近发现,线上教育是相当的火.很多的线下培训机构都可始有步骤的向线上来转移.而且在这个一切皆可复制的年代,可以将培训费无限的降低.而在这种情况下,曾经做为培训讲师的自己,开始有了困惑:已经快30了,到底还该不该学习代码? 学习R已经有了一段时间,相关代码的能力基本已经成形.去年在班里的一次小组比赛中,京东的同学说我的R语言能力可以找相关的工作了,但可能是自卑吧!一直也就没有找相关的工作.今年开始想往数据挖掘及可视化方向转型,其间也参加了IBM的数据摇滚节,期间也拿了奖.就深刻的感觉到,代码的要求

我自己的一个令人警醒的学习代码的故事

-- 一个正常理智的人是如何抓狂的 我本来是个穿正装坐办公室的人.但当我有了个模糊的创业灵感的时候,我决定自己学习编程. 我听说过一个家伙吹牛说使用一门叫做Ruby的语言是如何方便快捷令自己的工作流程自动化的.我想,那就学Ruby吧.于是我回到家开始google.15秒钟过后,我开始研究Ruby的教程了. 一周之后,我第一次参加黑客聚会.每个人都在讨论向Scala,Clojure和Go这样的编程语言.有很多需要学习的东西.我借了三本O'relly出版的专业书籍,每本读了50页. 我的一个朋友告诉

学会思考 善于思考

思考并非难事,却止于惰性,在此鼓励自己学会思考.善于思考.乐于思考.韦玉smile,加油! 注册这个平台冥冥之中还要感谢一位博友,缘于偶然查找资料时,发现他的随笔,不讲究却很实用,真实地记录着他的学习和思考.有种冲动告诉我,为自己创造一个这样的平台吧,对工作生活有什么想法就写下来,过些日子自己能看懂,过几年还知道自己曾经想过,如此而已,就挺好!

程序员都应学习代码编译器知识

程序员都应学习代码编译器知识   所有优秀的计算机科学学院都提供了编译器课程,但是相对比较少的学校把它作为本科课程的必修部分.这篇文章回答了这个问题:为什么需要学习编译器知识?即使你从没打算过编写编译器. 我写这篇文章的其中一个原因是,尽管我在读本科时很喜欢编译器课程,但是我几乎看不到它的实际作用.大多数资料看起来要么简单易懂,要么很深奥(事实上,我找到的大部分编译器资料都是很枯燥的.)无论怎样,我用了几年时间总结了为什么这类课程会如此有用的实际原因.原因如下. 分析器和解析器无处不在 严谨的p