左耳听风 - 编程的本质「读书打卡 day 10」
你好!我是 Java 工程师蔡姬,此蔡姬非彼菜鸡!很高兴和大家一起共读陈皓老师的《左耳听风》一书,并在这里分享自己的感悟。
我的读书打卡将会分为两部分——笔记 + 打卡。
笔记部分,我会整理在读书过程中感悟比较深的内容,和你一起分享。
打卡部分,我会就一个点阐述个人的思考。
话不多说,让我们开始吧!
笔记
编程的本质包括逻辑(Logic)、控制(Control)和数据(Data)。逻辑是问题的本质,控制是解决问题的策略,数据是问题的表现形式。
有效地分离 Logic、Control 和 Data 是写出好程序的关键所在。
理解编程的本质
Algorithm + Data Structures = Programs
Algorithm = Logic + Control
所有的语言或编程范式都在解决以下问题:
控制是可以标准化的。例如:遍历数据、查找数据、多线程、并发、异步等都是可以标准化的。
由于控制需要处理数据,因此标准化控制需要标准化数据结构,我们可以通过泛型编程来解决这个问题。
控制还需要处理用户的业务逻辑。因此,我们可以通过标准化接口/协议来实现,我们的控制模式适配于任何逻辑。
如果你看过那些混乱不堪的代码,你会发现其中最大的问题是我们把 Logic 和 Control 纠缠在一起了。
为了实现编程中的各部分解耦,我们可以使用以下技术:
状态机
状态定义
状态变迁的条件
状态的行为
领域特定语言(Domain-Specific Language, DSL)
HTML
SQL
UNIX Shell Script
AWK
正则表达式
…
编程范式
面向对象:委托、策略、桥接、修饰、IoC/DIP、MVC……
函数式编程:修饰、管道、拼装
逻辑推导式编程:Prolog
打卡:结合你的经历,你觉得编程的本质是什么?
书中所说的编程的本质是逻辑、控制和数据。非常经典的拆解,充分利用下面这两个公式来组织程序,能极大程度上提高代码的质量。
Algorithm + Data Structures = Programs
Algorithm = Logic + Control
在这里,我愿意从另外一个角度拆解一下编程的本质:编程 = 抽象 + 实现。
对问题的抽象层级决定了程序的上限。对细节的实现水平决定了程序的下限。
在我看来,程序员最重要的能力之一,就是抽象问题的能力,这是真正的道。
以上便是今日份的笔记和打卡内容。欢迎你在评论区留言,我们一起探讨,共同进步。
我是 Java 工程师蔡姬,期待和伙伴们有更多交流和思维碰撞,明天见!
版权声明: 本文为 InfoQ 作者【Java 工程师蔡姬】的原创文章。
原文链接:【http://xie.infoq.cn/article/cc6c452a34a799d48f211edde】。文章转载请联系作者。
评论