Type: unknown
Confidence:
Created:
Updated:
Tags:

type: concept status: active confidence: 0.95 created: 2026-04-17 updated: 2026-04-26 last_accessed: 2026-04-26 source_count: 3 tags: [技术, 研究, 计算理论, 社会科学] - 技术 - 研究 - 计算理论 aliases: - Functional Programming - 函数式程序设计 relates_to: - target: "LISP" type: caused_by confidence: 0.99 note: LISP 是历史上第一个函数式编程语言 - target: "John McCarthy" type: caused_by confidence: 0.95 note: 开创者 - target: "λ 演算" type: depends_on confidence: 0.95 note: 理论基础 - target: "John Backus" type: related_to confidence: 0.85 note: 1977年图灵奖演讲提倡函数式编程作为冯诺依曼范式的替代 - target: "FORTRAN" type: compares_to confidence: 0.85 note: FORTRAN 是命令式编程,函数式编程是另一种范式 - target: "Edsger Dijkstra" type: related_to confidence: 0.8 note: 晚年越来越倾向于函数式思维方式 - target: "结构化编程" type: extends confidence: 0.85 note: 函数式编程是比结构化编程走得更远的范式 - target: "丘奇" type: related_to confidence: 0.9 note: λ演算的发明者,为函数式编程提供理论基础 - target: "Church-Turing论题" type: related_to confidence: 0.85 note: λ演算与图灵机等价,为函数式编程提供理论支持 - target: "论可计算数及其在判定问题上的应用" type: theoretical_context confidence: 0.7 note: 图灵证明了λ演算与图灵机的等价性 supersedes: null


函数式编程

概述

函数式编程是一种编程范式,将计算视为数学函数的求值而非状态的改变。LISP(1960)是历史上第一个函数式编程语言,由 John McCarthy 基于 λ 演算设计。

关键内容

核心原则

LISP 的贡献

McCarthy 在1960年论文中确立的函数式编程核心概念: - 递归函数定义作为首选控制结构 - 条件表达式取代 goto 语句 - λ 表达式和高阶函数 - 程序作为数学函数的组合

语言谱系

从 LISP 出发的函数式语言谱系: - Scheme(1975)— 精简纯化 - ML(1973)和 Haskell(1990)— 静态类型 + 函数式 - Erlang(1986)— 函数式 + 并发 - Clojure(2007)— JVM 上的现代 LISP - JavaScript — 深受 Scheme 影响,支持闭包和高阶函数

现代影响

今天程序员在 JavaScript 中使用 map/filter/reduce、在 Python 中使用 lambda 函数、在 Java 中使用 Stream API 时,都在使用 McCarthy 在1960年确立的思想。

Backus 的图灵奖演讲

John BackusFORTRAN 之父)在1977年图灵奖演讲《Can Programming Be Liberated from the von Neumann Style?》中批评了命令式编程的根本局限,提出函数式编程作为替代方案,进一步推动了函数式编程运动。

与 Dijkstra 的关系

Edsger Dijkstra 在晚年越来越倾向于函数式的思维方式。从 Dijkstra 的视角来看,函数式编程是他思想的自然延伸——如果 goto 因为破坏可理解性而应该被消除,那么可变状态和不受控制的副作用同样破坏可理解性,也应该被限制。

来源

相关