学习三部曲——What,How,Why
很多人学习了类库、框架、语言,但是却发现很多不懂。只是停留在了What层面。
WHAT
What is it?
在这个层次,你要搞清楚某个东东是【什么】样子的?有【什么】用处?有【什么】特性?有【什么】语法?......
对于学习语言(比如 C++、Java、Python),大部分人都能够掌握基本的语法和标准库,然后用它写一些小程序(诸如二分查找、冒泡排序、简单文件操作等)。
对于学习类库(比如 JDBC 类库),大部分 Java 程序员都能明白 JDBC 主要包含哪些类,也能够用 JDBC 进行简单的数据库查询和增删改操作。
仅仅停留在这个步骤,导致了很多程序员【只知其然,不知其所以然】。这就是目前大部分开发人员的现状。
HOW
How to do?
你要搞清楚某个东西,其内部是【如何】运作的?【如何】实现的?......
假如你在学习 C++ 语言,你是否搞明白函数传参数的实现机制?虚函数是如何实现?抛出异常时的栈回退是怎么回事?......
假如你在学习 Java 语言,你是否搞清楚 GC 如何实现?反射是如何实现?......
假如你在学习 JDBC 库,你是否清楚 JDBC Driver 的4种类型?不同游标类型的实现机制?事务的机制?......
完成这个阶段之后,你基本上就属于该技术领域最优秀的20%的人
WHY
只有想清楚 HOW 之后,才能继续去考虑 WHY
搞清楚某个东西【为什么】设计成这样?【为什么】不是另外的样子?这样的设计有什么讲究?......
对于C++语言:为什么 C++ 没有类似 Java 的 finally 关键字?为什么当初发明 C++ 的时候没有考虑 GC?......
对于Java语言:为什么 Java 没有类似 C++ 的类析构函数?为什么 Java 要同时提供 String 和 StringBuffer 两个似乎冗余的类?......
对于Python语言:为什么 Python 不提供类似 C++/Java 的访问控制机制?......
认知的过程
稍微了解“认知心理学”的网友应该知道:我们对某个事物的认识,总是“由浅到深”。虽然同样是由浅到深,但每个人思考的深度却千差万别。不幸的是,大多数人在看待某个东西(事物、问题、现象)的时候,都仅仅停留在浅层次。
未经反思自省的人生不值得去过。The unexamined life is not worth living.
参考:编程随想
https://program-think.blogspot.com/2009/02/study-technology-in-three-steps.html












网友评论