什么是函数式编程?

#Innolight #Lisp

那么,究竟什么是“函数式编程”呢?

函数式编程不是一种框架或工具,而是一种编写代码的方式。在函数式编程中,我们强调使用函数作为“构建块”来编写代码。

你的程序定义为一个主函数,这个主函数又由其他函数定义,而这些函数又进一步由更底层的函数定义,直到最底层,这些函数只是语言的基本元素,如“数字”或“字符串”。

Pasted image 20250402103922.png|650

如果你正在阅读这篇文章,心想,“嗯?等等,难道不是每种语言都用函数来编写代码吗?”那么很好。这说明你在认真思考。

你说得对——每种编程语言都有函数。但函数式编程将其提升到了一个全新的层次?

Pasted image 20250402103949.png

为了理解我的意思,让我们回顾一下,从基础知识开始。

每个软件程序都有两个东西:

  1. 行为(程序做什么)
  2. 数据(数据,很好,数据)

当我们学习一种编程范式——比如函数式编程时,考虑该范式如何分别处理行为和数据通常很有帮助。

行为在函数式编程中完全通过函数来处理。函数是“自包含”的代码片段,用于完成特定任务。它们定义了一组可能的输入与一组可能的输出之间的关系——它们通常接收数据,处理它,并返回一个结果。一旦编写了一个函数,就可以反复使用它。

在函数式编程中,数据是不可变的——这意味着它不能被更改。与更改它们接收到的数据不同,函数式编程中的函数接收数据作为输入,并始终产生新的值作为输出。

函数和不可变数据是你在函数式编程中需要处理的唯一两种事物。为了使其更加简单,函数被当作数据一样对待。

换句话说,在函数式编程中,函数可以像数据一样轻松传递。你可以从常量和变量中引用它们,将它们作为参数传递给其他函数,也可以将它们作为其他函数的结果返回。

这是接近函数式编程时需要理解的最重要的事情。

Pasted image 20250402104142.png|650

通过将函数视为不比数据更特殊的东西,并且只使用不可变数据,我们在如何使用函数方面获得了更多的自由。

也就是说,它允许我们创建小型、独立的函数,这些函数可以重复使用并组合在一起来构建越来越复杂的逻辑。我们可以将任何复杂问题分解成更小的子问题,使用函数来解决它们,最后将它们组合起来解决更大的问题。

考虑到软件应用复杂性的不断增长,这种“积木式”的方法在保持程序简单、模块化和可理解性方面产生了巨大的影响。这也是为什么开发者们努力使他们的函数尽可能通用,以便它们可以组合起来解决大型、复杂的问题,并可以重复使用以加快后续程序的开发时间。

Pasted image 20250402104209.png|650

最终,函数在函数式编程中之所以如此强大,是因为它们遵循某些核心原则。

备注:翻译自Learning functional programming made me a 10x better developer