`
shxiao
  • 浏览: 29785 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
阅读更多
Data Abstraction, procedural abstraction

数据抽象和过程抽象的理解。

数据是要被计算的信息,过程表示对数据的操作和处理。但过程本身是数据时,过程就可以操作过程。

数据抽象

在Programming Language通常会提供基本的数据类型(数字,布尔值,字符串)和组合这些基本数据类型的抽象方式(Java中的数组和Class),通过对组合数据类型进行抽象和命名,我们就可以在抽象层次上进行工作,并不需要关心数据类型抽象的具体实现,当然抽象数据也可以和原子数据具有同样的用途来使用,例如作为参数和返回值或者对抽象数据再进行复合,也就是抽象数据类型具有闭包(复合的结果还可以进行复合)作用.

数据通常是根据类型来区分的,因为不同的类型可以拥有不同的操作,Class通常表示自定义的数据类型。

过程抽象

在Language的核心中,会提供对原子类型精心操作的过程,还包括一些特殊的语法,用来表明表达式的特定语义(例如命令式语言中的循环语句),也会通过对过程进行抽象的机制,通过对过程命名来代替相应的实现,随后就可以通过名称来引用所定义的过程,就像语言内置的原子工程一样,当然,我们可以过程抽象再进行组合,以形成更强大的抽象。不同的语言对过程抽象的支持不同,在Java中,过程就是类函数,只能附属于类并且只能被动被调用,并不能单做参数或者返回值来使用,当然过程也不能有子过程,在函数式语言(clojure, javascript)中,函数就是一个数据值,和其它的数据具有同样的作用,能够当做参数和返回值,也能够放在数据抽象的数据结构中,使用数据和过程的界限更加模糊,当然也更加灵活。

过程通常是对数据进行操作的,在面向对象语言中,过程通常是附属于数据类型的,也就是只能对附属类型进行相应的操作。在过程和函数式语言中,过程是独立出来的,但通过过程参数(或contract)来表示能够处理那些数据。

其实过程也是有类型的,根据输入的参数和输出的值来决定过程的类型,例如在Haskell或factor中就可以什么函数或者词的效应。

类型

类型描述值的集合。每一个值都是类型,值通常是语言的头等公民

语法

语法既不是数据,也不是类型,他们有自己特殊语义规则,

实现细节
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics