突然想到,英语这种语言体现了面向对象的思想,而中文汉字体现的则是面向结构的思想。于是做了一些分析比较。纯属娱乐,欢迎拍砖。^_^
分析开始~
英语虽然也是一种语言,但跟编程语言还是很大的不同。这里的分析,主要集中在对英语词汇的分析,而不是语法本身。
首先,确定英语词组在OOP的框架下的几个概念:
类:单词
基类:整个类体系有n , adj ,v , adv 几大基类,所有类都隐式的继承自这几个基类。
对象:出现在具体语境的使用中的单词。
继承:诸如英语单词的前缀、后缀等。另有,所有形容词隐式的继承自基类adj , 所有的动词隐式的继承自基类v , 所有副词隐式的继承自基类adv ...
类间关系(类似于UML中的association , aggregation 和 composition): 主谓宾结构,各种句式
面向对象的特征分析:
一) 封装性
指能够把一个实体的信息、功能、响应都装入一个单独的对象中的特性。用户不用关心类的工作机理就可以使用它,所有对数据的访问和操作都必须通过特定的方法,否则便无法使用,从而达到数据隐藏的目的。
英语单词很好的实现了封装性。相比汉语词组的结构化组成,英语单词是固化的。几乎无法在一个英语单词中增加一笔,让它编程另外一个单词,但这在面向结构的汉语词组中则容易实现。
1.例如:
对于结构化的汉语词组,我们可以直接添加几笔,让词组变换一个新的意思: “天心取米” --> “未必敢来” (太经典了,记得小学的寒假作业上看到过)
对于面向对象的英语词组,则难以下手 = =.
2.又例如
汉语中,替换一个字,就能很好的变换词组的意义:“战斗机” --> “战斗鸡”,而英语中,战斗机就是“flighter”,难以变换。
二) 继承
继承的方法允许在不改动原程序的基础上对其进行扩充,这样使得原功能得以保存,而新功能也得以扩展。这有利于减少重复编码,提高软件的开发效率。
英语词组中的多态实现跟传统的OOP多态差别较大。英语词汇中的多态的表现形式位时态的变化。
比如:
draw-->drew-->drawn.