首页 > 编程知识 正文

程序员与普通人区别,程序员就是写编程的吗

时间:2023-05-04 11:34:31 阅读:140632 作者:3679

很多人推荐了这样的学术论文。 “The Camel Has Two Humps”(骆驼有双峰)。 提出了计算机科学专业的学生在接触程序和编程语言之前,判断他们中谁适合学习编程,谁不适合的方法。

所有教编程的老师都发现他们的教学结果呈现“双峰”现象。 他们的学生好像有两种人。 一种是会编程的人。 另一个是不能编程。 这两种人各自有独立的钟形曲线。 关于编程教学,基本上所有的研究都集中在“教”上。 改变语言、改变应用领域、使用一个IDE、引入激励等。 然而,这一切都不顺利,“双峰”现象依然存在。 因此,我们在上课前发明了一种可以区分这两种人的测试。 我们在“双峰”中选择会编程的人。 你现在可能还不相信,但读了之后,一定会相信。 我们还不完全理解这种方法奏效的原因,但我们有一些很好的理论支持。

我没想到擅长编程的人和不擅长编程的人能这么快分辨出来。 Dan Bricklin在他的文章中提到过这个话题。 文章的名字叫“whyjohnnycan’t program”。 但对那些教计算机科学的人来说,这些显然不是秘密。

自从20世纪50年代计算机发明以来,尽管世界发生了很大的变化,但什么也没有改变。 特别是,大多数人都不能编程。 任何大学的计算机学院都有30%~60%的qsdej在最初的编程课程中不及格。 有经验的教师很了解这种情况,但心都碎了。 也有聪明的年轻教师相信过去的做法一定有问题,辛苦地探索真相。 自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

t: auto; -webkit-text-stroke-width: 0px"> [ ] 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五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。