对函数式编程语言的理解

1.什么是函数式语言?

函数式语言(functional language)一类程序设计语言,是一种非冯·诺伊曼式的程序设计语言。函数式语言主要成分是原始函数、定义函数和函数型。这种语言具有较强的组织数据结构的能力,可以把某一数据结构(如数组)作为单一值处理;函数式编程语言最大的特点就是函数可以作为参数、结果也可以是函数,这种定义的函数称为高阶函数,程序就是函数,程序作用在结构型数据上,产生结构型结果,从根本上改变了冯·诺伊曼式语言的“逐词”工作方式。

函数式编程(英语:functional programming)或称函数程序设计,又称泛函编程,是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。函数编程语言最重要的基础是λ演算(lambda calculus)。而且λ演算的函数可以接受函数当作输入(引数)和输出(传出值)。

2.函数式语言有哪些?

常见的函数式编程语言有Haskell 、 OCaml 、coljure、scala,其中Bloomberg 和谷歌、Facebook就是用 Haskell 函数式编程语言进行垃圾过滤。

3.函数式编程语言为什么会流行起来?

在函数式编程中,由于数据全部都是不可变的,所以没有并发编程的问题,是多线程安全的。可以有效降低程序运行中所产生的副作用,对于快速迭代的项目来说,函数式编程可以实现函数与函数之间的热切换而不用担心数据的问题,因为它是以函数作为最小单位的,只要函数与函数之间的关系正确即可保证结果的正确性。

原因一:函数式编程语言的表达方式更加符合我们日常生活中的语法、代码的可读性更强,实现同样的功能函数式编程相比较于面向对象编程所需要的代码更加少、代码更加简洁清晰。

原因二:由于函数式编程语言更加简洁的特点从而广泛应用于科学研究中,科研项目对代码的工程化要求低,开发速度快从而函数式编程语言更加高效。

函数式编程语言的缺点:

由于函数式编程语言的数据都是不可变的所以所有的变量在程序运行期间都一直存在,从而非常占用计算机的运行资源,此外函数式编程对于程序开发人员的要求很高,如果开发人员对函数式编程理解不够深刻那么开发出的程序就会出现很大的问题。

原文地址:https://www.cnblogs.com/yuanchao-blog/p/10439990.html

时间: 2024-08-19 09:43:50

对函数式编程语言的理解的相关文章

函数式编程语言

最近一段时间总是听到或者看到有人谈论“函数式编程”,第一次接触是在大概半年前的一次沙龙中,当时听人讲的时候,心想这有什么难理解的,函数式编程,函数嘛,那就是C呀,C++放在首位的是对象,面向对象编程,C放在首位的不是函数吗,那就是函数式编程啊,整个经验交流迷迷糊糊的,只记住了个lambda.但是在后来陆陆续续还是听到了这个名词,而且也知道并不是我理解的那个样子,C不是“函数式编程”,而是“面向过程编程”,是“命令式编程”,但是还不是很理解到底是怎么区分的.于是周末翻阅了一下资料,稍作“概念层次”

优雅的函数式编程语言

快排,任何算法基础教程里必讲的最后一种排序算法,我这个差生直到毕业也没能用java或c默写出来一个快排.我模糊的直到他是一种"分而治之"的思想,可是一写到分而治之的时候就脑子里一片浆糊,搞不清分到哪了.那冗长的代码我想死记硬背也背不下来.重温一下噩梦,贴一个网上搜出来的java实现的快排: public int getMiddle(Integer[] list, int low, int high) { int tmp = list[low]; while (low < high

[原创译书] JS函数式编程 2.1 函数式编程语言

?? Functional Programming in Javascript 主目录第二章 函数式编程基础 函数式编程语言 函数式编程语言是那些方便于使用函数式编程范式的语言.简单来说,如果具备函数式编程所需的特征, 它就可以被称为函数式语言.在多数情况下,编程的风格实际上决定了一个程序是否是函数式的. 是什么让一个语言具有函数式特征? 函数式编程无法用C语言来实现.函数式编程也无法用Java来实现(不包括那些通过大量变通手段实现的近似函数式编程). 这些语言不包含支持函数式编程的结构.他们是

Frege-基于JVM的类Haskell纯函数式编程语言

Frege是一门受Haskell语言启示而设计的纯函数式编程语言.Frege程序会被编译为Java,并执行于JVM上.它与Haskell是如此的类似.以至于有人称它为JVM上的Haskell.取Frege这个名字是为了纪念德国数学家.逻辑学家.哲学家Gottlob Frege. 语言的主要特色 纯函数式编程语言 继承了函数式编程语言Haskell的精神.默认就具有不变性(immutability). 执行于JVM之上 Frege程序编译为Java bytecode.执行于JVM(Java 7+)

Scala与Clojure函数式编程语言的逆袭

编程世界就好比江湖,各种技术与思想有如各种内外家功夫在历史的舞台上纷呈登场,各领风骚.如今,自C.C++传承而来的以Java为代表的命令式语言一派可谓如日中天.门徒万千.多年来,这几门语言一直占据着TIOBE编程语言排行榜前几名,而很多"没落"的语言却在最近这几十年里逐渐淡出了人们的视线.在命令式语言中,随着面向对象编程的流行而兴起的对设计模式的探讨始终是OO程序员群体中的热门话题,设计模式的相关问题也一度成为面试官遴选候选者的硬性指标. 然而,江湖上逐渐出现了一种说法,"有

函数式编程语言LISP,python,haskell,clojure

说说我自己的背景吧,我是个半吊子的程序员,做任何事情喜欢比较了解然后再尝试,我接触过很多语言,大多数都把它当成工具来使用 我现在的工作大部分主要在于数据挖掘与机器学习方面,也学习web开发,我第一个拿来工作的语言是python,我是从那里得知函数式编程的概念的 说起lisp据说python就是模仿的lisp,而得知这个语言是从黑客与画家这本书中得知的,据说是一个特别值得尝试的语言,由于作者说如果年龄超过25岁,最好不要尝试学习它,我明年就本命年了,看来应该试着尝试一下了 在之前面临招工作的时候曾

新函数式编程语言将简化GPU应用开发

哥本哈根大学计算机科学系的研究人员最近发布了开源函数编程语言 Futhark,为 GPU 应用程序生成C和 Python 代码,加速机器学习和数学密集类程序的开发.绝大多数 GPU 编程使用到框架如 OpenCL 或 CUDA,两个框架都使用C或 C++ 方言去生成运行在 GPU 上的代码. Futhark 是用 Haskell 开发的,语法上也类似 Haskell 或 Standard ML 语言,能自动生成能整合在现有应用中的 C 和 Python 代码.开发者声称这种新语言简化了使用并行计

关于计算机编程语言的理解

语言分 底层语言     机器语言 汇编语言         编译 高级语言        c++     java   php   python 高级语言  -------   编译器 ---------  汇编语言  --------解释器   -----------机器语言 总的来说 一.编译型语言 定义:指用专用的编译器,针对特定的操作平台(操作系统)将某种高级语言源代码一次性翻译成可被硬件平台直接运行的二进制机器码(具有操作数,指令.及相应的格式),这个过程叫做编译:编译好的可执行性文

理解函数式编程

相信大家平时或多或少听过不少关于"函数式编程" (FP)相关的词语,有些Geek经常吹捧函数式的优点或者特性比如:纯函数无副作用.不变的数据.高阶函数.流计算模式.尾递归.柯里化等等,再加上目前的函数式理论越来越多的应用于工程中,OCaml,clojure, scala等FP语言日渐火爆.本编文章,笔者准备带领大家深入理解函数式编程的相关理论概念. 定义 首先引用维基百科对函数式编程的解释:在计算机科学里,函数式编程是一种编程范式,它将计算描述为表达式求值并避免了状态和数据改变.函数式