听说你想成为一名函数式编程工程师(第一部分)

栏目: 编程语言 · 发布时间: 5年前

内容简介:有了我们的驾照, 只要有可能, 我们就会把车开出来。每次旅行, 我们都变得越来越好, 信心也增强了。后来有一天, 我们不得不开别人的车, 否则我们的车终于放弃了幽灵, 我们不得不买了一辆新的。第一次在不同的车底开车是什么感觉?这就像第一次开车一样吗?连近在咫尺都没有。第一次, 都是那么的陌生。在那之前我们一直在车里, 但只是作为乘客。这次我们坐在驾驶座上。包含所有控件的那个。但当我们驾驶第二辆车的时候, 我们只是问自己几个简单的问题, 比如, 钥匙去哪里了, 灯在哪里, 你怎么用转向灯, 怎么调整侧镜.

迈出理解函数式编程思想的第一步是最重要的,同时也许是最难的。关于这一点,仁者见仁智者见智。

学车

当我们第一次碰车,我们痛苦并努力着,看起来很简单的操作自己上手的时候就变得比自己想象的难得多。尽管用父母的车经过多次练习,不把周围的路跑熟是不敢上高速路冒险的。但是经过不断练习和一些父母宁愿忘记的“心跳时刻”后,我们最终还是拿到了自己的驾照。

有了我们的驾照, 只要有可能, 我们就会把车开出来。每次旅行, 我们都变得越来越好, 信心也增强了。后来有一天, 我们不得不开别人的车, 否则我们的车终于放弃了幽灵, 我们不得不买了一辆新的。

第一次在不同的车底开车是什么感觉?这就像第一次开车一样吗?连近在咫尺都没有。第一次, 都是那么的陌生。在那之前我们一直在车里, 但只是作为乘客。这次我们坐在驾驶座上。包含所有控件的那个。

但当我们驾驶第二辆车的时候, 我们只是问自己几个简单的问题, 比如, 钥匙去哪里了, 灯在哪里, 你怎么用转向灯, 怎么调整侧镜.

在那之后,航行非常顺利。 但与第一次相比,为什么这次这么容易?

那是因为这辆新车非常像旧车。 它拥有汽车所需的所有基本功能,而且它们几乎都在同一个地方。

有些东西的实现方式不同,可能还有一些额外的功能,但我们第一次开车甚至第二次都没有使用它们。 最终,我们学到了所有的新功能。 至少我们关心的是那些。

学习编程语言和学车类似。第一次是非常困难的,但一旦你掌握了一门语言,后面学习其他的编程语言就会变得很容易。

当你第一次开始学习第二种语言时,你会问这样的问题:“我怎么创建模块?你怎么查找数组?什么是子字符串函数的参数?”

你有信心可以学习驾驭这种新语言,因为它会让你想起你的旧语言,或许还有一些新的东西可以让你的生活更轻松。

你的第一个宇宙飞船

无论你一生中开过一辆车还是几十辆车,想象一下你即将驾驶一艘宇宙飞船。

如果你要驾驶宇宙飞船,你不会指望你的驾驶能力对你有多大帮助。

你在开始训练的时候,会期望在太空中有非常不同的东西,而且飞行这个装置和在地面上驾驶是非常不同的。

物理上没有改变,只是你在同一个宇宙中导航的方式变了。

学习函数式编程亦是如此。你会预想所有的事情都会变得非常不同,并且你所知道的编程知识也不会相互转换。

编程就是思考的过程,而函数式编程将教你以不同的方式思考。甚至,你可能永远不会回到原先的思维方式。

忘掉你所知道的一切

人们喜欢说这句话,还是有点道理的。 学习函数式编程就像是从头开始。 虽不尽然,但确实有效。函数式编程中有很多与其他范畴相似的概念,但如果你打算必须 重新学习所有东西 ,这是最好的选择。

从正确的角度看,便会得到正确的预期;有了正确的预期,即使事情艰难之时也不会放弃。

作为程序员,你曾经做过的各种各样的事情,而现在使用函数式编程你什么也做不了。

就像,在汽车里,你习惯于倒车来离开车道。但是在宇宙飞船里,没有后退操作。现在你可能会想: “什么?没有后退?我怎么能在没有后退的情况下驾驶啊?!”

然而,事实证明,宇宙飞船能够在三维空间中操纵,因此你并不需要倒车操作。一旦你理解这一点,便不会再想念“倒车”了。事实上,在某天你会反过来想汽车的限制程度。

学习函数式编程需要一定的时间,请耐心点。

那么就让我们退出命令式编程的冷酷世界,轻轻地进入函数编程的温泉。

在这篇由多个部分组成的文章中,我们将介绍一些函数式编程概念,这些概念将在您学习第一种函数式语言之前对您有所帮助。或者,如果你已经尝试过了,这将有助于完善你的理解。

请不要着急。从这一点开始,花点时间阅读并理解代码示例。你甚至可以在每节课结束后停止阅读,让你的想法深入理解。然后再回来完成

最重要的是你要理解。

Purity

当函数式 程序员 谈到Purity时,他们指的是纯函数(Pure Functions)。

纯函数是非常简单的函数。它们仅对输入参数进行操作。

这是Javascript中的一个纯函数的示例:

var z = 10;  
function add(x, y) {  
    return x + y;  
}

注意 add 函数不会修改 z 变量。它不会从z中读取数据,也不会向z写入数据。它仅读取x和y,其输入值,并返回二者相加起来的结果。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

颠覆营销

颠覆营销

陈杰豪、车品觉 / 中信出版社 / 2016-2 / 49.00元

对于大数据未来趋势的判断 车品觉 光阴荏苒,2015年在跌跌荡荡中成了过去式,对于大数据的产业来说过去这一年冒出了很多新的名词。但在我看来,真正的大数据应用和市场才刚刚开始萌芽,所以我希望大家先认清一个关键,那就是所有的数据都是基于应用而产生,而数据经过釆集及整合后又再落实到自身或其他应用情境中,大数据的创新价值可以来自新连接的数据、算法或者产品本身。 过去两年大数据的成长和智能......一起来看看 《颠覆营销》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码