FUNCTION LANGUAGE

来源:互联网 发布:jmeter数据库参数化 编辑:程序博客网 时间:2024/05/16 01:45

这是一类语言,叫做函数型程序设计语言。是一种非常高级的语言。一种基于λ演算和在70年代后期才发展起来的新语言类型。大多数程序设计语言明显地规定要执行操作的次序。次序的详细规定是很需要的,因为语言的语句对程序的变量有“作用”,如果改变这些作用的次序,就可以改变产生的最后值。但是函数型语言却没有这种性质。在这个意义上,函数型语言能建立可计算性的数学公式模型。让我们来看一个简单的例子:

qsort :: [a] -> [a] | Ord a qsort [] = [] qsort [a:xs] = qsort [x // x<-xs | x<a] ++ [a] ++ qsort [x // x<-xs | x>=a] 

这段程序就是快速排序的代码,你看有多么简洁,并且它的这个qsort可以对任何类型的数据进行排序(只要这种数据可以比较大小)。想读懂上面的程序么?那么下载下面的clean, 或者haskell,好好研究吧,祝你有新的发现。

  • Clean

http://www.cs.kun.nl/~clean/ 并行的函数型语言,可以把源程序编译成exe文件,带有丰富的库,从tcp/ip, 到界面设计,到游戏开发,无一不全。

  • Haskell

http://www.haskell.org/hugs/ hugs是haskell的免费编译器,语法和clean相似,不过是解释执行,因此易于学习。

  • O'Caml

http://www.ocaml.org/ 又一个函数型语言,速度很快,编译出来的程序速度和用C做出来的差不多快。

  • Mozart OZ

http://www.mozart-oz.org/ mozart oz 是具有魔力的语言。它融合了目前几种流行的程序设计思想,我们叫它多范式语言。它是面向对象的语言,它是函数型的语言,它是约束逻辑(constraint)的语言,它是并发式的语言,它还是分布式的语言,几句话很难概括它的功能。最好去它的网站看看吧,下载一个慢慢研究? 他使用emacs作为开发界面,因此如果你想在windows下使用本语言,首先需要安装emacs for windows(也可以在mozart的网上找到,也可以去www.gnus.org去找,也可以安装xemacs), 如果你安装了emacs 那么你也就同时获得了emacs lisp, 呵呵,收获不小。 为了提起您的兴趣,请思考如下的问题如何编程解决,然后你可以在mozart中找到惊人简单的解决方案。 15个人每天出去玩,每天分为5组,每组3人,玩一个星期,使得任何两个人都曾经在一组中玩过,你如何安排?

  • J software

http://www.jsoftware.com/ 不要和java搞混淆了。J是一种面向阵列的语言,也就是说矢量,矩阵,以及高次数组都是它的最基本的数据类型,J中引入了大批量的运算符,以及独特的算式分析方法,大幅度的扩展了数学算式的表达能力。 例如如果你要算从1加到100, 用c怎么做? J的程序是:+/i.100 对,就这么短,一个表达式解决了问题,事实上,使用表达式编写出来的程序异常简洁,虽然初看上去很难读懂,一旦掌握了J语言,你就会发现,原来你可以用只有c语言1/20的字符表达同样的功能。

  • FORTH

http://cdtzx.51.net/pimage/www.jsoftware.com forth是一种可扩展的,交互式的语言。最初为小型的嵌入式电脑设计的,现在它几乎可以在任何主流的芯片上运行。 在电子表格,专家系统, 多用户数据库,和分布式实时控制系统中有广泛的应用。 表面来看,forth是一种基于堆栈的概念机。例如如果要计算 (3+4)*5 ,我们的程序就是:3 4 + 5 * . 首先把3和4入堆栈,然后调用+子程序,+把堆栈的最顶上两个元素取出(也就是3和4)进行加法运算,然后把结果入堆栈,然后把5入堆栈,然后调用*子程序,把最顶的2个元素,也就是7和5取出,并进行乘法运算,然后把结果入堆栈,最后的.把结果从堆栈中取出。 事实上这是一种简单有效的概念机。当然forth远远不止这些,它有什么样的功能,就由你去发掘了。

  • LOGO

被称为最佳的启蒙语言,事实上它的功能远远不止启蒙这么简单。一切别的语言能够完成的它也能够完成,只是更加简洁一些,通常logo是使用lisp编写的,我们就可以想象它的高度灵活性了。

  • MSW Logo

http://www.softronix.com/ 这个网站还有个逻辑数字电路模拟的软件,很有意思,再也不用为什么触发器 门电路之类的发愁了。

  • Star Logo

http://www.media.mit.edu/starlogo starlogo的网站如是说: StarLogo是一个可以编程的建模环境,用来研究分散系统的运行机制。所谓分散系统是指:没有组织者而组织,没有协调者而协调的系统。使用StarLogo你可以对许多现实世界中的现象进行建模并且观察研究,例如鸟群、交通、蚂蚁以及市场经济。 StarLogo是一种特殊的Logo语言,和传统的Logo语言一样,你可以通过向海龟发命令来作图。除此之外,Starlogo容许你并行的控制上千个海龟,并且为这些海龟设定不同的行为模式。StarLogo非常适合于研究人工生命。  

原创粉丝点击