为何编程缓存复用技术被命名为Memoization而非memorization?
为什么编程中的缓存技术叫Memoization而非memorization?
Memoization是一种编程技术,会存储并复用开销较大的函数调用结果,避免重复计算以提升性能。
Memoization示例
import java.util.HashMap; import java.util.Map; public class Fibonacci { private static Map<Integer, Integer> memory = new HashMap<>(); public static void main(String[] args) { int result = calculateFibonacci(5); System.out.println("Fibonacci number at position 5 is: " + result); } private static int calculateFibonacci(int n) { if (n <= 1) { return n;} if (memory.containsKey(n)) { return memory.get(n); } int fib = calculateFibonacci(n - 1) + calculateFibonacci(n - 2); memory.put(n, fib); return fib; } }
日常语境中这类"存储并复用结果"的行为被称为memorization,但编程领域特意用去掉字母"r"的Memoization来命名这项技术,核心原因如下:
- 明确术语边界:该术语由人工智能先驱Donald Michie在1968年创造,他刻意省略了"r",目的是将这个编程技术和日常的"记忆(memorization)"概念做明确区分——它不是泛指的记忆行为,而是针对函数计算结果的、有固定规则的缓存机制。
- 打造专属技术命名:通过修改拼写,让
Memoization成为计算机科学领域的专属术语,避免和日常词汇混淆,方便从业者精准指代这项特定技术。
内容的提问来源于stack exchange,提问作者Akiner Alkan
相关产品推荐
相关产品推荐

