一段話聊聊編程範式

一、引言

最近在部門學習分享 Spring,正好 Spring 的兩大特性控制反轉(IoC)(又名依賴注入(DI))和切面編程(AOP)用到了事件驅動式編程範式和切面式編程範式。

想了想怎麼也得把 Spring 兩大特性講解一下,講解這兩大特性總是避免不了講解這兩個編程範式。說到編程範式,又怎麼能不講講其他編程範式呢?

於是乎,我又打開了曾經看過的那本聖書《冒號課堂:編程範式與 OOP 思想》。

再看了一會兒之後,我又得到了不少領悟,這裏興致勃發,於是想要記錄下來。

二、抽象

就像《冒號課堂:編程範式與 OOP 思想》的作者所說的那樣:

抽象是前提,分解是方式,模塊化是結果

我故而有感而發:

其實編程真的是件非常有趣的事情
你怎麼看待程序你就會寫出來什麼
把它看成過程,那就是過程式範式
把它看成函數,那就是函數式範式
把它看成斷言,那就是邏輯式範式
把它看成對象,那就是對象式範式
把它看成進程,那就是併發式範式

其實你晃一晃眼睛,腦袋一熱
你還能把程序看成其他樣子
把它看成算法,那就是泛型式範式
把它看成數據,那就是元編程範式
把它看成事件,那就是事件驅動式
你會感嘆,你在如何看待程序
程序就在如何看待你

上面這段話有感而發,卻都來自《冒號課堂:編程範式與 OOP 思想》作者的隻言片語。

過程式,C 語言的面向過程編程;
函數式,Haskell、C++ 的 lambda 表達式;
邏輯式,Sql、HTML 等等語言;
對象式,Java、C++ 等等一系列的面向對象編程語言;
併發式,多進程、多線程、併發鎖、線程池等等機制;
泛型式,C++ 的 STL 模板庫,分離了算法與數據;
元編程,編譯器就是最好的元編程範例,高級語言向低級語言的轉化;
事件驅動式,libevent、大部分的 GUI 編程…

等等等等,感慨,編程範式離我們這麼近,我們卻又常常看不到他們:)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章