本期沙龙浅谈函数式编程

Posted 西邮Linux兴趣小组

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了本期沙龙浅谈函数式编程相关的知识,希望对你有一定的参考价值。

【本期沙龙】浅谈函数式编程

本次沙龙由小组16级成员娄泽豪同学主持,本期沙龙主题为“浅谈函数式编程”,大家可以通过点击左下角原文链接下载本期沙龙的PPT。


我们欢迎所有对这方面感兴趣的同学带着你的问题和观点,与我们一起探讨交流,相互学习,共同进步。

常见的编程范式

命令式编程


强调计算机每一步应该做什么,怎么做。目前,大部分的流行语言的主流编程范式都是命令式编程。例如: C、 Java


声明式编程


强调计算机最终应当给语言使用者什么样的结果。这些语言一般有其专门的应用场景。例如: SQL、 Prolog。


函数式编程


给予函数更高的地位,要求“变量不可变”,“函数无副作用”等。目前很多传统的命令式语言都已经开始具有一定的函数式编程能力,例如: C++11、 Java8就引入了Lambda表达式。常见的函数式语言有: Lisp、 Haskell、 Scala等。


其他的编程范式


不仅仅限于这种分类方式,面向对象编程、面向过程编程也是重要的编程范式。

探秘函数式编程

绑定:变量值不变

表达式:“语句”都是表达式

高阶函数:像“变量”一样使用函数

集合上的高阶函数:函数式编程的利器

闭包:“代码生成器”

柯里化: 数学化的语言技法

部分施用:减少重复的传参

其他功能:记忆化、惰性求值、模式匹配

从函数式编程中汲取精华

不必学习新语言


正如前面所说,传统语言也变得更加函数式起来, Java 8提供了集合上一些高阶函数, C++ 11也开始支持Lambda表达式。这些都让你的代码变得更加简洁优雅。


匿名函数代替仅出现一次的函数


在Java 8以及C++ 11以后的版本,此两门语言开始支持Lambda表达式,从而提供了匿名函数特性。在使用需要提供函数指针作为辅助参数的函数,不再需要另行声明。


使用Lambda表达式减少命名空间污染


为了使算法清晰明确,有时解决某个问题的算法可能需要多个函数,但提供最终结果的函数仅仅有其中一个。我们可以通过Lambda表达式将辅助函数绑定到函数内部的函数指针上,从而使辅助函数不再对外暴露。


高阶函数代替重复部分


即使是C语言中,也可以使用函数指针来模拟高阶函数的运作,C标准库中利用了高阶函数实现了很多函数。


减少代码中不必要的可变量


代码中的可变量是影响多线程程序效率的一大重要因素,如果尽可能的减少这部分的内容,既使代码更加清晰,也使代码除错更容易,同时减少了线程间访问共享数据时用在加锁解锁上的时间。


处理高并发: Akka & Actor


Akka是一个用Scala编写的库,用于简化编写容错的、高可伸缩性的Java和Scala的Actor模型应用。

【本期沙龙】浅谈函数式编程
【本期沙龙】浅谈函数式编程
【本期沙龙】浅谈函数式编程

2017年10月15日 19:00

【本期沙龙】浅谈函数式编程

西安邮电大学 东区

教学楼东北 FZ118

以上是关于本期沙龙浅谈函数式编程的主要内容,如果未能解决你的问题,请参考以下文章

浅谈Java 8的函数式编程

浅谈函数式编程与大数据

浅谈python函数式编程

技术浅谈MapReduce 与函数式编程

浅谈Kotlin中集合和函数式API完全解析-上篇

技术分享浅谈函数式编程 - 史原杰