内容简介:有了我们的驾照, 只要有可能, 我们就会把车开出来。每次旅行, 我们都变得越来越好, 信心也增强了。后来有一天, 我们不得不开别人的车, 否则我们的车终于放弃了幽灵, 我们不得不买了一辆新的。第一次在不同的车底开车是什么感觉?这就像第一次开车一样吗?连近在咫尺都没有。第一次, 都是那么的陌生。在那之前我们一直在车里, 但只是作为乘客。这次我们坐在驾驶座上。包含所有控件的那个。但当我们驾驶第二辆车的时候, 我们只是问自己几个简单的问题, 比如, 钥匙去哪里了, 灯在哪里, 你怎么用转向灯, 怎么调整侧镜.
迈出理解函数式编程思想的第一步是最重要的,同时也许是最难的。关于这一点,仁者见仁智者见智。
学车
当我们第一次碰车,我们痛苦并努力着,看起来很简单的操作自己上手的时候就变得比自己想象的难得多。尽管用父母的车经过多次练习,不把周围的路跑熟是不敢上高速路冒险的。但是经过不断练习和一些父母宁愿忘记的“心跳时刻”后,我们最终还是拿到了自己的驾照。
有了我们的驾照, 只要有可能, 我们就会把车开出来。每次旅行, 我们都变得越来越好, 信心也增强了。后来有一天, 我们不得不开别人的车, 否则我们的车终于放弃了幽灵, 我们不得不买了一辆新的。
第一次在不同的车底开车是什么感觉?这就像第一次开车一样吗?连近在咫尺都没有。第一次, 都是那么的陌生。在那之前我们一直在车里, 但只是作为乘客。这次我们坐在驾驶座上。包含所有控件的那个。
但当我们驾驶第二辆车的时候, 我们只是问自己几个简单的问题, 比如, 钥匙去哪里了, 灯在哪里, 你怎么用转向灯, 怎么调整侧镜.
在那之后,航行非常顺利。 但与第一次相比,为什么这次这么容易?
那是因为这辆新车非常像旧车。 它拥有汽车所需的所有基本功能,而且它们几乎都在同一个地方。
有些东西的实现方式不同,可能还有一些额外的功能,但我们第一次开车甚至第二次都没有使用它们。 最终,我们学到了所有的新功能。 至少我们关心的是那些。
学习编程语言和学车类似。第一次是非常困难的,但一旦你掌握了一门语言,后面学习其他的编程语言就会变得很容易。
当你第一次开始学习第二种语言时,你会问这样的问题:“我怎么创建模块?你怎么查找数组?什么是子字符串函数的参数?”
你有信心可以学习驾驭这种新语言,因为它会让你想起你的旧语言,或许还有一些新的东西可以让你的生活更轻松。
你的第一个宇宙飞船
无论你一生中开过一辆车还是几十辆车,想象一下你即将驾驶一艘宇宙飞船。
如果你要驾驶宇宙飞船,你不会指望你的驾驶能力对你有多大帮助。
你在开始训练的时候,会期望在太空中有非常不同的东西,而且飞行这个装置和在地面上驾驶是非常不同的。
物理上没有改变,只是你在同一个宇宙中导航的方式变了。
学习函数式编程亦是如此。你会预想所有的事情都会变得非常不同,并且你所知道的编程知识也不会相互转换。
编程就是思考的过程,而函数式编程将教你以不同的方式思考。甚至,你可能永远不会回到原先的思维方式。
忘掉你所知道的一切
人们喜欢说这句话,还是有点道理的。 学习函数式编程就像是从头开始。 虽不尽然,但确实有效。函数式编程中有很多与其他范畴相似的概念,但如果你打算必须 重新学习所有东西 ,这是最好的选择。
从正确的角度看,便会得到正确的预期;有了正确的预期,即使事情艰难之时也不会放弃。
作为程序员,你曾经做过的各种各样的事情,而现在使用函数式编程你什么也做不了。
就像,在汽车里,你习惯于倒车来离开车道。但是在宇宙飞船里,没有后退操作。现在你可能会想: “什么?没有后退?我怎么能在没有后退的情况下驾驶啊?!”
然而,事实证明,宇宙飞船能够在三维空间中操纵,因此你并不需要倒车操作。一旦你理解这一点,便不会再想念“倒车”了。事实上,在某天你会反过来想汽车的限制程度。
学习函数式编程需要一定的时间,请耐心点。
那么就让我们退出命令式编程的冷酷世界,轻轻地进入函数编程的温泉。
在这篇由多个部分组成的文章中,我们将介绍一些函数式编程概念,这些概念将在您学习第一种函数式语言之前对您有所帮助。或者,如果你已经尝试过了,这将有助于完善你的理解。
请不要着急。从这一点开始,花点时间阅读并理解代码示例。你甚至可以在每节课结束后停止阅读,让你的想法深入理解。然后再回来完成
最重要的是你要理解。
Purity
当函数式 程序员 谈到Purity时,他们指的是纯函数(Pure Functions)。
纯函数是非常简单的函数。它们仅对输入参数进行操作。
这是Javascript中的一个纯函数的示例:
var z = 10; function add(x, y) { return x + y; }
注意 add 函数不会修改 z 变量。它不会从z中读取数据,也不会向z写入数据。它仅读取x和y,其输入值,并返回二者相加起来的结果。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Base64 编码/解码
Base64 编码/解码
URL 编码/解码
URL 编码/解码