我所说的一切都可能是错的!
即使你赞同我的观点,你的生活也不会因此有任何改变!
除非——你采取了相应的行动。
(这是书先生在简书的第64篇文章。本文约2100字,请花5分钟来阅读。)
引子
这是一篇可能改变你学习和工作认知的短文——此为引子。
何谓算法思维
算法是个数学和计算机科学术语,指对解题方案的准确而完整的描述。对计算机来说,算法是一系列清晰的指令,使得对于满足一定规范的输入,计算机能在有限时间内给出所要求的的输出。
提到算法,很多人想到的就是其是否有效(是否能解决问题?)以及其空间复杂度(运行时需要占用多少内存空间?)和时间复杂度(能在多长时间里解决问题?)。
能够设计出占用空间小、解决问题快的算法是每一个程序猿孜孜不倦的追求。然而,在书先生看来,这些都不是算法思维的精髓。算法思维的精髓是其解决问题的步骤性。
一下就得出结果的不叫算法。比如我们都背过九九乘法表,这时有人问你,7*9等于多少,你根据记忆直接给出答案63。这不是算法。
什么是算法呢?你发现,每一个非零的个位数和9相乘后的结果有一定规律。假设这个数为n,则9*n的结果是一个这样的两位数:它的十位等于n-1,它的个位等于10-n。掌握了这个规律,只要知道n的值,我们只需要通过两步就可以得出9*n的值。这是算法。
可能有人会问,第二种方法不是比第一种更麻烦吗?第一种直接出答案,第二种还要经过两步才能出答案。如果只看步数,我们可能会得出这样错误的结论。但是如果我们把目光移向每一个步骤的困难程度,算法的优势就出来了。
第一种方法需要我们记住九九乘法表,这并不是一件容易的事情,它需要我们对加法和乘法的概念都有一定了解。第二个方法虽然有两步,但两个步骤都是简单的加减法。这意味着,只要我们步骤/路径安排得当,再复杂的问题都可以分解为有限个简单的问题来解决。这就是算法思维的精髓,也是只会识别两个数字的计算机能够完成那么多复杂任务的根本原因。
让我们再往前面走一步。算法思维精髓中的精髓是,每个步骤只为下一步负责,而无需为最终结果负责。达成最终结果的是步骤的调度,而和任何一个步骤都没有直接关系。
明白这一点,无论是工作还是学习,我们都会少犯很多错误。下面,请允许我分别用一个例子来阐释一下这个理念。
算法思维和求职
你问很多人,写求职信是为了什么,我相信绝大多数人的回答都是为了找工作。这就是没有算法思维的体现——从步骤1直接到结果。
问题是,现实世界不是这样运行的。在发出求职信和求职成功之间还隔着一个面试。除非你是名声在外的行业精英,是猎头挖取的对象,否则这个步骤是省不了的。
按照算法思维,每一个步骤只对下一个步骤负责,那么写求职信的目的应该是获取面试机会。这有什么区别呢?区别大了!
找工作需要的是满足用人单位的要求。如果求职信的目的直接瞄向找工作,那么其内容会是对自身能力的详细介绍。
获取面试机会需要的是引起用人单位的好奇心。冲着这个目的去,太详细可能不见得是件好事,留点悬念或许对你更有利。比如你可以在求职信里提到自己“通过自创的3C法,在两个月就完成了228万3千400元(对,数字越详细越好)的销售额”。点到为止,不要解释什么叫3C法。如果对方想知道,那么恭喜你,你的算法可以进入下一个步骤了。
算法思维和英语学习
从教十余年,校内校外教了不少学生。我喜欢问学生这样一个问题:你跟着我学英语的目的是什么?几乎所有学生的回答都是:学好英语。
有这个志向是很值得鼓励的,但可惜这个答案不正确。为什么呢?
让我们用算法思维来捋一遍。学好英语是我们要解决的问题。解决这个问题需要若干个步骤,比如入门、大量输入、在输出中修正提高等,而跟着老师学只是其中一个步骤。
在《中国人学英语最常犯的错误(方法篇2)》,我提到,老师的主要作用就是引导学生快速入门,且只有入门阶段才需要老师。入门过后的下一个阶段是提高阶段,主要方法是大量输入。
因此,本着每个步骤只对下一个步骤负责的原则,在跟着老师学习的阶段,设定目标不应是学好英语,而是尽快获取能够独立进行大量输入的能力。掌握了英语的框架,大量输入的阶段是没有必要跟着老师做的。(这个阶段需要的是知识库和信息检索能力,我以后再专门论述英语学习每个阶段不同的要求。)
这是真正负责任的老师应该做的事情——让学生尽快获得独立学习的能力。换句话说,学生能越早离开老师独立学习,这个老师就越厉害,他所采用的的教学方法和教学体系也越有效。
一般情况下,学生不会在刚离开老师时就是高手。学生离开,只是意味着这个学生将来能够独立学习和研究了,至于以后的发展,取决于这个学生在后续阶段下的功夫和能够获取的资源了。
就像学开车一样,很少有人拿到驾照时就是高手。更常见的情况是,拿到驾照很久后都不敢上高速。不过,虽然开得不好,但你会开车了。这就是本质的区别,这也是你跟着教练或者家人学车的主要目的——不是直接奔高手去,而是先上路。
不同的目的决定了不同的行为方式。如果直接冲着学好英语去,你最终可能陷入碎片化学习的陷阱,因为“学好”包含的东西太多了,且没有明确的路径。
但是如果你的目的是为自学打好基础,你的选择就很明确了:一个能够帮助你快速打下基础、建立框架的老师和课程,让自己在短时间内具备自学能力。这样做,虽然成为高手还需要积累,但路径清晰、阶段性目标明确、可执行性高——这,正是算法思维的威力。
思考题
下面是一个思考题:
如果将算法思维用于撩妹儿,和妄图一步到位的强撩有什么区别呢?请举例说明。
【作者简介】
书先生和路夫人,80后大学教师一对。
书先生语言老司机,玩转英语、德语、Python计算机编程;
路夫人旅游达人,足迹遍及欧洲、美洲、亚洲和大洋洲!
读万卷书、行万里路、过精彩人生!
网友评论
一步到位的重点会想着怎么样让妹子愿意和你在一起,于是可能乱了章法,只知道展示自己的优势,而不顾妹子喜不喜欢。
好比英语学习,要先入门,没入门就想着精通,天天看难题分析难点,也许能成功,但成功的概率应该不高,因为太难几乎都会放弃。