问题

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

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

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

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

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

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

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

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

3. 情感连接与内在激励

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

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

4. 思维方式的契合度

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

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

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

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

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

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

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

网友意见

user avatar

有意思的问题 ^ ^

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


【1】思考阈值

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

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

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

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

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

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


【2】反馈机制

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

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

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


【3】思路连贯性

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

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

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

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


【4】有效思维长度

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

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

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

如下图所示:

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

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


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

#

user avatar

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

类似的话题

  • 回答
    你提的这个问题触及了很多人的痛点,我敢肯定,很多人都有同样的困惑。写程序能沉浸进去,几个小时不觉得累,但一翻开数学书,没多久就想走神,这是为什么呢?这里面其实有很多原因交织在一起,可以从几个方面来聊聊:1. 目标导向与即时反馈的差异写程序的时候,你的目标通常是很明确的:实现一个功能、修复一个bug、.............
  • 回答
    你提出的问题非常好,也触及了用户体验设计中的一个普遍痛点。很多时候,程序的“确认”和“取消”按钮确实会让人感到困惑,特别是当它们没有被清晰地标注时。为什么会这样呢?这背后有很多原因,我们可以从多个角度来详细探讨: 1. 设计的“惯性”与历史包袱 历史遗留的设计模式: “确认”和“取消”按钮是一种.............
  • 回答
    .......
  • 回答
    你遇到的这个问题,其实是很多开发者在跨平台开发时都会遇到的一个经典难题。用通俗的话来说,就是同一个程序,在电脑上跑和在手机上跑,结果却“分道扬镳”了,尤其是数值小的时候还挺同步,一旦数值变大或者处理过程更复杂了,就开始出现差异。这背后涉及几个关键因素,我们可以一点点来捋清楚:1. 计算精度的差异:浮.............
  • 回答
    关于程心留下五公斤生态球这件事,智子同意,这背后其实是一个非常精妙且充满算计的博弈过程,并非单纯的“同意”那么简单。要详细理解这一点,我们需要深入到《三体》系列中关于智子运作逻辑和其对人类文明的判断。首先,要明确一点:智子代表的是三体文明的意志,其核心目标是确保三体文明的生存和扩张,同时避免地球文明.............
  • 回答
    这个问题触及到了一个非常核心且迷人的话题:人工智能是否终将能够完全自主地创造新的编程知识和工具?为什么我们现在还没有看到那种“全能型”的代码生成器,让它自己就能“学会”写出更好的编译器、更优雅的算法,或者根本上解决现有编程范式的局限性?首先,我们要明白,我们现在所拥有的“代码生成”工具,无论是GPT.............
  • 回答
    这问题触及了许多程序员心中的痛点,特别是当“覆盖率”这个词被高高举起,变成一种近乎僵化的KPI时。咱们来聊聊这个,不带任何AI腔调,就当是程序员之间的一次深度交流。高单侧覆盖率:是保护伞,还是枷锁?坦白说,当听到“单侧覆盖率100%”的时候,很多经验丰富的程序员心里都会咯噔一下。这并不是说测试本身不.............
  • 回答
    程序员的产出和投入的时间,这事儿说起来可就话长了,哪有那么简单的一条直线往上长?咱们平常生活中,你多花点力气搬砖,那肯定多搬几块;多花点时间磨刀,那刀肯定越磨越快。可到程序员这儿,嘿,情况就不一样了。你想啊,咱们程序员这活儿,不是盖房子,不是搬石头,不是流水线上的装配工。这脑子里头想的是逻辑,是算法.............
  • 回答
    “程序员一到 Deadline 干活效率超高” 这个说法,虽然在很多情况下是真实的,但背后的原因却非常复杂,而“把 Deadline 定得很短”这个看似简单的解决方案,实际上会带来一系列连锁反应,并且往往适得其反。让我们来详细剖析一下其中的原因: 为什么程序员到 Deadline 效率会提高?—— .............
  • 回答
    你这个问题问得特别好,很有钻研精神。其实这背后牵扯到一个约定俗成,一个大家都心照不宣的“语言”。想象一下,在很久很久以前,计算机还是个新鲜事物,人们需要一种方式告诉计算机:“嘿,我让你干的那件事,干得挺顺利的!” 同样的,计算机也需要一种方式回应:“收到,这事办得没毛病!”这个时候,就出现了一种非常.............
  • 回答
    很多同学可能都遇到过这种情况:在 Linux 环境下写 C/C++,一个不小心指针越界了,程序“啪”地一下就崩了,提示什么段错误(Segmentation Fault)。而在 Windows 下,有时候指针越界了,程序却好像没事人一样继续跑,偶尔才会出现一些奇怪的行为,或者干脆内存损坏了自己都不知道.............
  • 回答
    你这个问题问得太到位了!确实,很多时候我们就是想写个几行的小脚本,结果IDE非要你先创建一个“项目”,让人有点摸不着头脑。这背后其实有几个挺实在的原因,虽然有时候对我们这些只想快速试试手的人来说有点小麻烦,但对于整个软件开发流程来说,它确实起到了关键的作用。咱们就掰开了揉碎了聊聊。首先,得明白一个事.............
  • 回答
    如何看待简书大V饱醉豚写的《为什么程序员是出轨率最高的群体》?首先,需要明确的是,饱醉豚这篇简书文章是一篇带有强烈个人观点和论证风格的文章,其提出的“程序员出轨率最高”的论断是基于其个人观察、经验以及对行业现象的解读,而非基于严谨的统计学研究或社会学调查。 因此,在看待这篇文章时,我们需要采取一种批.............
  • 回答
    的确,在很多人的想象中,程序员应该是一群拥有强大逻辑思维,能够创造出酷炫应用、改变世界的“数字巫师”。他们敲击键盘,代码便如魔法般飞舞,构建出数字世界的种种奇迹。从某种意义上说,这本身就是一件足够酷的事情。然而,在国内,“程序员”这个词汇,却常常伴随着“无聊”、“呆板”、“格子衬衫”、“加班到深夜”.............
  • 回答
    这确实是个很有意思也很值得探讨的问题。你观察到的现象——国外程序员博客做得好,甚至能赚钱,而国内相对少见,而且影响力不如国外——这背后牵扯到很多层面的原因,绝非一两句话能概括的。咱们就掰开了揉碎了聊聊,看看这中间到底是怎么回事。国外程序员博客的“繁荣景象”是怎么来的?首先,咱们得搞清楚国外为啥这么多.............
  • 回答
    我写过的程序,有趣的倒也不少,但要说印象最深刻、最能体现“乐趣”二字的,还得是那个能“听懂”我心情的伴侣程序。那时候我刚接触编程不久,对写代码的热情就像夏日午后的阵雨,来得又快又猛。当时我感觉生活有点单调,每天除了上课就是埋头苦写,总想找点什么乐子。就想着,能不能写个程序,能跟我聊聊天,还能在我郁闷.............
  • 回答
    哥们,大一刚接触计科,想找个代码量在 5001000 行左右的 C 语言练练手是吧?这思路很对,这个范围的项目,能让你把基础知识玩得溜,还能初步体验到项目开发的乐趣。别担心 AI 味儿,咱们就聊点实在的。我给你推荐一个项目,我觉得挺合适的,而且稍微扩展一下就能达到你说的代码量:一个简单的图书管理系统.............
  • 回答
    这问题问得挺有意思的,让我想起了那些个熬夜通宵,在屏幕前对着一串串字符,感觉自己像是掌控着某种神秘力量的日子。要说“最牛”这词儿嘛,得看从哪个角度了。是技术难度高?是影响范围广?还是说,它满足了某种我当时内心深处的某个“恶趣味”或者说是对技术边界的探索欲?如果非要选一个,我脑子里跳出来的,大概是那个.............
  • 回答
    Windows 10 的内置应用程序,像是我们日常使用的“计算器”、“照片”、“记事本”这些,它们的开发背后是一系列精密的技术组合,并没有一个单一的答案能概括所有。如果说底层语言,微软的核心开发语言一直是 C++。很多 Windows 系统本身,以及那些需要直接与硬件打交道、追求极致性能的系统级组件.............
  • 回答
    BX 寄存器在 8086/8088 架构中,确实常被称作“基址寄存器”,但这名字有时候会让人产生一些误解,因为它实际上非常灵活,并不局限于“基址”这一个功能。在程序中,BX 确实经常被用来存放偏移地址,但这个偏移地址是相对于某个“基址”而言的。咱们就来好好掰扯掰扯 BX 的“基址”到底是个啥意思,以.............

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

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