点击关注上方“五分钟学算法”,

设为“置顶或星标”,第一时间送达干货。

答读者:数学不好,能学好算法吗?

转自是不是很酷



这是在我的知识星球上,一个同学问我的问题。


波波老师您好。


我今年 28 了,也算是科班出身,但是大学的时候基本没怎么上过课。毕业到现在 5 年了,明显感觉到技术上的很多东西学起来都力不从心。


我现在想先从高中数学开始,到高数线代离散,全部先都过一遍。之后,再把学习的重点放在算法和数据结构上面。


顺便说一下,我高中之前对数学都是比较有兴趣的,所以现在学起来也不会觉得痛苦。但是因为年龄也比较大了,导致现在整个人都处于一种特别焦虑的状态,经常会怀疑:做这些到底值不值?





bobo 老师的回答:



我觉得我很理解你的这个想法。但我想给你浇一盆冷水。根据我的经验,这样做,大概率会效率很低,最终不会得到你想要的东西。


我还是更建议你能仔细想明白,自己到底想要学什么,然后直接去学


除非你真的想要学的是数学,否则的话,我不建议“从头学数学”。


为什么?


一方面,数学是一个无底洞,可以无限拓展,其实很难真正地“掌握”;


另一方面,数学也是一个太过抽象的笼统的概念。


这点,其实和计算机是一样。前端是计算机;后端是计算机;移动开发是计算机;网页开发也是计算机。人工智能是计算机;虚拟现实是计算机;编译器是计算机;数据库是计算机;网络安全是计算;大数据分析还是计算机;图形学,图像学,语音识别,推荐系统,人脸识别,语义分析,搜索引擎,知识图谱,统统都是计算机。在计算机的世界里,隔行如隔山。


数学的世界,也是如此!高数,线数,概率,统计,解析几何,计算几何,图论,数论,群论,数理逻辑,组合数学,博弈论,拓扑数学,这些统统都是数学!


但具体到某一个方向,实话实说,并非所有这些数学都是有用的。



成人之后的学习,我还是更推崇有针对性的学习。想“系统地学习”并没有错,但是我认为不应该是“系统地学习高中数学或者大学数学”,而应该聚焦在“系统地学习某一个门类的数学”。这样效率更高,也容易达成自己的目标,成就感强,有正反馈,也就更有进一步的学习动力。


你说“明显的感觉到技术上的很多东西学起来都力不从心”。我的建议是:仔细总结,到底是学习哪些技术时,感觉力不从心?感觉力不从心的关键,到底是什么?真的是自己的数学基础问题吗?还是其实这个领域本身就没有系统接触过?如果真的是数学基础问题,到底是哪一个领域的数学问题?


把问题不断地问下去,找到属于自己的核心瓶颈,而不是简单地把一切归结于一句“自己的基础不好”。因为这一定程度上,其实是“逃避”了可能隐含的核心问题。就算你开始很努力地“补基础”,但很有可能花了很长时间以后,发现离自己想要达到的目标,依旧很远。其实在我看来,这也是掉入了完美主义的陷阱。



另外,有一些领域,学习曲线就是陡峭的,其实和所谓的基础关系不大。就算基础再好,也改变不了这个学科或者领域本身学习曲线陡峭的事实;学再多基础,也无法避免初学时碰壁。


比如,学习使用 Windows 的记事本是很容易的事情,但是学习使用 Vim,就是很难的。Vim 的学习曲线,就是陡峭的。


仔细想一想,提前学习什么,会使得我们可以更加平顺地掌握 Vim?我确实没有什么好的建议。我唯一能做到的就是告诉你:Vim 本身就是难学的,不要气馁,每个人都一样。不停地使用 Vim,不停地熟悉每一个概念和功能,慢慢你就能掌握它了。


其实,我觉得算法也是此类学习曲线相对陡峭的学科。我真心不认为数学基础好,就可以很简单地理解红黑树的实现细节,或者轻松搞明白 KMP。


我认为和算法本身去较劲,比去学习数学,更能提升算法水平。根据你的叙述,我估计,如果你去和那些斩获大厂 offer 的人去聊,有一半人可能数学还不如你呢。


当然,当你要实现一个计数算法,突然意识到自己的排列组合不够好;或者当你要实现一个几何算法,发现需要系统学习一下计算几何;或者当你学习图形学,意识到线数很重要;或者在学习机器学习的过程中,发现需要高数和统计基础的时候,自然要去“死磕”相关的数学的。



指望着提高自己的基础,然后就能自然而然地,无障碍地,非常平顺地学会这个世界上的任何知识,有些过于理想主义了。虽然大多数课程的设计者,教材的编写者,追求的就是能让学习者尽量平顺地完成整个学习过程,但这毕竟只是一种追求,我悲观地认为近乎永远达不到


更何况,这个世界上还有一些教育学家在提倡:不应该过渡追求平缓的学习过程。学习就应该在自己能力范围里,去追求最陡峭的学习方案,只有这样,才能最快速地提高和成长。


当然,我没有说这种观点一定正确,我只能说它也有一定的道理。通过这些讨论,我们可以看出来,学习是一件很复杂的事情。


我经常说,学习方法没有一定之规。与其不停地去寻找学习的路径,学习的方法,不停地做“学习前的准备”,不如直接去学。


学习的过程不仅仅是吸收知识,增长技能。每个人在学习的过程中,也是在实践自己的学习方法,并且不断地调整。只有在学习的过程中,每个人才能找到最适合自己的学习方法。而这,很有可能比任何实际的知识,都重要得多。


我不相信这个世界上有万能的学习方法。我经常用反证法说明这类问题:如果这个万能的学习方法存在的话,那么所有人早就去使用这些方法了,所有人也都很顺利地迅速掌握了自己希望自己掌握的知识了。但显然,这个世界不是这样子的。


如果真说万能学习法,我曾经写过一篇文章,就叫《万能学习法》。你可以读一读,看看是不是有启发?:)



最后,我要说,如果你只是单纯地对数学感兴趣,那么上面所有这些话都是废话。


兴趣是一件神奇的东西。我们可以不计回报地去追求自己的兴趣,甚至为了兴趣付出自己的所有。


拥有兴趣是一件很幸运的事情,追逐兴趣也是一件很幸福的事情。而且,大多数人确实更容易在自己感兴趣的事情上成功;即使不成功,也无怨无悔。


大家加油!:)


以上的问答来源于知识星球,有需要的小伙伴可以关注和提问,嗯,免费的。


答读者:数学不好,能学好算法吗?




推荐阅读

•   C++是如何从代码到游戏的?•   告诉你一个学习编程的诀窍(建议收藏)•   自学编程的八大误区!克服它!•   新手如何有效的刷算法题(LeetCode)•   10款VS Code插件神器,第7款超级实用!•   在拼多多上班,是一种什么样的体验?我tm心态崩了呀!•   写给小白,从零开始拥有一个酷炫上线的网站!


欢迎关注我的公众号“五分钟学算法”,如果喜欢,麻烦点一下“在看”~

答读者:数学不好,能学好算法吗?

原文始发于微信公众号(五分钟学算法):答读者:数学不好,能学好算法吗?