代码的灵魂—编程范式

705 阅读5分钟
开局甜妹镇楼

编程范式,相信很多小伙伴都听过这个概念,但如果真要解释什么是编程范式,大概就说不上个一二三了,好像这个东西除了在大学的软件工程课本出现过外,在我们日常的业务开发中几乎看不到它的影子,看起来它并不是一个重要的东西,所以我们总是忽略它,就像一个东西如果我们经常用不到,也就忽视了它的存在,但它真的不重要么,它是一个可有可无的东西么,如果是有用的,那为什么我们从没用过,还是说我们曾在不知不觉中用过它?如果是没用的,那为什么又会有这个东西?本着这些好奇,我想探究一下什么是编程范式。

编程范型、编程范式或程序设计法(英语:Programming paradigm),是指软件工程中的一类典型的编程风格。常见的编程范型有:函数式编程、指令式编程、过程式编程、面向对象编程等等。

上述是维基百科对编程范式的定义,通过该定义,可以了解到,编程范式、编程范型是同一个东西,也叫程序设计方法,也即所谓编程范性就是一种编程的设计方法,一种编程的设计理念,或者说一种编程的风格。

到这里我们知道了编程范式,其实是一种理念,一个抽象的概念,是形而上的东西,或者说是一个道。我们继续再看维基百科对编程范式的进一步解释:

编程范型提供并决定了程序员对程序执行的看法。例如,在面向对象编程中,程序员认为程序是一系列相互作用的对象,由于方法论的不同,面向对象编程又分为基于类编程和基于原型编程,而在函数式编程中一个程序会被看作是一个无状态的函数计算的序列。

“编程范型提供并决定了程序员程序执行的看法。”这句话的意思更直白的说明了编程范式是一个东西,刚刚说的编程范式是一种理念或设计方法,其实还不够通俗,更通俗的说法是,编程范式其实就是在我们对程序执行的一种看法。

看法两个字一下子就让我从代码的虚拟世界里跳出到现实的真实世界里,在现实世界,我们每个人都是自己人生的主角,我们亲手编织和打造自己的生活,我们的生活如何取决于我们如何对待生活,也就是我们如何看待生活中的事情,亦即我们对生活秉持着怎样的理念,而这其实就是价值观。我们的价值观,或者说我们的信念,我们的思想,决定了我们对事物的看法,进而指导我们如何展开行动,而行动最终改变我们生活的具体样貌。也就是说,价值观(理念)催生看法,看法导致行动,行动刻画人生。

同样的回到代码世界,将编程范式回到我们人自身的概念上,那么编程范式本质上就是作为在代码世界里开发者角色的我们的一种价值观,只不过这种价值观不是针对人生的各种事物的,而是针对代码世界里的各种代码,各种程序的,这是一种编码价值观,或者程序价值观。

那么知道了编程范式是一种编程价值观后,对我们有什么帮助呢,其实想想我们的人生就知道了,一个人的价值观决定了他奉行怎样的生活理念,绝大多数人都没有一个清晰的价值观,所以导致了他们的人生只是一个个盲目的偶然,就像是没有指南针的帆船,最终迷失在大海,看似在前行,但始终达不到自己的目的地,或者说对于没有价值观的人来说,他们连目的的都没有(大多数人都是这样,根本没有人生的目标),只是随波逐流罢了。

回到代码世界也是一样的,如果我们没有一个清晰编程价值观,那么将导致我们的程序只是一堆代码的耦合,通过屎山的形式堆砌到了终点,或者都堆砌不到就崩溃了,我们只是在盲目的写代码,去实现程序,看似写了很多代码也实现了效果,但他们只是一个看起来不会出错的冗余组合,一个毫不优雅甚至是丑陋的大杂烩组合。

这样的代码是没有灵魂的,它是死的,它运行起来了也只是看着是活的,就像有些人其实二十岁就死了,八十岁才埋一样。
不论是人生价值观,还是编程价值观,他们都看不见摸不着,但不代表它不存在,它是一种需要感悟,总结体会的东西,它不是实在的,它是无形的,它是一种大道无形,它是一个总体的设计方针,一个总的思想。

我们应该为我们的程序设计注入这种思想,这种思想引导着我们的代码如何去组织和运行,如何让程序变得更优雅,更健硕,这也就是我们的编程价值观,所谓的编程范式也即代码的灵魂。