多范型程序设计

 

多范型程序设计

     1978年著名的计算机科学家、图灵奖得主R. W. Floyd教授在其图灵奖演讲中提出了程序设计范型 (Programming Paradigms) 的概念。程序设计范型指设计和实现程序的模型。不同的范型导致不同的程序设计技术和方法学。我们把体现某种范型的程序设计语言称为该范型的语言。

  至今已经出现过几百种语言,但这些语言大体上可以归纳为以下几种范型:

  • 过程性语言:代表语言有ADA、BASIC、C、FORTRAN、PASCAL等;
  • 说明性语言:说明性语言可分为两类,一类是基于λ演算的函数型语言(如LISP、SCHEME、ML、HASKELL等);另一类是基于谓词逻辑的逻辑型语言,其代表语言是PROLOG;
  • 面向对象语言:如SMALLTALK、C++、JAVA、C#等。

  虽然不同的范型的侧重点不同,但同一范型中的语言具有许多共同之处。过去,语言通常是单一范型的,即一种语言只体现一种范型。经过激烈的竞争,同一范型的语言仅能生存下来为数不多的几种。

  从上世纪80年代开始,人们便开始探索不同范型之间的融合,从而形成了多范型(Multi-paradigm)。研究比较多的是将面向对象的语言成分注入传统的过程性和函数型语言(如C++、Objective-C、CLOS等);将函数型、逻辑型语言进行结合形成函数逻辑型语言(如BABEL、CURRY等);过程型和说明型结合的语言(如LEDA等);将面向对象、函数型、逻辑型等范型融为一体语言,如AKL、Fuxi语言等。

  在这些多范型语言中,新近出现的Fuxi语言是一种比较有特点一种。Fuxi强调简洁性(Simplicity)、表达力(Expressiveness)和效率(Efficiency)的平衡。语法结构采用类-JAVA的类型框架和模式匹配的方法定义。以下是Fuxi语言的一个简单例子:

 

 import fuxi.*
 public active class FibonacciApp: Applet
 {
      Fib(0) = 1
      Fib(1) = 1
      Fib(int n) = Fib(n – 1) + Fib(n – 2)

      public Activate() =
      let
      {
           int n = System.Console.Readln().ToInteger()
      }
      in
      {
           System.Console.Println( "
请输入一个正整数:" )
           System.Console.Println( "Fib( " + n + ") = " + Fib(n) )
      }
 }

  这是一个计算Fibonacci数的Fuxi程序,程序中的Fib(n)函数就采用了模式匹配的定义形式。模式匹配可以最大限度地减少条件语句的使用,使得程序结构简洁明了,符合人们的书写习惯。

书名:C++多范型设计 作者:[美]James O.Coplien 译者: 出版社:中国电力出版社 本书详细地介绍了从“应用领域”到“方案领域”的C++设计实现方法,以及开发者在设计思考和设计实践过程中需要用到的记法、图表和设计模型。在读完这本书以后,读者将会了解如何根据应用领域的共同性和差异性分析来确定C++方案领域的结构,也就是如何选择适用于应用领域同时又为C++所支持的范型来形成方案领域的结构。 全书涵盖了这样一些重要的概念或方法,需要读者重点把握:软件族、共同性、积极或消极差异性、领域分析、领域划分、领域词汇表、面向对象的分析、复用、迭代、绑定、依赖关系图、范型混合,以及模式等。 本书第1章分析多范型设计的必要性,第2章和第3章分别介绍共同性和差异性分析。第4章解释如何使用领域分析来找到应用领域中的抽象。第5章说明怎样将领域工程的原则用作对象范型的抽象技术的基础。第6章应用“分析”来描述“方案领域”的特征,并且将C++结构放到形成共同性和差异性基础的正式框架中。第7章综合考虑前几章的内容,介绍了结构复杂性不同的设计问题的分类,以及可作为基于领域分析和多范型设计技术基础的高级活动集合。第8章研究结构复杂的设计,并介绍如何组合各种范型。第9章补充说明了流行的设计模式与领域工程之间的关系,提供了对模式、领域 工程以及二者关系的新的认识。 阅读本书需要读者一定程度地掌握了C++编程语言,并具有一定的面向对象编程的经验。书中大量引用了相关著作,读者朋友可根据需要参阅参考文献中相关书目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值