这是一篇短文,分享下两件小事的感受。
1
去年写过一篇漫画《康熙学不了二进制》,讲述了二进制和布尔代数的发展,最后由香农发现布尔代数和逻辑电路之间的关系,奠定了计算机发展的基础。
我的漫画科普到此就打住,结束了。
最近在看吴军老师的书《计算之魂》,我发现他也在讲这个故事,来了好奇心,仔细看了看。
故事是相似的,没有新意,但是后面的总结却提出了一个让人耳目一新的观点:
香农的电路设计思想可以被总结为“模块化”和“等价性”。
所谓模块化就是用少量简单的模块搭建出各种复杂的功能,这也是今天计算机行业的核心指导思想。
在计算机的产品中,常常是大量相同模块的复制,这也是IT产业能发展很快、摩尔定律能成立的重要原因。
等价性即再复杂的计算都可以等价成很多加、减、乘、除的运算,再进而等价成开关电路的逻辑,也就是说,实现了后者,间接地实现了前者。
我一下子就感受到了差距,我只是描述了现象,没有触及到本质,没有总结出规律。
我反问自己:对布尔和香农的故事,你能想到这一层吗?
似乎不行。
如果是单纯技术层面,比如讲redis这样的缓存的时候,我就会深挖到底层:计算机各个部件之间速度差异巨大。但是对技术发展历史来说,我做不到。
可见知识面还不够广阔,洞察力还不够深刻,上升不到这个层次。
表面现象谁都可以讲几句,但是背后那些深刻的东西讲起来就难了, 但恰恰就是这些东西,让我们印象深刻,触及内心。
以后还是得多读书,更加深入思考,努力地从现象发掘本质,总结出规律性的东西出来。
2
写关于单元测试文章的时候,搜到了Martin Fowler写的一篇文章, 我一看到其中的图就感觉被搔到了痒处。
图展示的是单元测试,比如,你在测试Order类,Order类引用到了Product和Customer,那做单元测试的时候,要不要把这俩货用Mock技术给隔离开测试呢?
我原来写单元测试经常会遇到这种情况,每次给人解释都很费劲。
Martin Fowler的厉害之处在于他对两种情况作了分析, 各自总结了一个贴切的名字:
1. Sociable Tests
“社交化”的测试,表示大家(Order, Product, Customer)都在一起,不隔离
2. Solitary Tests
“孤独的”测试,表示隔离开,只测试Order类。
这真是让我眼前一亮, 有了双方都认可的名称,交流效率就极大提升了,就像设计模式那样,只要你说你用了观察者模式,我不看代码就知道大致长什么样子。
我不由得反思:这两种测试方式已经在我心中盘踞很久,我为什么没有总结一下,给它起个有趣,贴切的名称呢?
首先是意识不足,没想到;其次恐怕还是能力不够。
能够说出别人想说,但是难以表达的东西,成功地搔到大家的痒处,这真是一件厉害的本事。
3
两件小事,让我感受到了和大神很大的差距。
想继续往上走,知识面需要更加宽广,洞察力必须更强,思考必须更加深入。
需要经常记录、整理、思考、输出,如果我们整天看碎片化的东西,大脑就废掉了。
一篇短文,和大家共勉。
(完)
点击下方图片,查看更多精彩