新闻详细
新闻当前位置:新闻详细

为什么这两年函数式编程又火起来了呢?,面向函数式编程,前端的必然发展趋势

专业编程培训机构——完成蜕变以后轻松拿高薪

电话+V: 152079-09430 ,欢迎咨询函数式编程具有哪些优点,[python实用课程],[C++单片机原理],[C#网站搭建],[Nodejs小程序开发],[ios游戏开发],[安卓游戏开发],[教会用大脑用想法赚钱实现阶层跨越]

一、为什么这两年函数式编程又火起来了呢?

函数式编程的好处
由于命令式编程语言也可以通过类似函数指针的方式来实现高阶函数,函数式的最主要的好处主要是不可变性带来的。没有可变的状态,函数就是引用透明(Referentialtransparency)的和没有副作用(NoSideEffect)。

一个好处是,函数即不依赖外部的状态也不修改外部的状态,函数调用的结果不依赖调用的时间和位置,这样写的代码容易进行推理,不容易出错。这使得单元测试和调试都更容易。

不变性带来的另一个好处是:由于(多个线程之间)不共享状态,不会造成资源争用(Racecondition),也就不需要用锁来保护可变状态,也就不会出现死锁,这样可以更好地并发起来,尤其是在对称多处理器(SMP)架构下能够更好地利用多个处理器(核)提供的并行处理能力。

1.根本原因是穆尔定律不适用。如果CPU不能制造任何量子物质,它基本上就是反应堆的核心。并行程序将大大提高效率,但程序的稳定运行也是一个问题。面向对象的处理,这是有难度的,例如,java,锁和各种同步。

2.由于追求效率、安全、稳定和速度,在多核CPU上并行编程会引起火灾。然后java也努力改革和进步,如功能的演变,如Java8,λ提供流,努力提高函数(方法)来的一等公民。流的透明度与非表达性揭示功能思维。虽然java的FP现在可能走在OOP的极端形式,它也表达了FP的优势和未来。

3.cpu的性能提升将体现在核数增加,这样并行的程序运行速度会越来越快。并行的程序的写法就是找出不能并行的地方,其他地方都尽量并行。

如果要这样写,最需要避免的事情就是赋值。函数式编程的本质就是,规避掉“赋值”

二、函数式编程好处都有啥

对于函数式编程,你可以学习一下haskell。

面向函数式编程,前端的必然发展趋势

原创2020-08-1723:18·程序员小汪vlog面向对象编程世间万物皆为对象

“世间万物皆为对象”,这是我们开始学习编程语言的时候,老师大都会讲的一句话,顾名思义,就是我们常说的面向对象编程。在现如今流行的编程语言中,大多数的编程语言都是面向对象编程的语言,还有一些面向过程的编程,如大学都会学的C语言。

c语言

虽然Javascript是一门脚本语言,但是它也不例外,也是一门面向对象的编程语言。从初期基于原型链的面向对象编程,到现在es6的class面向对象编程,越来越像Java、C#等强类型语言的面向对象。

函数式编程发展

Javascript经过多年的发展,衍生出了很多的类似Vue、React、Angular等优秀框架,这些框架经过多年的发展,进化得也比较快。它们都用相同的进化特点,都拥抱了函数式编程。

  • 比如近些年React推出了Hook函数式编程
  • importReact,{useState}from'react';functionExample(){//声明一个新的叫做“count”的state变量const[count,setCount]=useState(0);return(<div><p>Youclicked{count}times</p><buttononClick={()=>setCount(count+1)}>Clickme</button></div>);}
    函数式编程具有哪些优点

    如果使用传统的class方式,当业务变得复杂之后,组件之间共享状态变得频繁,此时组件将变得非常难以理解和维护,复用状态逻辑更是难上加难。使用hook之后,无论业务怎么变化,state只会存在自己的组件,对其它组件的影响非常的小。

  • 再比如前不久Vue发布了3.0版本的源码,3.0源码也弃用了基于原型链的面向对象编程,全部采用函数式编程。
  • exportfunctionreactive<Textendsobject>(target:T):UnwrapNestedRefs<T>exportfunctionreactive(target:object){//iftryingtoobserveareadonlyproxy,returnthereadonlyversion.if(target(targetasTarget)[ReactiveFlags.IS_READONLY]){returntarget}returncreateReactiveObject(target,false,mutableHandlers,mutableCollectionHandlers)}//Returnareactive-copyoftheoriginalobject,whereonlytherootlevel//propertiesarereactive,anddoesNOTunwraprefsnorrecursivelyconvert//returnedproperties.exportfunctionshallowReactive<Textendsobject>(target:T):T{returncreateReactiveObject(target,false,shallowReactiveHandlers,shallowCollectionHandlers)}...

    从这两大框架的向函数式编程的靠拢,说明函数式编程肯定是有可取之处,要不然也不会拼命使用函数式编程的。下面就来说一下函数式编程的好处吧。

    函数编程

    函数式编程的优点
  • 复用性
  • 这个优点是所有函数编程的优点,我们可以一个函数,多处调用。这也是尤雨溪在Vue3.0版本使用函数式编程的最重要的原因,使得Vue3.0版本的体积比Vue2.0版本的体积小很多,使得Vue3.0的性能也提升了不少。

  • 防污染
  • 这个优点也是函数式编程的一个比较重要的优点,函数与函数之间相互隔离,互不影响。其实这个早在Vue2.0就有所体现,如果你细心的话就应该发现为什么Vue2.0组件里面,通常data是一个函数,函数里面return出了一个对象。

    <template>\t<divclass="title">\t\t<h1>按钮被点击了{{count}}次</h1>\t\t<buttonv-on:click="count++">点击</button>\t</div></template><script>\texportdefault{\tname:'BtnCount',\tdata(){\treturn{\tcount:0\t}\t}\t}</script><stylescoped>\t.title{\t\tbackground-color:red\t}</style>

    那么当其它多个组件引用这个组件时,当某个引用这个组件的data数据发生变化时,其它引用这个组件的data数据是不会受任何影响的。

  • 可维护性
  • 由于每个函数只专注于它自己的功能,因此我们在后期的维护过程中也只是针对对应的功能函数,不会影响其它的功能。

    学习使人进步

    此外,函数式编程的优点还有很多,这里就简单的举这几个例子,如果大家还有更好的想法,可以留言,大家互相的探讨,共同进步。

    【FUTURE PROGRAMMING COURSE】尊享对接老板

    电话+V: 152079-09430

    机构由一批拥有10年以上开发管理经验,且来自互联网或研究机构的IT精英组成,负责研究、开发教学模式和课程内容。公司具有完善的课程研发体系,一直走在整个行业发展的前端,在行业内竖立起了良好的品质口碑。

    函数式编程具有哪些优点
    Copyright2023未知推广科技