都说程序员的“逻辑能力”强,他们是怎么变强的呢?这是一个很有意思的问题,因为逻辑能力并不是天生就有的,而是需要通过学习和练习来培养的。程序员的逻辑能力主要体现在以下几个方面:
-
程序设计。程序员需要根据需求和规范,设计出合理的程序结构和算法,使得程序能够实现预期的功能和效果。程序设计需要考虑很多因素,比如程序的可读性、可维护性、可扩展性、性能、安全性等。程序员需要运用各种设计原则和模式,以及合适的数据结构和算法,来构建出高质量的程序。
-
问题分析。程序员在开发过程中,经常会遇到各种问题,比如编译错误、运行错误、逻辑错误、性能瓶颈等。程序员需要分析问题的原因和影响,找出问题的根源和解决方案。问题分析需要运用各种调试工具和方法,以及逻辑推理和归纳演绎等思维技巧,来定位和修复问题。
-
技术学习。程序员需要不断地学习新的技术和知识,以适应不断变化的技术环境和需求。程序员需要学习各种编程语言、框架、库、平台、工具等,以及各种编程范式、理论、概念等。技术学习需要运用各种学习资源和方法,以及批判思维和创造思维等思维方式,来掌握和应用技术。
那么,程序员是怎么培养逻辑能力的呢?我认为有以下几个方法:
1、读那些“教你如何思考”的书是没用的
逻辑思维是一种技能,就像玩游戏,泡妞,打架一样,需要多实践才能掌握。
读书可以系统地学习知识,但不能有效地学习技巧。
只读书,你不可能学会一种思维模式的。
2、数学题没什么用
我不懂真正深奥的数学是什么样,但对于大部分人熟知的高中数学题而言,练习的只是一种技能——如何在限定的时间内找到一种快速解法,得到答案。
逻辑思维的含义比这个要宽。
逻辑好的人做数学题会快一点,但做数学题本身并不是直接提高逻辑的方法。
3、读《逻辑学导论》是没用的,你会迷糊的
下面引用百度百科:“逻辑思维(Logical thinking),是人们在认识过程中利用概念、判断、推理等思维形式主动地反映客观事实的理性认识过程,也叫理论思维”。
这种话对你有用么?
你学习十年牛顿物理,投篮准确率也不一定会比别人更高。
4、多读代码,虽然枯燥,但是有效
读代码是最有效的逻辑学习,可以让程序员学习别人的思路和经验,以及各种优秀的设计和实现。
读代码可以让程序员了解各种编程范式和模式,以及各种优化技巧和最佳实践。
读代码也可以让程序员发现自己的不足和错误,从而提高自我反省和改进能力。
5、有效的练习方法
下面写写我觉得什么练习方法最有效吧。
我自己的感受是自己出一些练习题,自己做。
以下举一些我自己出的,自己做过的题目。
-
第一类:
-
人在什么情况下会哭?请列举出尽可能多的不重复的答案。
-
短信诈骗有什么手段?请列举出尽可能多的不重复的答案。
-
-
第二类:
-
不用纸笔,不查资料,估算一下中国人每天说多少句“傻逼”?
-
条件同上,估算一下淘宝一年卖出多少个避孕套?
-
-
第三类:
-
我开了一家包子店,包子却卖不动,该怎么办?请给出针对各种可能的完整解决方案。
-
有一家门户网站,流量不高,该怎么提高流量?请给出针对各种可能的完整解决方案。
-
5.1 如何解答第一类问题
解答第一类问题,你会发现最有效的方法是先分门别类,然后逐一列举。
什么情况会哭?
随便举一个分类法,可以分为一个人的情况,两个人的情况,多个人的情况。
一个人的情况什么时候会哭?挂科,失恋,喝醉,生病……
两个人的情况什么时候会哭?吵架,被骂,被感动……
依此类推。
如果不分类,要么列举得很慢,要么列举不全,要么列举出重复的答案。
这就是人们常说的 MECE(Mutually Exclusive, Collectively Exhaustive.)。
做到这一点,分类的功夫就差不多了。
5.2 如何解答第二类问题
要解答第二类问题,你会发现需要进行一系列的假设,最后用 A x B x (C + D) x (E + F + G) 这样的形式来解答。
中国人一年说多少句傻逼?把中国人先按年龄段分成几部分:0-15,15-30,30-45,45-60,60 以上。
假设每个年龄段 3 亿人(随便设一个)。
0-15 大约是不会说的;
60 以上也不用考虑;
45-60 的人每天说 10 次;
30-45 的人每天大概说 20 次;
15-30 每天大约 30 次。
那么答案就是:3 亿 x 10 + 3 亿 x 20 + 3 亿 x 30 = 180 亿次/日。
这题比较简单。
但要算的更精确有哪些方法?
可以分南方人,北方人,分城市人,农村人,受教育程度高的,受教育程度低的,分职业……
一步步细分,一步步估算。
5.3 如何解答第三类问题
解答第三类问题就是第一类和第二类的结合。
包子卖不动可能有哪些原因?这是第一类问题。
原因可分成两大类:供应和需求。
供应方面 —— 包子味道如何?质量如何?价格如何?新鲜否?
需求方面 —— 本地区有没有人?这些人爱不爱吃包子?这些人习惯不习惯到包子店买包子?等等。
针对每一个子问题,如何得到一个解决方案。
比如,本地区有多少人爱吃包子?这就回到了第二类问题。
这就是我认为最有效的练习方法。
可以发现,逻辑思维不是知识,你可以随时随地,用任何材料来练习。
它是一种方法,让你可以无缝地解决各种没有头绪的问题。
习惯了这样的解析方式,碰到复杂的问题你也不会慌。
如果有人问你,中国明年的房地产形势会如何?
按照模式一步一步解就可以了,答案可能不太准,但至少你有个概念。
评论区