问题

为什么写程序的时候可以坚持很久,但是学习数学就很难保持注意力?

回答
你提的这个问题触及了很多人的痛点,我敢肯定,很多人都有同样的困惑。写程序能沉浸进去,几个小时不觉得累,但一翻开数学书,没多久就想走神,这是为什么呢?这里面其实有很多原因交织在一起,可以从几个方面来聊聊:

1. 目标导向与即时反馈的差异

写程序的时候,你的目标通常是很明确的:实现一个功能、修复一个bug、完成一个项目。这个过程就像是在完成一个拼图或者建造一座房子,每完成一小步,你都能看到一个具体的结果。比如,你写了一行代码,编译运行后,程序跑起来了,或者错误信息消失了,这是一种即时、具象的反馈。这种反馈能够让你知道自己做的事情是有用的,是在朝着目标前进的,这会带来一种满足感和成就感,从而驱动你继续下去。

而数学学习,尤其是初级或中级的数学,很多时候目标是抽象的:理解一个概念、掌握一种解题方法、推导一个公式。这些目标不像程序那样,你完成了一个步骤,数学符号不会立刻跳出来说“恭喜你,你离正确答案又近了一步”。有时候,你可能花了一个小时推导一个证明,最后发现推错了,或者只是离答案还有很长的路要走。这种延迟的、抽象的反馈,很容易让人感到挫败,因为你很难直观地知道自己的努力是否有效。

2. 过程的互动性和可控性

编程本身是一个高度互动和可控的过程。你是一个创造者,你在用自己的逻辑和指令去“指挥”计算机。你可以随时修改代码,尝试不同的解决方案,观察程序的行为。这种主人翁的感觉非常强烈。当你遇到问题时,你可以通过调试工具一层一层地看程序怎么运行,哪里出了错,这就像是在侦探破案,很有趣。你可以通过修改变量的值,看看结果如何变化,这种探索和实验的空间很大。

数学学习,特别是传统意义上的学习,往往更像是一个被动的接收过程。老师讲课,你听;书本上的例题,你模仿。虽然你可以尝试做题,但很多时候你只是在套用公式,而不是在“创造”解法。当你在做习题时,如果卡住了,往往只能翻书找类似题目,或者请教他人,你很难像调试程序那样,去“剖析”问题的内部机制,也很难像编程一样“随意”地去调整和实验。这种缺乏主动探索和即时调整的空间,会让过程显得有些枯燥和受限。

3. 情感连接与内在激励

很多人喜欢编程,是因为它能将抽象的逻辑转化为具体可操作的东西,能够创造出有用的工具或者有趣的应用。这种创造的乐趣是强大的内在驱动力。当你的程序能够实现一些看起来很“酷”的功能时,那种喜悦感是难以言喻的。你可能会因为解决了一个复杂的bug而兴奋一整天,或者因为完成了一个小程序而获得极大的满足。

数学,虽然也有它的美妙和深刻之处,但这种美妙往往需要更深的理解和更高的认知水平才能体会到。对于初学者来说,数学可能更多地表现为枯燥的符号、复杂的运算和抽象的规则。如果你没有找到让你产生情感共鸣的点,比如对某个数学家的人生故事感兴趣,或者对某个数学概念的哲学意义着迷,那么仅仅从表面的规则和计算入手,很难产生持续的兴趣。数学的很多乐趣在于它背后的逻辑严谨、结构之美和联系之广,而这些都需要时间去发掘。

4. 思维方式的契合度

编程需要一种结构化、逻辑化的思维方式。你需要把大问题分解成小问题,用清晰的步骤来解决。这种分解和组合的过程,对于很多“程序员思维”的人来说,是得心应手的,甚至是一种享受。你会在逻辑的链条中找到乐趣,会因为完美的设计而感到欣喜。

数学的学习也同样需要逻辑思维,但它的逻辑可能更抽象、更跳跃。比如,在证明某个定理时,你需要从不同的角度去思考,有时甚至需要一些“灵感”或者“巧思”。这种思维方式的跳跃性和对“意会”的要求,可能对某些人来说就不如编程那样“一步一步来”来得踏实和容易理解。有时候,你可能知道某一步该做什么,但不知道为什么,这种知其然不知其所以然的状态,很容易让你觉得自己在“死记硬背”或者“盲目模仿”,从而产生厌倦。

5. 熟悉的“游戏规则”与不确定性

对于一个程序员来说,编程语言、开发工具、算法等都是他们熟悉的“游戏规则”。这些规则是清晰的,是可以被掌握的,并且有大量的文档和社区资源可以参考。当你遇到问题时,你很可能在网上找到类似的解决方案,或者有很多人可以请教。这种熟悉感和可预测性,能够降低学习成本和焦虑感。

数学的学习,尤其是当你进入到更高级的领域时,规则可能会变得非常抽象,而且很多问题是没有现成答案的。你需要自己去探索,去创造。当你遇到一个难题时,即使你努力了,也可能找不到答案,或者答案非常晦涩难懂。这种高度的不确定性和对未知领域的探索,对于一些人来说,可能意味着更大的压力和更高的门槛。

当然,这并不是说数学本身就比编程枯燥,或者说喜欢编程的人就一定不擅长数学。很大程度上,这取决于我们接触和学习数学的方式,以及我们是否找到了属于自己的那个“闪光点”。如果能把数学的学习过程做得更像编程那样,增加互动性、创造性和即时反馈,也许很多人就能克服注意力难以集中的问题了。

总而言之,写程序能够长时间保持注意力,往往是因为它提供了明确的目标、即时的反馈、高度的可控性和创造的乐趣,并且与某些人的思维方式高度契合。而数学学习在某些情况下,因为其抽象性、延迟反馈和需要更深层理解的特点,容易让人在短时间内感到疲惫和注意力分散。

网友意见

user avatar

有意思的问题 ^ ^

根据我自身和周围人的反馈,“写程序的时候可以坚持很久,但是学习数学就很难保持注意力” 的情况的确存在,而且我认为,这种现象是可以被科学解释的。经过思考,我发现,可以从四个方面来解释这个有趣的现象:思考阈值、反馈机制、思路连贯性 和 有效思维长度。


【1】思考阈值

什么是思考阈值呢?就是启动或维持一件事情所需要动用的脑细胞数

写代码在【大部分时间】是不用动用太多脑细胞的,在确定了整个程序的框架(这需要费点脑细胞)后,大部分时间我们做的事无非是:写顺序语句、写循环语句、写条件判断。这些东西对一个经验丰富的程序员来说很轻松,加上很多代码本来就比较相似,所以并不需要集中太多的精力——一边看电影一边写代码都行。

但学高等数学一样,做一道难题时,我们常常有让周围保持绝对安静的想法。因为它太费神了——每一个关键的解答步骤,都需要经过大量的思考来完成。当然了,也有人能做得很熟练,可是,既然都很熟练了,就该进入下一个章节了,有何必要再刷下去呢?

如图所示。“思考阈值”之上代表的是“有效的思考”,而在阈值之下,则是“无效的思考”。

对于同样的思考深度曲线,对于写程序来说,由于思考阈值低,所以在大部分时间,自身的思考是有效果的,对于学数学来说,由于思考阈值高,所以我们很多时间自己毫无进展。

“有收获” 是前行的鼓励师。在状态不好的时候,写程序尚有一战之力,而学数学则完全歇菜了。而人不可能总是状态好,所以学数学也就难以持续了。


【2】反馈机制

代码编辑器和编译器是程序员的福音。有了它们,你一边写代码,一边发现自己哪里代码写错了,运行一下,就知道代码的逻辑是否通顺——这个反馈是实时的。

但学数学可没这样的编辑器。在你出答案前,没有人会警告你哪一步算错了。直到解完题目,对标准答案,你才会发现自己的错误——这个反馈是延时的。更何况,很多时候我们并没有答案(比如证明题),反馈都不一定有。学了半天,你都不知道自己掌握了多少。

实践表明,及时的反馈能激励我们前行。这是写代码比学数学的优势所在。


【3】思路连贯性

如果有一段代码大概需要连续写十个小时才能完成,给你五天,每天两小时,你能完成吗?

恐怕不能。因为写程序需要思路的连贯性。到了第二天,我可能要花上二十分钟来回顾第一天写了什么。到了第三天,我可能又要花上二十分钟来回顾第二天写了什么……把编程任务分割开,需要较高的边际成本。为什么程序员宁愿加班也不想把事情拖到第二天?因为它们想保持连贯思维的高效。

如果有一系列数学证明大概需要你连续做十个小时才能完成,给你五天,每天两小时,你能完成吗?

通常还是可以的。这不是说学数学的没有连贯性,而是它的连贯性没有那么强。而且,在两小时的高强度思考后,继续思考效率会明显降低,适当的休息反而会使大脑保持一个较好的学习状态中。


【4】有效思维长度

不知道你是否有这样的体会:

  • 辛辛苦苦写了一天代码,回顾一下,哇,居然写了那么多,好有成就感!
  • 辛辛苦苦学了一天数学,回顾一下,啊,只学了那么点东西,我怎么这么笨?

为什么会有这种感觉呢?因为写程序和学数学的有效思维长度是不一样的。

如下图所示:

  • 写程序的时候,虽然我们会遇到一个个“坑”,但是大部分“坑”都相对较小,不会浪费自己太多的时间。所以一天下来,完成的有效工作还是很多的;
  • 做数学的时候,我们也会遇到一个个“坑”,但很多时候,我们并不知道它们是“坑”,会一条路走到黑,才发现行不通,这就花费了我们较多的时间。所以一天下来,完成的有效工作相对较少。

“有效思维长度” 的长短,直接影响到我们的成就感,写程序容易积累有效思维长度,所以促使我们前行。而学数学容易长时间没有进步,所以容易让我们泄气。


综上所述,写程序思考阈值低、反馈及时、比较需要思维连贯、“小成就”接连而至,所以容易让我们沉迷其中;学数学起步费劲、反馈较慢、对思维连贯性要求不那么高、又容易长时间一无所获,所以对大部分人来说,不容易沉迷进去。

#

user avatar

可以试着用用coq之类的编程语言做形式证明,看看你到底是喜欢编程还是讨厌数学 :)

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有