论坛首页 综合技术版

OO思想里被遗忘数十年前的远见-----一篇经典论文的读后.

浏览 16431 次
该帖已经被评为良好帖
作者 正文
时间:2008-04-07 关键字: oo
最近因为某些原因,有机会拜读了一下Ole-Johan Dal的这篇经典论文
<The Birth of Object Orientation>

http://heim.ifi.uio.no/~olejohan/papers/Birth-of-S.pdf

看到了下面这段话,顿时感慨万千.

引用

A large number of OO programming languages have appeared. We list below
some of the more interesting or better known languages, in addition to those
mentioned above.

– Bjarne Stroustrup extended the Unix-related language C with several
Simula-inspiredmechanisms.Thelanguage,calledC++.....

– Eiffel, [28], is an OO programming language designed by Bertrand Meyer in
the 1980’s.....
– SELF, [34], is an OO language exploring and using object cloning instead of
object generation from a class declaration.
– JAVA, [22], is a recent Simula-, Beta-, and C++-inspired language, owing
much of its popularity to its integration with the Internet.
.....
Parallel, “multi-threaded”, execution is introduced,but outside compiler control. As a result, much of the programming security otherwise inherent in the language is lost. The synchronisation mechanisms invite to ineffcient programming and do not facilitate good control of process sequencing, see [14].


The authors believed that the use of class declarations for the definition of “application languages” as natural extensions of a basic one would be of special importance in practice. However, although various kinds of packages or modules are defined for many languages, they are not consequences of a general class declaration as in Simula 67.

The coroutine-like sequencing of Simula has not caught on as a general purpose programming tool. A natural development, however, would have been objects as concurrent processes


40年前的Simula居然就是把concurrent当作Object Orientation的设计的主要目标.现在回想起来是多么的感慨万千.
当我们这些惯用OO的程序员,日复一日,年复一年地折腾各种design pattern,framework,IOC,误以为掌握了面向对象精髓的所在的时候,当我们大呼并发型语言和"新的"编程模型是对OO离经叛道的时候,当我们被所谓OO惯坏的思维无法驾驭Multi-Core&Parallism这头怪兽的时候,。我们可否知道OO设计者在40年前就已经把Parallism当作了OO的重中之重,而且在他们有生之年里都不断的警告我们这种得其形不得其神OO思想极大危害.
要是Dal能过多活几年,能够看到这些半吊子的OO语言在Parallism,Cloud Computing大趋势面前都要从新回炉从0开始,恐怕除了唏嘘之外也只能"感叹穷于生之光阴以疗病梅也哉"
   
时间:2008-04-07
江宁之龙幡,”苏 州之邓尉,杭州之西 溪,皆产梅。或曰:“梅 以曲为美,直则无姿; 以款为美,”正则无景; 梅以流为美,密则无 态。”固也,此文人画 土,心知其意,未可明 诏大g,以绳天下之梅 也又不可以使天下之 民所直、删密、锄正,” 以天梅、病梅为业以求 钱也梅之歌、之疏、 之曲,义非蠢蠢求钱之 民,能以其智力为也。 有以文人画上孤瘀之 隐,明告震梅者,”析 其正,养其旁条,删其 密,天其稚枝,锄其直, 遏其生气,以求重价, 而江、浙之梅皆病。文 人画士之祸之烈至此 哉!

  予购三百盆,皆病 者,无完者。既泣之 三日,乃警疗之,纵之, 顺之。毁其盆,悉埋于 地,解其棕缚,以五年 为期,必复之全之。予 本非文人画士,甘受循 厉,”辟病悔之馆以贮 之。呜呼!安得使予多 暇日,又多闲田,以广 贮江宁、杭州、苏州之 病梅,穷于生之光阴以 疗梅也哉?
   
0 请登录后投票
时间:2008-04-07
我来瞎掰两句
为了建立程序和现实之间的映射 人们发明了OO这个概念
另一方面,人类通过反省自己的思维方式,发现了并行这种方法
从发明和发现这两个词可以看出 OO是人造的 而并行是天然雕琢的 高下立判
   
0 请登录后投票
时间:2008-04-09
"并行"只是性能的考虑,是暂时的妥协,正如c中的内存使用。是一种技术。
oo是“人”的考虑,是一种思想,明显优于“并行”。
   
0 请登录后投票
时间:2008-04-09
java9981 写道
"并行"只是性能的考虑,是暂时的妥协,正如c中的内存使用。是一种技术。
oo是“人”的考虑,是一种思想,明显优于“并行”。

人与人之间的行为,难道不就是并行的么?
   
0 请登录后投票
时间:2008-04-09
在并行技术方面,不知道目前OO语言能有什么好的方向么?
   
0 请登录后投票
时间:2008-04-09
robbin 写道
在并行技术方面,不知道目前OO语言能有什么好的方向么?

很难,像java 7那样在现有语言上修修补补都没有太大的用处.
最终走三结合的道路的可能性比较大.
   
0 请登录后投票
时间:2008-04-09
Trustno1 写道
robbin 写道
在并行技术方面,不知道目前OO语言能有什么好的方向么?

很难,像java 7那样在现有语言上修修补补都没有太大的用处.
最终走三结合的道路的可能性比较大.


我换个问法,目前哪种OO编程语言是走在正确的方向上的?例如lua,ruby,python,smalltalk等等。三结合指的是OO,FP和并行?
   
0 请登录后投票
时间:2008-04-09
robbin 写道
Trustno1 写道
robbin 写道
在并行技术方面,不知道目前OO语言能有什么好的方向么?

很难,像java 7那样在现有语言上修修补补都没有太大的用处.
最终走三结合的道路的可能性比较大.


我换个问法,目前哪种OO编程语言是走在正确的方向上的?例如lua,ruby,python,smalltalk等等。三结合指的是OO,FP和并行?

我觉得倒是M社的那些家伙搞出来得可能性大一些,现在研究STM和FP的一陀陀大牛都在MS插队落户了.在multi-core下(不讨论多机分布式),恐怕STM是不二的选择.要把这个整到语言里去,没有严格的类型支持恐怕编译器的并行优化方面无能为力.在工业OO语言中除了C++(这个东西我已经不抱多少希望)之外,类型系统比较强的也就算是M社的产品了.
相对于M社的那些东西,Java的类型系统已经太落后了所以Java只能在传统的share-memory-lock机制上做优化但是这基本上是一条死路了.至于dynamic的脚本语言我觉得希望更加渺茫,当然Message Passing是另外一条道路,但是这一方面有Erlang这座大山恐怕很长一段时间里谁能超过这个东西.
   
0 请登录后投票
时间:2008-04-09
M社的东西搞的再好也只能在Windows上面得到真正的支持,就这一大缺陷就可以排除在外不予考虑了。
   
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
快速回复 引用上一条消息 (Alt+S)