Chinaunix首页 | 论坛 | 博客
  • 博客访问: 257081
  • 博文数量: 49
  • 博客积分: 110
  • 博客等级: 民兵
  • 技术积分: 510
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-13 00:59
个人简介

make it run,make it better,make it fast. https://github.com/liulanghaitun

文章分类

全部博文(49)

文章存档

2023年(1)

2022年(2)

2020年(4)

2019年(4)

2017年(15)

2016年(3)

2014年(3)

2013年(14)

分类: PERL

2013-02-20 00:03:31

函数式语言基于λ演算,是一门可编程的编程语言.

 

程序设计主要用于可运算性.
可以表述为:
操作数(万物)+操作码(法则)
或者
数据结构(空间)+算法(时间)

 

程序设计语言可以表述为三个方面:
1.符号定义(原子操作数),表达式(E表示),符号(V表示)
E:=V
2.函数定义(原子操作数和原子操作码的组合)或者抽象
E:=(λV.E)
3.函数调用或者应用
E:=(E E)

在函数式编程中一切都可以看作是一种表达式,表达式的可运算性由表达式中的符号定义决定.
表达式中的所有符号必须有上下文来确定其值以保证该表达式可以求值.
在函数式编程中一个函数定义也是一个lambda算子,该算子接受只接受一个符号,并且返回一个表达式.
对于多元参数,可以通过carrying来表示,即所谓的闭包.通过闭包的形式使得表达式中的符号有其上下文的含义.

程序最终生成语法树由解释器进行解释,函数式通过确定的后缀表达式来避免传统的运算优先级和结合型.更加容易的由解释器解析. 

这棵语法树递归到原子操作,最后通过内置的原子操作码进行求值.因此函数式编程本质上是递归式编程.


通过序对的方式来组织数据(因为其简洁而显得极为强大,三个函数即可建立强大的数据结构 cons,car,cdr)

 

三大控制结构(顺序,循环,选择)
 左结合确定顺序结构
递归确定循环结构
内置的if(单分支)和cond(多分支)确定选择结构

 

过程式编程基于有限状态机,其通过变量保存状态,节省内存空间,与空间耦合,引入锁来保证数据的一致性.
单核编程较易,多核编程复杂且由于锁的资源消耗,导致性能有所下降,不利于多核编程.
函数式编程基于lambda演算,其通过函数来保存状态,消耗内存空间,与空间解耦合,引用透明,不存在锁的概念.
由于现在的单核运算已到达极致,多核编程方面函数式编程具有一定的优势,但对于内存需求过多.

阅读(2146) | 评论(0) | 转发(0) |
0

上一篇:java设计原则

下一篇:Y组合子

给主人留下些什么吧!~~