一段话聊聊编程范式

一、引言

最近在部门学习分享 Spring,正好 Spring 的两大特性控制反转(IoC)(又名依赖注入(DI))和切面编程(AOP)用到了事件驱动式编程范式和切面式编程范式。

想了想怎么也得把 Spring 两大特性讲解一下,讲解这两大特性总是避免不了讲解这两个编程范式。说到编程范式,又怎么能不讲讲其他编程范式呢?

于是乎,我又打开了曾经看过的那本圣书《冒号课堂:编程范式与 OOP 思想》。

再看了一会儿之后,我又得到了不少领悟,这里兴致勃发,于是想要记录下来。

二、抽象

就像《冒号课堂:编程范式与 OOP 思想》的作者所说的那样:

抽象是前提,分解是方式,模块化是结果

我故而有感而发:

其实编程真的是件非常有趣的事情
你怎么看待程序你就会写出来什么
把它看成过程,那就是过程式范式
把它看成函数,那就是函数式范式
把它看成断言,那就是逻辑式范式
把它看成对象,那就是对象式范式
把它看成进程,那就是并发式范式

其实你晃一晃眼睛,脑袋一热
你还能把程序看成其他样子
把它看成算法,那就是泛型式范式
把它看成数据,那就是元编程范式
把它看成事件,那就是事件驱动式
你会感叹,你在如何看待程序
程序就在如何看待你

上面这段话有感而发,却都来自《冒号课堂:编程范式与 OOP 思想》作者的只言片语。

过程式,C 语言的面向过程编程;
函数式,Haskell、C++ 的 lambda 表达式;
逻辑式,Sql、HTML 等等语言;
对象式,Java、C++ 等等一系列的面向对象编程语言;
并发式,多进程、多线程、并发锁、线程池等等机制;
泛型式,C++ 的 STL 模板库,分离了算法与数据;
元编程,编译器就是最好的元编程范例,高级语言向低级语言的转化;
事件驱动式,libevent、大部分的 GUI 编程…

等等等等,感慨,编程范式离我们这么近,我们却又常常看不到他们:)

你可能感兴趣的:(随想)