热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

两件小事,感受到了和大神的差距

这是一篇短文,分享下两件小事的感受。1去年写过一篇漫画《康熙学不了二进制》,讲述了二进制和布尔代数的发展,最后由香农发现布尔代数和逻辑电路

这是一篇短文,分享下两件小事的感受。

1

去年写过一篇漫画《康熙学不了二进制》,讲述了二进制和布尔代数的发展,最后由香农发现布尔代数和逻辑电路之间的关系,奠定了计算机发展的基础。 

我的漫画科普到此就打住,结束了。 

最近在看吴军老师的书《计算之魂》,我发现他也在讲这个故事,来了好奇心,仔细看了看。 

故事是相似的,没有新意,但是后面的总结却提出了一个让人耳目一新的观点:

香农的电路设计思想可以被总结为“模块化”和“等价性”。 

所谓模块化就是用少量简单的模块搭建出各种复杂的功能,这也是今天计算机行业的核心指导思想。 

在计算机的产品中,常常是大量相同模块的复制,这也是IT产业能发展很快、摩尔定律能成立的重要原因。 

等价性即再复杂的计算都可以等价成很多加、减、乘、除的运算,再进而等价成开关电路的逻辑,也就是说,实现了后者,间接地实现了前者。 

我一下子就感受到了差距,我只是描述了现象,没有触及到本质,没有总结出规律。

我反问自己:对布尔和香农的故事,你能想到这一层吗? 

似乎不行。

如果是单纯技术层面,比如讲redis这样的缓存的时候,我就会深挖到底层:计算机各个部件之间速度差异巨大。但是对技术发展历史来说,我做不到。

可见知识面还不够广阔,洞察力还不够深刻,上升不到这个层次。

表面现象谁都可以讲几句,但是背后那些深刻的东西讲起来就难了, 但恰恰就是这些东西,让我们印象深刻,触及内心。

以后还是得多读书,更加深入思考,努力地从现象发掘本质,总结出规律性的东西出来。

2

写关于单元测试文章的时候,搜到了Martin Fowler写的一篇文章, 我一看到其中的图就感觉被搔到了痒处。 

图展示的是单元测试,比如,你在测试Order类,Order类引用到了Product和Customer,那做单元测试的时候,要不要把这俩货用Mock技术给隔离开测试呢? 

我原来写单元测试经常会遇到这种情况,每次给人解释都很费劲。 

Martin Fowler的厉害之处在于他对两种情况作了分析, 各自总结了一个贴切的名字:

1.  Sociable Tests  

“社交化”的测试,表示大家(Order, Product, Customer)都在一起,不隔离

fca35588449766c5763ce7dda884aa25.png

2.  Solitary Tests

“孤独的”测试,表示隔离开,只测试Order类。

622b2b8006b9212570a7704cec362ad8.png

这真是让我眼前一亮, 有了双方都认可的名称,交流效率就极大提升了,就像设计模式那样,只要你说你用了观察者模式,我不看代码就知道大致长什么样子。 

我不由得反思:这两种测试方式已经在我心中盘踞很久,我为什么没有总结一下,给它起个有趣,贴切的名称呢? 

首先是意识不足,没想到;其次恐怕还是能力不够。 

能够说出别人想说,但是难以表达的东西,成功地搔到大家的痒处,这真是一件厉害的本事。

3

两件小事,让我感受到了和大神很大的差距。 

想继续往上走,知识面需要更加宽广,洞察力必须更强,思考必须更加深入。 

需要经常记录、整理、思考、输出,如果我们整天看碎片化的东西,大脑就废掉了。

一篇短文,和大家共勉。 

(完)

点击下方图片,查看更多精彩

55398cee410ee6a5e4f27e44579a3d82.png

3502fa229ac61f851fb9b81f71af4060.png

78c02507f74d0cea9fabea94eddc7585.png

fe8bcf5d6b5503aff06ad9a203503960.png

ce0ca38c5dea26222a65c2ac4076a379.png


推荐阅读
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文深入探讨了如何通过调整InnoDB的关键配置参数来优化MySQL的随机IO性能,涵盖了缓存、日志文件、预读机制等多个方面,帮助读者全面提升数据库系统的性能。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 百度服务再次遭遇技术问题,疑似DNS解析故障
    近日晚间,百度多项在线服务出现加载异常,包括移动端搜索在内的多个功能受到影响。初步迹象表明,问题可能与DNS服务器解析有关。 ... [详细]
  • 掌握 Photoshop 是学习网页设计的重要一步。本文将详细介绍 Photoshop 的基础与进阶功能,帮助您更好地进行图像处理和网页设计。推荐使用最新版本的 Photoshop,以体验更强大的功能和更高的效率。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 配置Windows操作系统以确保DAW(数字音频工作站)硬件和软件的高效运行可能是一个复杂且令人沮丧的过程。本文提供了一系列专业建议,帮助你优化Windows系统,确保录音和音频处理的流畅性。 ... [详细]
  • 本文深入探讨了 Redis 的两种持久化方式——RDB 快照和 AOF 日志。详细介绍了它们的工作原理、配置方法以及各自的优缺点,帮助读者根据具体需求选择合适的持久化方案。 ... [详细]
  • 本文详细介绍了在企业级项目中如何优化 Webpack 配置,特别是在 React 移动端项目中的最佳实践。涵盖资源压缩、代码分割、构建范围缩小、缓存机制以及性能优化等多个方面。 ... [详细]
  • 本文详细介绍了 RosPack 类的功能和用法,探讨了其在 ROS 系统中的重要作用。RosPack 类提供了类似于终端命令 rospack 的功能,能够方便地查询和管理 ROS 包的相关信息。 ... [详细]
author-avatar
初夏mx
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有