原文链接:http://armstrongonsoftware.blogspot.com/2012/06/wheres-my-cheese.html
我的 奶酪在哪里?
命令式编程 是相当困难的 。
主要的问题是 ,一旦你 把东西放到一个你希望能够找到它的 地方 。
“ 咳 , 谁动了我 的 奶酪 ?” ,你会想 。
如果你把 一大块 奶酪 在冰箱里, 如果你能在放的地方找到 它,这很好 。 你 把东西放一格 地方 ,为的是后来能够找到它 。在 编程语言 方面 , 这 可以归结为 变量 的概念 。
在 命令式编程 语言 中 ,变量 是你放 东西 的地方的名称 。
如果我说
int X;
在C语言中 , 这意味着 有一个地方 名为x , 我可以把 一个 整数 放这儿。
X = 7 ;
意味着 把 整数7 放到名为x的 地方 。 在 我 把 7放到我的X里后 , 我 真的很喜欢它 永远呆在那里 。
“ 为什么 永远呆着? ”我可以 听到 你 的 要求 。
他 说 : “ 因为所有其他 的替代都是最糟的 ”
如果我可以 改变x , 然后我的程序 将 是 非常难以理解, x的值 可能 会 改变很多次 ,我得 了解 完整的历史记录 ,以 计算出 这个值 。
更糟的是, 在并行的 世界 会发生什么 ,假设 几个平行 的 进程可以 在任何时候 改变 x的值 - 这是可能发生 的 事情 - 可能 真的很难理解 。
函数式编程 语言 不会 有这个问题。 如果你说 x是 7 , 那么 它 永远是7 。
这 是非常好的。
相信我。
ກ