已锁定 主题:Why OO sucks
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-08-21
贴近自然语言不一定就好啊
如果一行DSL就能搞定你用OO写的500行代码,你说哪个好? Quake Wang 写道 引用 为什么OO粉流行?
我认为一个重要原因是更贴近自然语言。 把数据类型和方法绑定在一起,你可以写出这样几乎和自然语言一致的代码: 3.days.ago user.destroy unless user.is_admin |
|
返回顶楼 | |
发表时间:2008-08-21
引用 都不容易理解。
OO在可读性方面优势并不大。 select name from person 这个才比较容易理解。 容不容易理解,这都是人的主观因素.你从小学汉语长大,英语说得再溜也不会比老美觉得自然亲切. 所以讨论语言设计问题,扯到容不容易理解,是不是方便上就毫无意义. 要深挖狠批OO,就需要从根子上找问题,要找到那种无论你是不是觉得语法容易理解,都必须接受的理由. |
|
返回顶楼 | |
发表时间:2008-08-21
OO 的本质能有啥?就是一个VTable而已。(或者一个Hashtable而已。like in javascirpt) 当然,如果把OO上升到一种思想和宗教,OO就不只是一个VTable,而是一种宇宙能量。 前面举的例子,是说状态的优势。OO或者C等语言,都是FP的对立面,都是有状态的。而FP通常是无状态的(当然,有些FP是有状态的)。无状态有线程安全的好处,但是编程上就多了很多限制,非常不方便。 |
|
返回顶楼 | |
发表时间:2008-08-21
Trustno1 写道 引用 都不容易理解。
OO在可读性方面优势并不大。 select name from person 这个才比较容易理解。 容不容易理解,这都是人的主观因素.你从小学汉语长大,英语说得再溜也不会比老美觉得自然亲切. 所以讨论语言设计问题,扯到容不容易理解,是不是方便上就毫无意义. 要深挖狠批OO,就需要从根子上找问题,要找到那种无论你是不是觉得语法容易理解,都必须接受的理由. 根子就是VTable。 我写了一个Interface,然后几个Class实现这个interface。 程序运行的时候,会动态调用对应的实现方法。 这个“多态”能力,FP行吗?C行吗?都不行。这是OO唯一特殊的地方。 当然,这个不是FP的主要弱点。FP的主要弱点还是在于无状态。无状态虽然在线程调度上是优点。在编程便利性上是缺点。 |
|
返回顶楼 | |
发表时间: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 语言决斗吧,加油。 |
|
返回顶楼 | |
发表时间:2008-08-21
引用 根子就是VTable。
我写了一个Interface,然后几个Class实现这个interface。 程序运行的时候,会动态调用对应的实现方法。 这个“多态”能力,FP行吗?C行吗?都不行。这是OO唯一特殊的地方。 当然,这个不是FP的主要弱点。FP的主要弱点还是在于无状态。无状态虽然在线程调度上是优点。在编程便利性上是缺点。 一个自行车爱好者,看见一汽车说,你Y连踏脚都没有能跑? |
|
返回顶楼 | |
发表时间:2008-08-21
buaawhl 写道 Trustno1 写道 引用 都不容易理解。
OO在可读性方面优势并不大。 select name from person 这个才比较容易理解。 容不容易理解,这都是人的主观因素.你从小学汉语长大,英语说得再溜也不会比老美觉得自然亲切. 所以讨论语言设计问题,扯到容不容易理解,是不是方便上就毫无意义. 要深挖狠批OO,就需要从根子上找问题,要找到那种无论你是不是觉得语法容易理解,都必须接受的理由. 根子就是VTable。 我写了一个Interface,然后几个Class实现这个interface。 程序运行的时候,会动态调用对应的实现方法。 这个“多态”能力,FP行吗?C行吗?都不行。这是OO唯一特殊的地方。 当然,这个不是FP的主要弱点。FP的主要弱点还是在于无状态。无状态虽然在线程调度上是优点。在编程便利性上是缺点。 这个承认,相对于语法来说,继承,多态确实是OO和FP的本质区别. |
|
返回顶楼 | |
发表时间:2008-08-21
Trustno1 写道 引用 都不容易理解。
OO在可读性方面优势并不大。 select name from person 这个才比较容易理解。 容不容易理解,这都是人的主观因素.你从小学汉语长大,英语说得再溜也不会比老美觉得自然亲切. 所以讨论语言设计问题,扯到容不容易理解,是不是方便上就毫无意义. 要深挖狠批OO,就需要从根子上找问题,要找到那种无论你是不是觉得语法容易理解,都必须接受的理由. 热烈欢迎 T1 兄对 oo “深挖狠批” |
|
返回顶楼 | |
发表时间:2008-08-21
其实我只是想问一下
joe armstrong是不是在炒作他的erlang,我其实真的最关心这个问题 |
|
返回顶楼 | |
发表时间:2008-08-21
Trustno1 写道 引用 都不容易理解。
OO在可读性方面优势并不大。 select name from person 这个才比较容易理解。 容不容易理解,这都是人的主观因素.你从小学汉语长大,英语说得再溜也不会比老美觉得自然亲切. 所以讨论语言设计问题,扯到容不容易理解,是不是方便上就毫无意义. 要深挖狠批OO,就需要从根子上找问题,要找到那种无论你是不是觉得语法容易理解,都必须接受的理由. 我要求不太高,请你用机器语言给我写个tomcat. 你要实在觉得机器语言不好理解,用汇编也可以. 我可以肯定得告诉你,即使你从小就用机器语言写程序.你也不会觉得机器语言比你只用了一年的C玩得溜 |
|
返回顶楼 | |