学生:方,我理解不了数据不可变。
方:正常,我在学 Haskell 之前也理解不了。
学生:你的意思是,我要真正理解数据不可变,就必须学 Haskell?
方:也不一定非得是 Haskell,任何一门「支持函数式」且推崇「数据不可变」的编程语言都可以。
学生:为什么,用 JS 就理解不了吗?
方:可以这么说,至少我无法用 JS 来讲解函数式,可能是我水平不够。
学生:那么我学会 Haskell 就能理解数据不可变吗?
方:不是这样的。
学生:什么意思?
方:Haskell 能发挥「数据不可变」的优势,这样你才会觉得「数据不可变」是好东西。另外,数据不可变不需要理解,这只是一个约定。
学生:约定?
方:是的,你以前学的编程语言约定「数据可变」,并且向你展示了「数据可变」的优势。
学生:对啊,我觉得数据可变才是正常的。
方:其实不是,你只是先入为主而已。你没发现数据可变的短板而已。
学生:短板是什么?
方:你现在不会认为这些短板是短板,因为你还没有见过「数据不可变」的长处。
学生:我确实没见过它的好处。我觉得它多此一举。
方:这就是问题所在,你不会认同「无副作用」「引用透明」「纯函数」是优点,你目前认为这些概念是硬凑出来的概念,对不对。
学生:是……
方:你被目前的计算机教育给局限了。你知道面向对象、图灵机,但不知道邱奇数、lambda 演算、Y 组合子,但是他们是同样重要的。
学生:确实是第一次听说……
方:那么,你想学函数式吗?
学生:学完有什么好处?
方:没有,只是拓宽你的思维,你可能依然继续用 JS 或者 Java 编程,很少用到这些技术。那么,你还想学函数式吗?
学生:你要花多久讲完?
方:你学会并习惯指令式编程语言,比如 JS 或者 Java,用了多久?
学生:大半年。
方:那么你至少需要同样长的时间才能习惯函数式,而且习惯之后就回不去了。我可能讲一段话,你要花一周甚至更久才能理解。你还想学函数式吗?
学生:听起来弊大于利?
方:我保证利大于弊,只不过短期内看不到利而已,学完之后你对编程会有完全不同的认识,但工资不一定涨。
学生:好吧,那我试试看,想学一学。
方:我们明天开始第一课。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!