关于如何学习技术的一点感悟

低并发编程

共 2367字,需浏览 5分钟

 ·

2021-03-10 21:23

低并发编程,周一很颓废,周四很硬核
熟悉我的读者朋友知道,我给好多技术文章的标题,都加上了 破玩意 这三个字。
这是为什么呢?
一开始我只是觉得好玩,直到有一次,一位读者朋友留言:
战略上藐视技术
这让我有了更深入的思考,于是有了这篇文章,和大家聊聊我对学习技术的两点思想上的感悟。

1

战略上藐视技术

很多同学在战略上过于重视技术。
具体体现为,在你还完全不了解一门技术的时候,就不自觉地认为它高不可攀,不是我等凡人可以搞明白的。
比如 linux 内核、jvm 虚拟机实现、native 方法的底层原理...
有多少同学从来没尝试接触他们,就认为
我怎么可能搞明白这些?
或者
能把这些搞明白的都是大神吧?
其实不然。
很多事情,不仅仅是技术,当你真正开始接触它、熟悉它、了解它之后,就会觉得,它和你的距离,并没有你想象得那么遥远。
甚至你可能会觉得,它比你现在所熟悉的东西,还要简单,只是当时不知道而已。
比如 linux 内核,在很多 Java 程序员眼中可能是个高不可攀的存在,我曾经也是这样的感觉。
但有多少同学是连一行 linux 源码都没看过,就开始觉得它高不可攀呢?
当我开始看 linux 源码之后,我便发现它不过如此,在全局上我已经不惧怕它了,需要的只是时间,把一个个的具体问题想明白。
再者,很多时候也不能怪我们自己的,很多原本简单的名词,会被别有用心的人包装成晦涩难懂的概念,使我们敬而远之。
我们看百度百科关于 内核 这个词的解释:

内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。内核的分类可分为单内核和双内核以及微内核。严格地说,内核并不是计算机系统中必要的组成部分。

我觉得这段话没有提供任何有价值的信息量,且提供的信息组织得十分混乱。
百科亦是如此,更何况现在人人都可以写的博客和书籍呢?
所以,不要惧怕它们,很多事情,并没有那么复杂
 

2

战术上重视技术

不知道有多少同学看过同步异步、阻塞非阻塞的这段解释,网上应该很多。

1. 老张把水壶放到火上,立等水开。(同步阻塞)

2老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)

3老张把响水壶放到火上,立等水开。(异步阻塞)

4老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。(异步非阻塞)

这就是他们的区别,没那么高深,一个例子就能解释透彻!

在我看来呢,这个就属于典型的在战略上做到了藐视了技术,但在战术上却没有重视技术
这要比在战略上过于重视技术还要可怕。
同步异步、阻塞非阻塞的本质其实很简单,完全没必要用拟人化的例子去解读。
这个例子本身也是极其不准确的,说它错误也不为过。
再加上不同人的不同理解,就更加具有误导性了。
且这个例子丢失了理解这些概念的几乎全部的信息量:IO、线程挂起、立即返回未就绪状态码、回调函数 等。
并且后面还加了一句话,说这个例子能把这个问题解释得很透彻。
本来,这种形象化解读一手资料而生产出来的二手资料,就已经丢失了大部分信息量
那么,那些以二手资料为参考,继续形象化解读而形成的三手资料,又会怎样?
比如这个烧水壶的例子,是一个人读了打电话的例子后,写出的,自始至终都没有研究过这些概念的本质。
可怕吧。
给读者造成的影响就是,读者以为自己花了几分钟就理解了之前几小时都没明白的问题,大赞笔者,于是再也不去看之前花了几个小时看的资料了。
直到某一天遇到另一个问题,才恍然大悟自己当初并没有搞懂,而且当初的理解也被这种拟人化的方式误导了。
当然,有些技术点,通过拟人化的方式还是十分贴切的,因为当初设计这些技术时的思路,就是通过生活中的事情而产生的灵感。所以,错不是错在拟人化,而是在于对技术细节的不重视。
所以,无论是写文章,还是学习,不但要在战略上藐视技术,更要在战术上重视技术
遇到具体的问题,细化到每一个字节,每一个位,都要重视起来。
我在写《你管这破玩意叫文件系统》时,虽然全文都在介绍设计文件系统的思路,也尽量把很多晦涩的概念贯穿在情节当中便于理解。
但我后面更多的时间,是一个字节一个字节地分析 ext2 文件系统的镜像文件,将其每个字节的含义和 linux 中 ext2 实现的源码,以及 ext2 官方文档的说明,对应起来。
通过添加、修改、删除文件,来观察在硬盘镜像文件哪个字节发生了变化。
通过对比 ext2、ext3、ext4 来看哪些是后续版本增加的功能,有什么作用。
这样才能分析出什么是构建起一个文件系统的核心设计,哪些是不影响核心功能的锦上添花的设计。
在文风上,我从来都是带着藐视技术的态度讲给读者,但在资料的收集和细节的打磨上,我会保持对技术的敬畏,重视技术,重视细节

后记





战略上藐视技术,战术上重视技术,做到这两点,学习技术方式你就掌握一半了,剩下的都是细节问题,我觉得都无所谓。

比如很多人会出学习顺序呀、学习攻略之类的,其实我觉得条条大路通罗马,你是先学底层还是先学上层,学网络时是自底向上还是自顶向下,学习一门新技术时是先写 demo 还是先学原理,我觉得这些都因人而异,没有绝对的所谓的正确顺序。

有的时候,这些细节反而需要通过你自己不断学习和摸索,总结出一套适合自己的规律。

最后希望大家好好学习,天天向上,少看今天这种教你学习方法的文章,多学学实际的技术,比啥方法都强。


完~

浏览 62
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报