如何编写高质量的 JS 函数(3) --函数式编程[理论篇]

 【编写高质量函数系列】中,

如何编写高质量的 JS 函数(1) -- 敲山震虎篇》介绍了函数的执行机制,此篇将会从函数的命名、注释和鲁棒性方面,阐述如何通过 JavaScript 编写高质量的函数。

 《如何编写高质量的 JS 函数(2)-- 命名/注释/鲁棒篇》从函数的命名、注释和鲁棒性方面,阐述如何通过 JavaScript编写高质量的函数。

【 前 言 】

这是编写高质量函数系列文章的函数式编程篇。我们来说一说,如何运用函数式编程来提高你的函数质量。

函数式编程篇分为两篇,分别是理论篇和实战篇。此篇文章属于理论篇,在本文中,我将通过背景加提问的方式,对函数式编程的本质、目的、来龙去脉等方面进行一次清晰的阐述。

写作逻辑

通过对计算机和编程语言发展史的阐述,找到函数式编程的时代背景。通过对与函数式编程强相关的人物介绍,来探寻和感受函数式编程的那些不为人知的本质。

下面列一个简要目录:

一、背景介绍

计算机和编程语言的发展史

二、函数式编程的 10 问

为什么会有函数式语言?函数式语言是如何产生的?它存在的意义是什么?

lambda 演算系统是啥?lambda 具体说的是啥内容?lambda 和函数有啥联系?为啥会有 lambda 演算系统?

函数式编程为什么要用函数去实现?

函数式语言中,或者在函数式编程中,函数二字的含义是什么?它具备什么能力?

函数式编程的特性关键词有哪些?

命令式和函数式编程是对立的吗?

按照 FP 思想,不能使用循环,那我们该如何去解决?

抛出异常会产生副作用,但如果不抛出异常,又该用什么替代呢?

函数式编程不允许使用可变状态的吗?如何没有副作用的表达我们的程序?

为什么函数式编程建议消灭掉语句?

三、JavaScript 函数式编程的 5 问

为什么函数式编程要避免使用 this

JavaScript 中函数是一等公民, 就可以得出 JavaScript 是函数式语言吗?为什么说 JS 是多态语言?

为什么 JS 函数内部可以使用 for 循环吗?

JS 函数是一等公民是啥意识?这样做的目的是啥?

用 JS 进行函数式编程的缺点是什么?

四、总结

函数式编程的未来。

简要目录介绍完啦,大家请和我一起往下看。

PS:我好像是一个在海边玩耍的孩子,不时为拾到比通常更光滑的石子,或更美丽的贝壳而欢欣鼓舞,而展现在我面前的是完全未探明的的真理之海。

【 正 文 】 计算机和编程语言的发展史

计算机和编程语言的发展史是由人类主导的,去了解在这个过程中起到关键作用的人物是非常重要的。

下面我们一起来认识几位起关键作用的超巨。

一、戴维·希尔伯特

如何编写高质量的 JS 函数(3) --函数式编程[理论篇]

点击图片介绍: 戴维·希尔伯特

希尔伯特被称为数学界的无冕之王 ,他是天才中的天才。

在我看来,希尔伯特最厉害的一点就是:他鼓舞大家去将证明过程纯机械化,因为这样,机器就可以通过形式语言推理出大量定理。

也正是他的坚持推动,形式语言才逐渐走向历史的舞台中央。

二、艾伦·麦席森·图灵

如何编写高质量的 JS 函数(3) --函数式编程[理论篇]

点击图片介绍: 艾伦·麦席森·图灵

艾伦·麦席森·图灵被称为计算机科学之父。

我认为,他最伟大的成就,就是发明了图灵机:

如何编写高质量的 JS 函数(3) --函数式编程[理论篇]

上图所示,就是图灵机的模型图。

这里我们注意一点:从图中,我们会发现,每个小方格可存储一个数字或者字母。这个信息非常重要,大家可以思考一下。

PS: 等我介绍 冯·诺依曼 的时候,就会明白它们之间的联系。

三、阿隆佐·邱奇

如何编写高质量的 JS 函数(3) --函数式编程[理论篇]

点击图片介绍: 阿隆佐·邱奇

阿隆佐·邱奇,艾伦·麦席森·图灵的博导。

他最伟大的成就,就是:发明了 λ(lambda) 演算。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydpjd.html