关于functional program language 的理解

简单说,"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。

是一种编程典范,它将计算机运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。

函数编程支持函数作为第一类对象,有时称为闭包或者仿函数(functor)对象。

函数式编程的列子有:

1.  LISP 

2. Haskell

3.  Scheme

4.  Erlang

用函数式编程的优点:

1. 代码简洁,开发快速

函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度较快。

2. 接近自然语言,易于理解

函数式编程的自由度很高,可以写出很接近自然语言的代码。

3. 更方便的代码管理

函数式编程不依赖、也不会改变外界的状态,只要给定输入参数,返回的结果必定相同。

因此,每一个函数都可以被看做独立单元,很有利于进行单元测试(unit testing)和除错(debugging),以及模块化组合。

4. 易于"并发编程"

函数式编程不需要考虑"死锁"(deadlock),因为它不修改变量,所以根本不存在"锁"线程的问题。

不必担心一个线程的数据,被另一个线程修改,所以可以很放心地把工作分摊到多个线程,部署"并发编程"(concurrency)。

5. 代码的热升级

函数式编程没有副作用,只要保证接口不变,内部实现是外部无关的。

原文地址:https://www.cnblogs.com/hhhkai/p/10440910.html

时间: 2024-10-10 13:39:49

关于functional program language 的理解的相关文章

Function program language

历史 Lambda演算为描述函数及其评估提供了理论框架.它是一种数学抽象而不是编程语言 - 但它构成了几乎所有当前函数式编程语言的基础.等效的理论公式,组合逻辑,通常被认为比lambda演算更抽象,并且在发明之前.组合逻辑和lambda演算最初都是为了更清晰地接近数学基础而开发的. 一种早期功能性语言是Lisp,它是由John McCarthy在麻省理工学院(MIT)于20世纪50年代后期开发的IBM 700/7000系列科学计算机. Lisp首先介绍了函数式编程的许多范式特性,尽管早期的Lis

Apply Functional Programming Principles

Apply Functional Programming Principles Edward Garson FUNCTiONAL PROGRAMMiNG has recently enjoyed renewed interest from the mainstream programming community. Part of the reason is because emergent properties of the functional paradigm are well positi

《Pearls.of.Functional.Algorithm.Design》pdf

下载地址:网盘下载 Richard Bird takes a radically new approach to algorithm design, namely, design by calculation. These 30 short chapters each deal with a particular programming problem drawn from sources as diverse as games and puzzles, intriguing combinato

History of program

1950与1960年代 有三个现代编程语言于1950年代被设计出来,这三者所派生的语言直到今日仍旧广泛地被采用: Fortran (1955),名称取自"FORmula TRANslator"(公式翻译器),由约翰·巴科斯等人所发明: LISP,名称取自"LISt Processor"(枚举处理器),由约翰·麦卡锡等人所发明: COBOL,名称取自"COmmon Business Oriented Language"(通用商业导向语言),由被葛丽

十点提高编程技巧

1.学习一门新的编程语言(Learn a new programming language) 学习一门新的编程语言将有助于你开拓新的思维方式,特别是当你使用不熟悉的语言时,你将学习到很多种思维方法应用到语言中.而所学习到的新思维方式,你可以运用在你所熟知的语言中.甚至有时你会使用新学的语言进行你的重要项目. 提供学习经验包含: Lisp (Scheme is good), Forth, PostScript or Factor (stack-oriented programming langua

函数式编程(一) 认识“编程范式”和“函数”

编程范式(Programming paradigm) 编程范式指我们在编写程序解决问题的思路和视角.它提供了同时也决定了程序员对程序运行的看法.计算机编程中存在许多编程范式,如命令式编程.声明式编程.面向对象编程以及结构化编程等等.其中面向对象编程范式认为程序是由一系列相互作用的对象组成,而结构化编程范式认为程序采用子程序.代码区块.for循环以及while循环等结构组成.下面主要说明本篇文章将要讲到的命令式编程范式和声明式编程范式. 1)命令式编程(Imperative): 强调程序代码模拟电

作业一 统计软件简介与数据操作

spss软件 所属类别 : 软件 SPSS(Statistical Product and Service Solutions),"统计产品与服务解决方案"软件.最初软件全称为"社会科学"(SolutionsStatistical Package for the Social Sciences),但是随着SPSS产品服务领域的扩大和服务深度的增加,SPSS公司已于2000年正式将英文全称更改为"统计产品与服务解决方案",标志着SPSS的战略方向正

Improving Network Management with Software Defined Networking

Name of article:Improving Network Management with  Software Defined Networking Origin of the article:Kim H , Feamster N . Improving network management with software defined networking[J]. IEEE Communications Magazine, 2013, 51(2):114-119. ABSTRACT: N

关爱码农成长:关于写代码二三事

工作这么多年以来,一直从事软件相关领域,即使担任主管职务,也一直对技术充满热情.写代码写了这么多年,多少有些体会.我把自己对写代码这份工作的心得写下来,希望能给从事相关领域或有志于写代码的人参考. 一.你适合当程序员吗? 程序员,也叫软件工程师.程序设计师,我觉得「程序员」三个字简洁有力,是一种身份的象征. 如果你正从事这份工作,恭喜你!这是个热门行业,在可预见的将来,也不会消失.不过也别高兴太早,这一行的技术汰旧换新非常快,必须不断努力学习才行. 一点天赋 打开一个空白文档,必须创造出代码.与