Data Abstraction, procedural abstraction
数据抽象和过程抽象的理解。
数据是要被计算的信息,过程表示对数据的操作和处理。但过程本身是数据时,过程就可以操作过程。
数据抽象
在Programming Language通常会提供基本的数据类型(数字,布尔值,字符串)和组合这些基本数据类型的抽象方式(Java中的数组和Class),通过对组合数据类型进行抽象和命名,我们就可以在抽象层次上进行工作,并不需要关心数据类型抽象的具体实现,当然抽象数据也可以和原子数据具有同样的用途来使用,例如作为参数和返回值或者对抽象数据再进行复合,也就是抽象数据类型具有闭包(复合的结果还可以进行复合)作用.
数据通常是根据类型来区分的,因为不同的类型可以拥有不同的操作,Class通常表示自定义的数据类型。
过程抽象
在Language的核心中,会提供对原子类型精心操作的过程,还包括一些特殊的语法,用来表明表达式的特定语义(例如命令式语言中的循环语句),也会通过对过程进行抽象的机制,通过对过程命名来代替相应的实现,随后就可以通过名称来引用所定义的过程,就像语言内置的原子工程一样,当然,我们可以过程抽象再进行组合,以形成更强大的抽象。不同的语言对过程抽象的支持不同,在Java中,过程就是类函数,只能附属于类并且只能被动被调用,并不能单做参数或者返回值来使用,当然过程也不能有子过程,在函数式语言(clojure, javascript)中,函数就是一个数据值,和其它的数据具有同样的作用,能够当做参数和返回值,也能够放在数据抽象的数据结构中,使用数据和过程的界限更加模糊,当然也更加灵活。
过程通常是对数据进行操作的,在面向对象语言中,过程通常是附属于数据类型的,也就是只能对附属类型进行相应的操作。在过程和函数式语言中,过程是独立出来的,但通过过程参数(或contract)来表示能够处理那些数据。
其实过程也是有类型的,根据输入的参数和输出的值来决定过程的类型,例如在Haskell或factor中就可以什么函数或者词的效应。
类型
类型描述值的集合。每一个值都是类型,值通常是语言的头等公民
语法
语法既不是数据,也不是类型,他们有自己特殊语义规则,
实现细节
数据抽象和过程抽象的理解。
数据是要被计算的信息,过程表示对数据的操作和处理。但过程本身是数据时,过程就可以操作过程。
数据抽象
在Programming Language通常会提供基本的数据类型(数字,布尔值,字符串)和组合这些基本数据类型的抽象方式(Java中的数组和Class),通过对组合数据类型进行抽象和命名,我们就可以在抽象层次上进行工作,并不需要关心数据类型抽象的具体实现,当然抽象数据也可以和原子数据具有同样的用途来使用,例如作为参数和返回值或者对抽象数据再进行复合,也就是抽象数据类型具有闭包(复合的结果还可以进行复合)作用.
数据通常是根据类型来区分的,因为不同的类型可以拥有不同的操作,Class通常表示自定义的数据类型。
过程抽象
在Language的核心中,会提供对原子类型精心操作的过程,还包括一些特殊的语法,用来表明表达式的特定语义(例如命令式语言中的循环语句),也会通过对过程进行抽象的机制,通过对过程命名来代替相应的实现,随后就可以通过名称来引用所定义的过程,就像语言内置的原子工程一样,当然,我们可以过程抽象再进行组合,以形成更强大的抽象。不同的语言对过程抽象的支持不同,在Java中,过程就是类函数,只能附属于类并且只能被动被调用,并不能单做参数或者返回值来使用,当然过程也不能有子过程,在函数式语言(clojure, javascript)中,函数就是一个数据值,和其它的数据具有同样的作用,能够当做参数和返回值,也能够放在数据抽象的数据结构中,使用数据和过程的界限更加模糊,当然也更加灵活。
过程通常是对数据进行操作的,在面向对象语言中,过程通常是附属于数据类型的,也就是只能对附属类型进行相应的操作。在过程和函数式语言中,过程是独立出来的,但通过过程参数(或contract)来表示能够处理那些数据。
其实过程也是有类型的,根据输入的参数和输出的值来决定过程的类型,例如在Haskell或factor中就可以什么函数或者词的效应。
类型
类型描述值的集合。每一个值都是类型,值通常是语言的头等公民
语法
语法既不是数据,也不是类型,他们有自己特殊语义规则,
实现细节