黑马程序员技术交流社区

标题: 不要学习代码,要学会思考 [打印本页]

作者: 黑妞~    时间: 2014-5-26 10:00
标题: 不要学习代码,要学会思考
这是一个人人都在学习编程的时代:Code.org请了比尔·盖茨,马克·扎克伯格和克里斯·波什等这些名人,来告诉你,每个人都可以编程;CoderDojo’s在各个国家悄然兴起;在英国,编程已经是各个年级学生的正式课程。


我认为这里有个误区。别误会我——如果每个人都会一些编程知识,这个世界当然会变得更好——但是学会写代码不应该是我们的目标。计算机和程序只是一个工具,是一种达到某种目的的方法。
真正的目标应该是学会思考的方式。换句话说,我们应该尝试教授计算机科学,而不是教着写代码。在本文中,我将介绍两者的不同,以及为什么后者是当下学编程浪潮成功的关键。
如果你喜欢视频的解释,我强烈推荐Simon Peyton Jones的TED,Teaching Creative Computer Science。这和本文的论点不谋而合。
看完之后,依然想看文字的版本么?好的。让我们先从一个关键的问题开始吧:为什么你要学习编程或计算机科学呢?
回答这个问题之前,我们先卖个关子。
欢迎来到真实的世界
现在,你可能正在用Chrome或者Firefox浏览器在看这篇文章,运行在Windows或者OS X操作系统上,用的一台笔记本或者台式机。我猜你今天还花了一些时间查看电子邮件,刷Facebook,或者在Youtobe上看视频了。如今,人们的生活越来越依赖于计算机:医疗记录存放在了数据库中;简历放在LinkedIn上;使用Google或者Facebook来推销你的产品;用Amazon来买东西;在网上报税;在线管理你银行的账户;甚至还涉足了比特币。
现在,从屏幕上移开你的眼睛:在你的口袋,包包,或者旁边的桌子上,可能就有一部智能手机。它装有GPS,摄像头,触摸屏,还有成千上万的应用。如果你现在在客厅,你可能还有一台联网的LCD电视,一台DVR,DVD播放器,苹果TV,XBox,或者PlayStation。你每天看的电影,听的音乐,玩的游戏,就封装在这些设备显卡和声卡中。
软件正在占领这个世界,但这还只是个开始。不知不觉中,你就穿着各种可穿戴设备,用计算机来锁门,用机器人来运货,打扫房间。拥有你自己的电子技术,经营自己的生产厂,生活在虚拟的世界中,乘自动驾驶的汽车去旅行,甚至飞向太空。
代码无处不在
毫无疑问,以上我所描述的技术的源动力是软件。你生活的每一个方面,都被代码所包围。大量的代码会让未来变得美好。
但是,仅仅是一项技术非常普遍不能成为你在学校学习它的理由。就像我们乘坐飞机,但是考飞机驾照并不在从幼儿园到12年级的课程中。
然而,飞行的原理却是课程的一部分:
从中学毕业的时候,你就已经知道了飞机是什么,它是如何工作的,如何安全乘坐飞机。通识类课程,像物理学,数学,历史,教会你如何思考各种各样的问题,包括飞机;与之形成对比的是教会你是用工具的课程,像教你如何驾驶一种特定类型的飞机。
什么是计算机科学?
计算机科学是一门研究计算的学科:就是说,如何表述和处理信息。一下是一些你会学到的概念:
注意,上面的清单中并没有提到代码或者编程,因为它们只是实现计算的工具:它们本身并不是计算机科学。
计算机科学并不是关于计算机的科学,就像天文学不是关于望远镜的科学,生物学不是关于显微镜的,滑雪不是关于烧杯和试管。科学并不是研究工具的。——Michael Fellows和Parberry
什么是编程?
编程,或写代码,就是指示计算机来执行哪一些指令。如果你从未写过代码,也可能通过操作应用程序来和计算机交互。其实在内部,这个应用程序也是通过代码来告诉计算机显示什么,在哪里检索数据,以及对于你的点击操作做出什么回应。
所有的编程都是建立在我们上面讨论的计算机科学的原理上的。值得注意的是,同一组概念——逻辑、算法、数据、系统工程——可以用来构建任何软件,小到你现在阅读这篇文章用的这个浏览器,大到飞机上的自动驾驶软件。尽管会涉及到一些数学和架构的知识,但这却是极富创造性的活动:你将想法变成现实,一次一行代码。
将编程作为学习计算机科学的一部分有一下的好处:
综合考虑
简要重述:
混淆这两个观点,就导致了现在学习编程热潮的圈子的一些问题。Slate 发布了一篇文章,《也许并不是每一个人都需要学编程》;Atlantic写了一篇《新闻学院应该要求记者写代码吗?不》;Jeff Atwood写了《请不要学习写代码》,其中提出了一个精辟的问题:
“如果迈克尔·布隆伯格(纽约市市长,译者注)是一个专业的Java程序员,他能更好的领导一个美国的大城市么?”
当然,这个问法是错误的。这就表示这些活动的目标是学习代码,而不是学习思考的方式。如果连Jeff Atwood这样经验丰富的程序员都搞错了,那么普通人更分不清楚了。问题应该这样问:
如果通过学习解决问题的方法,训练严密的逻辑来提高自己的能力,那么迈克尔·布隆伯格(或者其他人)能工作的更好吗?
我相信,答案是显而易见的。而且随着科技的发展,答案会越来越清晰。这就是为什么,我们要把教学重点放在计算机科学上,而不是代码。
如何开始?
好消息是,你不必等Code.org来宣布你已经开始学习计算机科学了。事实上,这是最容易学习的一个主题,你只需一台电脑和一根网线。我想,现在你正在阅读本文,那么很可能你两者都有了。


立姐有话说:人人会代码的时代还很久远。在这之前我们这些职业代码人要把自己放在很高很高的位置才不至于在未来那个人人会代码的时代丢了饭碗。代码使我们的一技之长,除了代码,编程思想应该是每个程序员的基本素质。如果你现在还没有这种思想,也不要着急。不一样的人有不一样的方式,多敲代码,相信敲敲就有感觉。思想就伴随而来。


作者: ˙▎._灬乖囧猫    时间: 2014-5-26 11:28
你们发表的这些文字类的东西都做收藏啦,以便丰富一下自己,嘿嘿。。。好爱你们的呦
作者: 黑妞~    时间: 2014-5-26 11:39
˙▎._灬乖囧猫 发表于 2014-5-26 11:28
你们发表的这些文字类的东西都做收藏啦,以便丰富一下自己,嘿嘿。。。好爱你们的呦 ...

:lol谢谢你的支持哈~~
作者: ˙▎._灬乖囧猫    时间: 2014-5-26 11:51
立姐 发表于 2014-5-26 11:39
谢谢你的支持哈~~

我好想知道为什么每天只有三个黑马币可拿啊:'(
作者: 波涛    时间: 2014-5-26 14:39
嗯,说的很好,还有编程是一门技术,更加是一门艺术,不能只满足于写完代码运行结果正确就完事,时常考虑如何让代码更加简练,更加容易维护,容易扩展和复用,只有这样才可以真正得到提高。写出优雅的代码真的是一种很爽的事情。
作者: 黑妞~    时间: 2014-5-26 14:54
˙▎._灬乖囧猫 发表于 2014-5-26 11:51
我好想知道为什么每天只有三个黑马币可拿啊

发帖回帖都是有金币奖励的
作者: Candy_Java    时间: 2014-5-26 21:06
程序员朋友跟我说的最多的一件事情是,代码是其次的,思路才是最最重要的!!!
作者: 27ZJQ    时间: 2014-5-26 23:55
很喜欢这句:写出优雅的代码真的是一种很爽的事情。
作者: 为了明天    时间: 2014-5-27 08:47
果然还是思想重要啊
作者: X-Sniper²º¹    时间: 2014-5-27 08:58
顶一个!!!
作者: 一匹狼的独舞    时间: 2014-5-27 12:07
言之有理
作者: 葛生辉    时间: 2014-5-27 20:15
学习了!!!!!
作者: wqmsan    时间: 2014-5-28 07:09
赞一个!!!
作者: Rayming    时间: 2014-5-28 14:35
优秀的编程思想算是程序员更高的层次吧
作者: pengyu    时间: 2014-5-28 16:46
赞一个啊!!
作者: 王雪冬    时间: 2014-5-29 05:30
需要对自己把握..
作者: 黑马—张帅    时间: 2014-5-29 08:40
思想就像母鸡,代码就像蛋,一味追求蛋,那只会有那一个蛋,但学会掌握了思想,就好比有了母鸡,会有无数个蛋。
作者: 指尖舞者    时间: 2014-5-29 22:16
我们是人,不是“猿”……
作者: 你、都不可爱了    时间: 2014-5-30 08:38
顶一个...
作者: 随风@附雅    时间: 2014-6-4 20:05
立姐真厉害
作者: 每天进步一点点    时间: 2014-6-5 12:49
这些东西都挺好,存起来。其实搞编程无非就是算法,也就是你的思路,这才是最重要的。语言只是一种手段,这是次要的。
作者: 〇veに    时间: 2014-6-5 17:27
编程是一门艺术!!!
作者: 高哲    时间: 2014-6-6 12:24
支持一下
作者: 枫桥夜泊    时间: 2014-6-6 20:55
很好!!!受教了!!学编程,自己有编程的思想,会终身受益de
作者: XCodeRush    时间: 2014-6-6 21:05
要把自己变成会思考的代码{:3_69:}
作者: 18353666072    时间: 2014-6-7 07:37
赞一个,,
作者: 黑马—张帅    时间: 2014-6-7 13:12
涨姿势,帮顶
作者: 编程学徙    时间: 2014-6-13 14:04
假如,以作家来打比方,那,代码规则的学习,只不过是在认识文章中的一个个汉字而已。真成要成为一个合格的作家,要学的东西还有很多很多,而且,远比学汉字要重要得多!
作者: suiseo    时间: 2014-6-13 14:23
软件正在占领这个世界,但这还只是个开始。不知不觉中,你就穿着各种可穿戴设备,用计算机来锁门,用机器人来运货,打扫房间。拥有你自己的电子技术,经营自己的生产厂,生活在虚拟的世界中,乘自动驾驶的汽车去旅行,甚至飞向太空。
作者: 彬锐    时间: 2014-6-15 11:34
我觉得学会编程比会敲代码重要。
作者: 张政    时间: 2014-6-15 11:46
LZ写得好呀
作者: 蒙鹏飞    时间: 2014-6-15 23:40
写得太多了,看了一天的视频,弄点黑马币睡觉:lol
作者: eniuovn    时间: 2014-6-16 20:24
好多女娃。。:D
作者: jesssy    时间: 2014-6-18 17:17
努力中,代码是用来验证自己的思路的,多思考,故多练
作者: sports、    时间: 2014-6-25 23:19
说的太好了,计算机科学
作者: 刘孝泽    时间: 2014-6-29 11:26
厉害 思想是最重要的
作者: 张慈瑞    时间: 2014-7-9 14:36
立姐说的很对,人人会代码的时代还很久,不仅仅是技术人们掌握不了,而是我们不知道编程为了什么。
作者: 情深意重    时间: 2014-7-20 17:31
受益匪浅,如果简单地编程只是写代码就错了,看了版主说的,自己对编程的认识更加深刻了
作者: 田峻菘    时间: 2014-10-2 13:54
编程思想,思维很重要




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2