打印

你是程序员这块料吗?

[复制链接]
4956|32
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
maychang|  楼主 | 2014-5-30 14:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在果壳网上看到这样一篇**,觉得有点意思,贴过来大家参考。
http://www.guokr.com/post/591944/


很多人推荐了这么一篇学术论文,题为“The Camel Has Two Humps”(骆驼有双峰)。它提出了下面的方法,能在计算机科学专业的学生接触到一个程序或者一门编程语言之前,判断出他们当中哪些人适合学习编程,哪些人不适合。

所有教授编程的老师都发现,他们的教学结果呈现出“双峰”现象。似乎他们的学生中有两类人:一类是会编程的;另一类是不会编程的。这两类人有着各自独立的贝尔曲线。对于编程的教学,基本上所有的研究都集中在“教”上:变换语言,变换应用领域,使用一个IDE,引入激励机制,等等。但这些统统都不奏效,“双峰”现象依然存在。于是,我们发明了一种测试,通过它可以在授课之前把这两类人区别开来。我们挑选“双峰”中会编程的那些人。可能你现在还无法相信,但是在你看完之后,一定会相信的。我们还没完全搞明白为什么这种方法奏效,但我们有一些不错的理论支持。
我不曾想到,一个擅长编程的人和不擅长的人在这么早就可以被分辨出来。Dan Bricklin曾经在他的**中提到过这个话题,**的名字是“Why Johnny Can’t Program”(为什么Johnny不会编程)。但是,对于那些教授计算机科学的人来说,这些显然已不是秘密。
自20世纪50年代电子计算机被发明以来,尽管世界已经发生了翻天覆地的变化,但有些东西却始终没变。特别是,大部分人学不会编程:每所大学的计算机学院都有30%~60%的新生在第一门编程课程上不及格。有经验的教师很清楚这种情况,但都已经心力憔悴了。一些聪明的年轻教师坚信过去的做法一定有问题,于是苦苦地探索着真相。自20世纪60年代这个课题被提出以来,已经差不多有两代人为此付出了努力。
你也许觉得,他们提出的用于鉴定编程天赋的测试会很复杂。其实不然。请看下面,第一道题是这样的:

请看清下面的语句,并在正确答案的旁边做上标记
int a = 10,
int b = 20,
a = b;
a和b现在的值应该是:
[ ] a = 20  b = 0
[ ] a = 20  b = 20
[ ] a = 0    b = 10
[ ] a = 10  b = 10
[ ] a = 30  b = 20
[ ] a = 30  b = 0
[ ] a = 10  b = 30
[ ] a = 0    b = 30
[ ] a = 10  b = 20
[ ] a = 20  b = 10

可以想见,专业程序员对此会不屑一顾。但是,别忘了,这个测试是给那些生平从未接触过代码的学生设计的。另外的12道题与上面这道题的风格一样。
这个试卷的作者们认为,学习计算机科学的最主要障碍是:
1.赋值和序列
2.递归、迭代
3.并发
按照这样的顺序,我们首先测试初学者最先会遇到的障碍:赋值。测试的结果把学生清楚地分成3组:
· 44%的学生对赋值的原理形成了一个稳定的思维模型(即使是错的)。
· 39%的学生一头雾水,对于赋值的原理仍然琢磨不透。
· 8%的学生交了白卷。
这个测试做了两次。第一次是在学习之前,第二次是在开课三周之后。比较两次测试的结果,最让人吃惊的是:这3组学生的格局几乎没有发生任何变化。要么你在第一次碰到赋值(编程中的第一个障碍)的时候就在心中立即形成了一个模型,要么你永远学不会。
作者们发现,学习编程能否成功与是否形成了稳定的思维模型有着莫大的关联。

很显然,Dehnahdi的测试并不能完美区分出会编程和不会编程的人。然而,如果存在这样一个招生测试,让那些有稳定分数的人才会被录取,这样的话,两极分化的现象就会发生改变。在所有的61人中有32人(52%)不及格;而如果只在那个形成了稳定思维模型的组里计算,27人中只有6人(22%)不及格。我们可以自信满满地说,我们有一个能在上课前就可以预测哪些学生会成功的测试方法,并且这种方法具有很高的准确性。据我们所知,这是到目前为止第一个能够预测成功的测试方法。

我强烈建议大家把这篇**完整地读一遍。我曾经认为这会是一篇晦涩难懂的学院派论文,其实不然,它更像是一篇博文,充满了有趣的观点,就像下面这两段:
我们确实经历了一段时间,才有勇气相信我们自己的结论。尽管意识到目前的数据还不充分,我们的结论还只能算是一种推测,但在我们看来,第一次测试就区分出来了3个组,其中的决定因素是他们对无意义事物的态度。
形式逻辑证明,进而用一种叫编程语言的形式系统来表达,通过执行某种特别的计算得出结果,这其实是完全没有意义的。为了编写一个计算机程序,你必须做出妥协,赋予程序某种意义。但不管你想要这个程序做什么,计算机都会按照这些没有意义的规则运行,并且得到一些没有意义的结果。在测试中,那些有稳定思维模型的人都体现出了在这方面的先天接受能力,他们都有能力看见规则背后的数学计算问题,并且无论怎样都能够遵循那些规则。另一方面,那些没有稳定思维模型的人总是找不到头绪。而那些交白卷的人知道这是一件无意义的事,所以他们拒绝去做。
每个人都应该知道怎样使用计算机,但并不是每个人都需要成为一名程序员。然而,对于相当多的计算机科学的学生来说,似乎怎么也教不会他们编程,这还是有些令人担忧的。很显然,不是所有人都像我们这样痴迷于没有意义的规则和结论。但对我而言,有何不可呢?

本文摘自《程序员的修炼》

评分
参与人数 1威望 +1 收起 理由
吴鉴鹰 + 1 大侠给了初学者很多帮助,佩服.

相关帖子

沙发
maychang|  楼主 | 2014-5-30 14:07 | 只看该作者
编程是这样,那么学习其它技能呢?学物理、学数学、学音乐、学跳舞、学绘画……

使用特权

评论回复
板凳
teddeng| | 2014-5-30 14:50 | 只看该作者
本来就是吧,比如非要我去学美术,我就很可能要去跳楼。另外给个原文, The camel has two humps.pdf (293.19 KB)

使用特权

评论回复
地板
叶伤| | 2014-5-30 15:37 | 只看该作者
支持一下

使用特权

评论回复
5
LittleSnowBall| | 2014-5-30 23:54 | 只看该作者
表示楼主复制黏贴都错了
做技术个人觉得最主要的素质:专研

使用特权

评论回复
6
menfiss| | 2014-5-31 09:11 | 只看该作者
好**

使用特权

评论回复
7
通宵敲代码| | 2014-5-31 10:47 | 只看该作者
真的可以这么判断吗!
老祖宗“勤能补拙”古训岂不是没用了!

使用特权

评论回复
8
ZG11211| | 2014-5-31 11:29 | 只看该作者
两个逗号,证明此题编译会出错。;P

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
LittleSnowBall + 3 恩,就是就是
9
不亦心| | 2014-5-31 11:53 | 只看该作者
有些时候确实需要点悟性。。。
我就不适合搞电子,木"天赋"。。。悲催

使用特权

评论回复
10
maychang|  楼主 | 2014-5-31 12:13 | 只看该作者
小时候,先慈要我弹钢琴,在我后面拿着**毛掸子看着我弹,一边流眼泪一边弹。弹完了拜尔弹察尔尼。
到现在,我还是不会弹。
看来确实没有那个“悟性”。

使用特权

评论回复
11
lxyppc| | 2014-5-31 14:00 | 只看该作者
确实如此,因材施教

我以前认识一个人 没学过乐器
但是听到一段旋律,就能用随便一个乐器生硬的复现出来

使用特权

评论回复
12
zhimagod| | 2014-5-31 14:20 | 只看该作者
中学时我的数学在及格线上挣扎,很简单的运算经常被搞错,但是理化生少见不满分的,哪怕涉及到大量的数**算也很少出错……此诡异现象老师也无法解释

使用特权

评论回复
13
chunyang| | 2014-5-31 23:49 | 只看该作者
任何事情都如此,跟大脑的结构和训练有关。

使用特权

评论回复
14
dong_abc| | 2014-6-1 02:42 | 只看该作者
不是这块料,还是做了好几年!

使用特权

评论回复
15
xmar| | 2014-6-2 11:52 | 只看该作者
与人的先天禀赋有关,但主要还是后天努力与环境关系更大。

使用特权

评论回复
16
zyj9490| | 2014-6-2 13:03 | 只看该作者
xmar 发表于 2014-6-2 11:52
与人的先天禀赋有关,但主要还是后天努力与环境关系更大。

跟第八意识有关,唯识论,大家可以参考,佛学的一部分,为何人与人的天分差异这么大,如我们搞技术的,被科学污染得太多了。

使用特权

评论回复
17
xmar| | 2014-6-2 13:28 | 只看该作者
zyj9490 发表于 2014-6-2 13:03
跟第八意识有关,唯识论,大家可以参考,佛学的一部分,为何人与人的天分差异这么大,如我们搞技术的,被 ...

还不知这个观点。很想知道唯识论细节。

使用特权

评论回复
18
zyj9490| | 2014-6-2 14:10 | 只看该作者
在唯识论中,第八识保存前生的因素,从而产生业力,被带到来生,这也解了因果关糸。

使用特权

评论回复
19
xukun977| | 2014-6-2 14:14 | 只看该作者

看到是"果壳网"上的,由细读变为浏览了。
此网全力打造新人--某卫视的最强大脑,号称"科学男神"魏。关于此人,从某期搞笑节目中可见一斑:
运动员教教李XX,歌星周XX,陶XX等,给某位选手都是打高分。但魏打低分。而选手最终打分,几乎完全由魏给的分而定了,其他嘉宾打分影响几乎为零,于是嘉宾不满,李XX牵头盘问魏,为什么给低分,理由是什么?语气有点重。魏支支吾吾说不出来,口口声声说自己什么都是科学的,李XX再次逼问打分依据,魏脸憋红了,从牙缝里蹦出这句:


因为我是北京大学体育学院毕业的!!!


使用特权

评论回复
20
lgdjade| | 2014-6-2 14:23 | 只看该作者
:)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

主题

37703

帖子

839

粉丝