托马斯.库尔提出“科学的革命”的范式论后,Robert Floyd在1979年图灵奖的颁奖演说中使用了编程范式一词。
编程范式,简单来说,就是编写命令的方法。
众所周知,一门语言的思想建立在其编程范式之上。最知名的三种范式分别是面向对象编程、指令式编程和函数式编程。它们并没有优劣之分,重要的是使用正确的工具来完成工作。
其中,函数式编程是大多数软件工程师不太熟悉的一个概念。
函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambda calculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。
和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。
和过程化编程相比,函数式编程里函数的计算可随时调用。
曾用于编写计算机程序的第二种编程语言Lisp实际上属于函数式范式。Lisp最初创建时受到阿隆佐·邱奇的lambda演算的影响,用来作为计算机程序实用的数学表达。Scheme作为Lisp一种小语种的变体,它是可以被编译成机器码的。也就是说,它的运行效率更高。在Lisp和Scheme中是不区分数据与操作的。
LISP素来奉仰的哲学思想是“微核心+高扩展性”,Scheme也将这一特点发挥到了极致。Scheme内置的关键字(keyword)少得可怜,就连大于小于、加减乘除等操作都是以函数的形式出现。甚至可以夸张一点说,只要有define关键字与括号,就可以写出所有程序。不过,这种风格的一个副作用是会在程序中出现大量的括号,所以也有人把LISP戏称为“一大堆烦人的、教人看不懂的括号”。
函数式编程通过简化编程定义,优先考虑数据的不变性和数学计算,而不是像传统编程去修改存储在类构造函数中的对象。在现代函数式编程中,这种想法有点狭隘,但未必是坏事。函数式语言的可变性给函数式编程带来很多功能,可以说函数式编程非常实用。
考虑到这一点,函数式编程并不局限于函数式语言,如Python具有函数性特征。虽然函数式编程与传统编程极其不同,但是似乎函数式和面对对象范式与用于数据科学的大多数语言比较接近。
网友评论