我有很多朋友看到我在做什么,觉得很有趣,然后问我一个问题
Do you think I could be a programmer?
我的回应是
... ummm ... do you like math?
我想提供一个有帮助的答复,所以我不知道是否有人对从方格开始的人进行了相当不错的能力测验,但具有批判性思维和解决问题的能力?
我有很多朋友看到我在做什么,觉得很有趣,然后问我一个问题
Do you think I could be a programmer?
我的回应是
... ummm ... do you like math?
我想提供一个有帮助的答复,所以我不知道是否有人对从方格开始的人进行了相当不错的能力测验,但具有批判性思维和解决问题的能力?
Answers:
“喜欢数学”是一个不好的考验。我从不喜欢数学(主要是因为90%的高中数学老师很烂)。
当您说“数学”时,大多数人认为您的意思是“根据一组非常严格的规则仔细求解方程式”。编程根本不是那样。
编程更像是绘图,因为您只能实现可以想象得到的结果。
重要的是想象系统并查看其工作方式的能力。
我记得小时候做的Brainbench能力测验 ; 我仍然将证书存储在某个地方...
测试大纲:
Abstract Thinking
Process Flow
Spatial Manipulation
Analytical Reasoning
Inductive Reasoning
Logic Application
Word Problems
Attention to Detail
Following Instructions
Reading Comprehension
Rule Interpretation
Writing Analysis
Mathematical Problem-Solving
Word Problems
Process Mapping
General Processes
Letter Manipulation Processes
Number Manipulation Processes
Shape Manipulation Processes
有可能已经有一个好人了。
例如,参见有关将编程绵羊与非编程山羊分离的讨论:
所有程序设计老师都发现他们的结果显示出“双重驼峰”。好像有两个种群:可以[编程]的人群和不能[编程]的人群,每个人群都有自己独立的钟形曲线。几乎所有对编程教学的研究都集中在教学上:更改语言,更改应用领域,使用IDE并进行激励。它们都不起作用,并且双峰仍然存在。在课程开始之前,我们进行了一项测试,挑选出可以编程的人群。我们可以分开双峰。您可能不相信这一点,但是您会在听完演讲后再说。我们不知道确切如何/为什么运行,但是我们有一些很好的理论。
该测试确定的是人们在执行一系列指令方面的一致性。这意味着他们可以在自己的思想中建立模型(摘要)并与他们合作。
我认为一个更重要的“测试”将是向他们展示他们可以使用的简单编程语言/环境。例如,processing或python。如果他们可以学习和享受使用这种语言的乐趣-也许同时解决一两个简单的任务-那可能就是您可能要求的最佳“能力测试”。
比“您喜欢数学”更好的问题是“您喜欢解决逻辑难题”吗?例如Sudoku等,或找出难题的答案,例如“ John,Anne,Peter,Mary和Brittany是邻居。John有一辆白色轿车,Brittany住在Anne,blah blah的左边,按顺序他们活着吗?”
因为那就是编程的意义:一个巨大的逻辑难题。
我认为喜欢的数学很重要。从您的角度来看,您不是喜欢严格验证的东西,而这是认真的数学家所必需的。但是,考虑到对您来说很重要的问题,您可以用数学方式解决解决该问题所涉及的问题吗?我声称,计算机所做的一切都是数学,它需要某种符号数据,并对其执行某种运算。那是数学的本质。这样一来,您就可以将事物抽象为某种类似数学的结构,并就下一步的原因进行推理。缺少这一点,您只是在破解,抛出一些代码,并希望它能够完成您想要的工作。可能并不需要那么复杂的代数而又不会造成拼写错误和迷路。但是能够制定计划很重要。我经常编写十行程序来验证我不太复杂的数学是否正确。真正的关键是将计算机与数学结合起来,以进行验证,发现和确定详细信息(是的话)。