论坛首页 综合技术论坛

Why OO sucks

浏览 49954 次
该帖已经被评为良好帖
作者 正文
   发表时间:2008-08-21  
贴近自然语言不一定就好啊
如果一行DSL就能搞定你用OO写的500行代码,你说哪个好?
Quake Wang 写道
引用
为什么OO粉流行?

我认为一个重要原因是更贴近自然语言。
把数据类型和方法绑定在一起,你可以写出这样几乎和自然语言一致的代码:
3.days.ago
user.destroy unless user.is_admin

0 请登录后投票
   发表时间:2008-08-21  
引用
都不容易理解。
OO在可读性方面优势并不大。

select name from person

这个才比较容易理解。

容不容易理解,这都是人的主观因素.你从小学汉语长大,英语说得再溜也不会比老美觉得自然亲切.
所以讨论语言设计问题,扯到容不容易理解,是不是方便上就毫无意义.
要深挖狠批OO,就需要从根子上找问题,要找到那种无论你是不是觉得语法容易理解,都必须接受的理由.
0 请登录后投票
   发表时间:2008-08-21  

OO 的本质能有啥?就是一个VTable而已。(或者一个Hashtable而已。like in javascirpt)
当然,如果把OO上升到一种思想和宗教,OO就不只是一个VTable,而是一种宇宙能量。

前面举的例子,是说状态的优势。OO或者C等语言,都是FP的对立面,都是有状态的。而FP通常是无状态的(当然,有些FP是有状态的)。无状态有线程安全的好处,但是编程上就多了很多限制,非常不方便。

0 请登录后投票
   发表时间:2008-08-21  
Trustno1 写道
引用
都不容易理解。
OO在可读性方面优势并不大。

select name from person

这个才比较容易理解。

容不容易理解,这都是人的主观因素.你从小学汉语长大,英语说得再溜也不会比老美觉得自然亲切.
所以讨论语言设计问题,扯到容不容易理解,是不是方便上就毫无意义.
要深挖狠批OO,就需要从根子上找问题,要找到那种无论你是不是觉得语法容易理解,都必须接受的理由.


根子就是VTable。
我写了一个Interface,然后几个Class实现这个interface。
程序运行的时候,会动态调用对应的实现方法。

这个“多态”能力,FP行吗?C行吗?都不行。这是OO唯一特殊的地方。

当然,这个不是FP的主要弱点。FP的主要弱点还是在于无状态。无状态虽然在线程调度上是优点。在编程便利性上是缺点。



0 请登录后投票
   发表时间:2008-08-21  
buaawhl 写道

OO 的本质能有啥?就是一个VTable而已。(或者一个Hashtable而已。like in javascirpt)
当然,如果把OO上升到一种思想和宗教,OO就不只是一个VTable,而是一种宇宙能量。

前面举的例子,是说状态的优势。OO或者C等语言,都是FP的对立面,都是有状态的。而FP通常是无状态的(当然,有些FP是有状态的)。无状态有线程安全的好处,但是编程上就多了很多限制,非常不方便。



我倒,你一会儿有状态一会儿无状态,到底想表达啥。不如别弄什么这些玄虚,实际上 oo 就是 fp,fp 也是 oo,这就好比 schema 是 lisp 的一个方言,一幅多么和谐的画面啊。

你要无状态,可以啊,无状态对象嘛,我们以前用 dcom 的时候就有了。你要有状态,更简单,oo 本来就有状态。

亲爱的 fp-er ,你们似乎找错敌人了,真正的敌人应该是 c 以及 c 的同党,不是 oo。

前面已经指出,oo 作为 oop 的语言来说,和 fp 相当。

作为 ooa 的设计来说,它只是一种程序设计模型,erlang 也好,lisp 也好,实际上都可以按 oo 的方式来用。

兄弟们,去找 c 语言决斗吧,加油。
0 请登录后投票
   发表时间:2008-08-21  
引用
根子就是VTable。
我写了一个Interface,然后几个Class实现这个interface。
程序运行的时候,会动态调用对应的实现方法。

这个“多态”能力,FP行吗?C行吗?都不行。这是OO唯一特殊的地方。

当然,这个不是FP的主要弱点。FP的主要弱点还是在于无状态。无状态虽然在线程调度上是优点。在编程便利性上是缺点。

一个自行车爱好者,看见一汽车说,你Y连踏脚都没有能跑?
0 请登录后投票
   发表时间:2008-08-21  
buaawhl 写道
Trustno1 写道
引用
都不容易理解。
OO在可读性方面优势并不大。

select name from person

这个才比较容易理解。

容不容易理解,这都是人的主观因素.你从小学汉语长大,英语说得再溜也不会比老美觉得自然亲切.
所以讨论语言设计问题,扯到容不容易理解,是不是方便上就毫无意义.
要深挖狠批OO,就需要从根子上找问题,要找到那种无论你是不是觉得语法容易理解,都必须接受的理由.


根子就是VTable。
我写了一个Interface,然后几个Class实现这个interface。
程序运行的时候,会动态调用对应的实现方法。

这个“多态”能力,FP行吗?C行吗?都不行。这是OO唯一特殊的地方。

当然,这个不是FP的主要弱点。FP的主要弱点还是在于无状态。无状态虽然在线程调度上是优点。在编程便利性上是缺点。

这个承认,相对于语法来说,继承,多态确实是OO和FP的本质区别.
0 请登录后投票
   发表时间:2008-08-21  
Trustno1 写道
引用
都不容易理解。
OO在可读性方面优势并不大。

select name from person

这个才比较容易理解。

容不容易理解,这都是人的主观因素.你从小学汉语长大,英语说得再溜也不会比老美觉得自然亲切.
所以讨论语言设计问题,扯到容不容易理解,是不是方便上就毫无意义.
要深挖狠批OO,就需要从根子上找问题,要找到那种无论你是不是觉得语法容易理解,都必须接受的理由.


热烈欢迎 T1 兄对 oo “深挖狠批”
0 请登录后投票
   发表时间:2008-08-21  
其实我只是想问一下
joe armstrong是不是在炒作他的erlang,我其实真的最关心这个问题
0 请登录后投票
   发表时间:2008-08-21  
Trustno1 写道
引用
都不容易理解。
OO在可读性方面优势并不大。

select name from person

这个才比较容易理解。

容不容易理解,这都是人的主观因素.你从小学汉语长大,英语说得再溜也不会比老美觉得自然亲切.
所以讨论语言设计问题,扯到容不容易理解,是不是方便上就毫无意义.
要深挖狠批OO,就需要从根子上找问题,要找到那种无论你是不是觉得语法容易理解,都必须接受的理由.

我要求不太高,请你用机器语言给我写个tomcat.
你要实在觉得机器语言不好理解,用汇编也可以.
我可以肯定得告诉你,即使你从小就用机器语言写程序.你也不会觉得机器语言比你只用了一年的C玩得溜
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics