`
hideto
  • 浏览: 2686962 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Why OO sucks

阅读更多
为什么OO很恶心

原文: http://www.sics.se/~joe/bluetail/vol1/v1_oo.html
作者:Joe Armstrong

当我第一次知道OOP的概念时,我非常疑惑,但是不知道为啥——它仅仅在感觉上“不对”。
在OOP问世之后变得粉流行(稍后解释为什么),而批评OOP就像“在教堂里咒骂”。
OO成为了每个受尊敬的语言必须具备的一部分。

而当Erlang变得越来越流行时,我们经常问一个问题“Erlang是OO的吗?”
当然正确的答案是“当然不是”——但是我们没有大肆宣扬——我们只是换了种精心设计的说法,Erlang是某种OO但不是真的是。

这时我想起在法国巴黎时IBM的老板在7th IEEE逻辑编程大会上的演讲。
IBM prolog添加了许多OO扩展,当人们问起时他说:“我们的客户想要OO的prolog,所以我们构建了OO的prolog”

我想到了“多么简单,没有良心的疑虑,没有灵魂的搜索,没有‘这是正确的事情’的问题。。。”

为什么OO很恶心

我对OOP的反对原则源自一些基本的概念,我将概述其中一些反对意见。

反对之一——数据类型和方法应该绑定在一起
对象将方法和数据结构绑定在一起成为不可分割的单元。我认为这是基本的错误,因为方法和数据结构属于完全不同的世界。为啥哩?

1,方法做事情。它们是输入和输出。输入和输出的是方法所改变的数据结构。
在大部分编程语言里,方法由命令式语句顺序构建:“做这件事然后那件事。。。”
理解方法首先得理解做事情的顺序(在懒惰函数编程语言和逻辑语言中这个限制被放宽了)
2,数据结构是结构。它们不做任何事情。它们本质上是声明。“理解”数据结构比“理解”方法简单多了。

方法作为黑盒子来转换输入和输出。如果我理解输入和输出,这样我就理解了方法。这并不意味着我可以写这个方法。

方法通常理解为在一个计算系统里用来将数据结构T1转换为数据结构T2的东西。

既然方法和数据结构是完全不同类型的动物,那么将它们锁在一个笼子里就是完全错误的。

2,反对之二——任何东西都必须为对象
考虑“时间”。在OO语言里“时间”也必须是对象。但是在非OO语言里一个“时间”是一个数据结构的实例。
例如,在Erlang里有许多不同类型的时间,它们可以使用类型声明来明确指定:
-deftype day() = 1..31.
-deftype month() = 1..12.
-deftype year() = int().
-deftype hour() = 1..24.
-deftype minute() = 1..60.
-deftype second() = 1..60.
-deftype abstime() = {abstime, year(), month(), day(), hour(), min(), sec()}.
-deftype hms() = {hms, hour(), min(), sec()}.
...

注意这些定义不属于任何特殊的对象。它们很普遍,并且数据结构表示的时间可以被系统中的任何方法处理。

没有相关联的方法。

反对之三——在一个OOP语言里数据类型定义散布到任意位置
在OOP语言里数据类型定义属于对象。
这样我就不能在一个地方找到所有的数据类型定义。
在Erlang或者C里我可以在一个单独的include文件或数据字典里定义我所有的数据类型。
在一个OOP语言里我不能——数据类型定义散布到任意位置。

让我举一个例子。假设我想定义一个通用的数据结构。通用数据类型是一个数据类型,它在系统中的任意位置出现。

lisp程序员知道,拥有一个较小数量的通用数据类型和在它上面的大量的小方法会更好。

通用数据类型就比如linked list,或者一个array或者一个hash table或者更高级的对象如time或者date或者filename。

在一个OOP语言里我不得不选择一些base对象来在里面定义通用的数据结构,所有其他想使用这些数据结构的对象必须继承该对象。
假设现在我想创建一些“time”对象,那么它应该属于哪个对象呢。。。

反对之四——对象拥有私有状态
状态是所有罪恶的根源。特别是有副作用的方法应该避免。

在编程语言里状态是令人讨厌的,而真实世界里状态却千奇百怪的存在着。
我对我的银行账户的状态很感兴趣,当我从我的账户存钱或取钱时我希望我的银行账户状态成功更新。

既然状态在真实世界里存在,那么编程语言应该提供什么能力来处理状态呢?

1,OOP语言说“将状态隐藏”。状态仅仅通过访问方法来隐藏和可见。
2,传统编程语言(C,Pascal)说状态的可见度由语言的scope规则来决定。
3,纯声明式语言说没有状态。系统的全局状态转移到方法里然后从方法里出来。
类似于monad(函数式编程语言)和DCG(逻辑语言)等机制被用来隐藏状态,这样它们可以像“有没有状态无所谓”一样来编程,但是对系统状态的完全访问是必需的。

OOP语言所选择的“隐藏状态”可能是最坏的选择。
它们不是将状态显示出来并寻找减少状态的坏处的方式,而是将状态隐藏起来。

为什么OO粉流行?

1,原因1——它被认为很容易学
2,原因2——它被认为让代码更易重用
3,原因3——它被大肆宣传
4,原因4——它创建了一个新的软件工业

我看不到原因1和原因2的证据。原因看起来像是技术背后的驱动力。
如果一个编程语言技术如此之差,然后它创建了一个新的工业来解决它自己本身的问题,则它会成为想从中牟利的人的好工具。

这就是OOP背后真正的驱动力。

以及一篇回复:Why "Why OO Sucks" Sucks
分享到:
评论
113 楼 inshua 2008-08-22  
你無非是想證明數學有的時候能先驗,但這種所謂的“先驗”必須在經驗基礎上,事後還要經過事實檢驗才行,在檢驗成功前還只是假設。

要反駁假設可以從其所依據的實驗數據,數學推導過程入手。

現在科學假設多的很,雖然偶爾能出幾個對的,但也要知道冰山下的大部分都湮沒無聞了。

馮諾依曼也不是傻瓜,今天還不是被你沒事批著玩。
112 楼 inshua 2008-08-22  
Trustno1 写道
inshua 写道
Trustno1 写道
引用
舉個老掉牙的例子,我研究烏鴉,研究了 n 種的烏鴉,於是我歸納出烏鴉是黑色的,并用數學的語言記錄,烏鴉的顏色位於 rgb(0,0,0)正x 附近,並且,我非常熱愛研究,我還從基因找到了烏鴉是黑色的證據,這個模型能完美的推導出不同種類的烏鴉的顏色。按說我這個研究已經無懈可擊了,可以交卷了,數學幫助我完成了任務,我贊美數學。

但是不幸的是,在某個該死的地方,發現了白烏鴉。
我可以有幾種辦法,1.不把白烏鴉當作烏鴉,給它起個別的名字 2.推翻我的模型,將白烏鴉納入其中。

這就是科學。不是數學有錯誤,而是我知識不完備,對不完備的事物建模,所以出現了錯誤。

我也举个老掉牙的例子,
从天王星发现海王星的过程,根据天王星的轨道观测值与数学计算误差很大,这个时候按照你的逻辑我们应该推翻原来的数学模型,否则就不科学了?



你這個例子可以放在烏鴉的例子後作為同一事體的例子。天王星的觀測值和計算誤差很大,是因為人們當時不知道也沒想過有海王星冥王星的存在,所以雖然模型挺不錯,但是結果仍然有問題。

但是模型推翻了没?


模型不推翻怎么加入海王星,以前的行星模型里都沒有海王星這個事物。
111 楼 Trustno1 2008-08-22  
inshua 写道
Trustno1 写道
引用
舉個老掉牙的例子,我研究烏鴉,研究了 n 種的烏鴉,於是我歸納出烏鴉是黑色的,并用數學的語言記錄,烏鴉的顏色位於 rgb(0,0,0)正x 附近,並且,我非常熱愛研究,我還從基因找到了烏鴉是黑色的證據,這個模型能完美的推導出不同種類的烏鴉的顏色。按說我這個研究已經無懈可擊了,可以交卷了,數學幫助我完成了任務,我贊美數學。

但是不幸的是,在某個該死的地方,發現了白烏鴉。
我可以有幾種辦法,1.不把白烏鴉當作烏鴉,給它起個別的名字 2.推翻我的模型,將白烏鴉納入其中。

這就是科學。不是數學有錯誤,而是我知識不完備,對不完備的事物建模,所以出現了錯誤。

我也举个老掉牙的例子,
从天王星发现海王星的过程,根据天王星的轨道观测值与数学计算误差很大,这个时候按照你的逻辑我们应该推翻原来的数学模型,否则就不科学了?



你這個例子可以放在烏鴉的例子後作為同一事體的例子。天王星的觀測值和計算誤差很大,是因為人們當時不知道也沒想過有海王星冥王星的存在,所以雖然模型挺不錯,但是結果仍然有問題。

但是模型推翻了没?
110 楼 inshua 2008-08-22  
Trustno1 写道
引用
舉個老掉牙的例子,我研究烏鴉,研究了 n 種的烏鴉,於是我歸納出烏鴉是黑色的,并用數學的語言記錄,烏鴉的顏色位於 rgb(0,0,0)正x 附近,並且,我非常熱愛研究,我還從基因找到了烏鴉是黑色的證據,這個模型能完美的推導出不同種類的烏鴉的顏色。按說我這個研究已經無懈可擊了,可以交卷了,數學幫助我完成了任務,我贊美數學。

但是不幸的是,在某個該死的地方,發現了白烏鴉。
我可以有幾種辦法,1.不把白烏鴉當作烏鴉,給它起個別的名字 2.推翻我的模型,將白烏鴉納入其中。

這就是科學。不是數學有錯誤,而是我知識不完備,對不完備的事物建模,所以出現了錯誤。

我也举个老掉牙的例子,
从天王星发现海王星的过程,根据天王星的轨道观测值与数学计算误差很大,这个时候按照你的逻辑我们应该推翻原来的数学模型,否则就不科学了?



你這個例子可以放在烏鴉的例子後作為同一事體的例子。天王星的觀測值和計算誤差很大,是因為人們當時不知道也沒想過有海王星冥王星的存在,所以雖然模型挺不錯,但是結果仍然有問題。
109 楼 Trustno1 2008-08-22  
引用
舉個老掉牙的例子,我研究烏鴉,研究了 n 種的烏鴉,於是我歸納出烏鴉是黑色的,并用數學的語言記錄,烏鴉的顏色位於 rgb(0,0,0)正x 附近,並且,我非常熱愛研究,我還從基因找到了烏鴉是黑色的證據,這個模型能完美的推導出不同種類的烏鴉的顏色。按說我這個研究已經無懈可擊了,可以交卷了,數學幫助我完成了任務,我贊美數學。

但是不幸的是,在某個該死的地方,發現了白烏鴉。
我可以有幾種辦法,1.不把白烏鴉當作烏鴉,給它起個別的名字 2.推翻我的模型,將白烏鴉納入其中。

這就是科學。不是數學有錯誤,而是我知識不完備,對不完備的事物建模,所以出現了錯誤。

我也举个老掉牙的例子,
从天王星发现海王星的过程,根据天王星的轨道观测值与数学计算误差很大,这个时候按照你的逻辑
这个时候我们的知识完备么?最终的结果告诉我们发现了海王星因此知识肯定不完备,那么我们应该推翻原来的数学模型?最终的结果告诉我们,无需更改数学模型.而且依靠原来的数学模型,理论推算出了新行星.


108 楼 Trustno1 2008-08-22  
庄表伟 写道
突然对这样的讨论,丧失兴趣了。

最近的思考是:“越来越多的事情,是多语言混合编程,完成的。”


这个没有错,但是仅仅如此是不够的.我认为,还需要继续追问,为什么语言A可以解决问题A,语言B却不可以?


107 楼 庄表伟 2008-08-22  
突然对这样的讨论,丧失兴趣了。

最近的思考是:“越来越多的事情,是多语言混合编程,完成的。”
106 楼 inshua 2008-08-22  
llade 写道
再出一道题:
一个信奉唯心主义和一个信奉唯物主义的人还有一个既不唯心又不唯物的人以及一个既唯心又唯物的人在辩论。你说谁先被气死?


辯啥子論,人這么齊,搓麻將噻。好了,別灌水了,小心被 suspend。
105 楼 llade 2008-08-22  
再出一道题:
一个信奉唯心主义和一个信奉唯物主义的人还有一个既不唯心又不唯物的人以及一个既唯心又唯物的人在辩论。你说谁先被气死?
104 楼 llade 2008-08-22  
inshua 写道
llade 写道
inshua 写道
llade 写道
思考题:
假如有一天科技非常发达了,电脑可以模拟一切,假如某台超级计算机模拟北京奥运会,恰巧在某天这台电脑需要虚拟javaeye网站,模拟到这篇帖子,你说这台计算机会不会当掉?

有兴趣的人可以去看看《异次元骇客》,该片讨论到一个很有趣的虚拟现实的问题。



我給大家透露一個秘密,其實,我們現在就在一個電腦里,我和你都是進程,它要模擬我們只要 copy 過去就行了。


看来我和你都是知道秘密的人啊。明天会不会给干掉啊?


不要緊,我用的是繁體字,檢查不到。


未必,说不定模拟我们的计算机的字符集是big5的
103 楼 inshua 2008-08-22  
llade 写道
inshua 写道
llade 写道
思考题:
假如有一天科技非常发达了,电脑可以模拟一切,假如某台超级计算机模拟北京奥运会,恰巧在某天这台电脑需要虚拟javaeye网站,模拟到这篇帖子,你说这台计算机会不会当掉?

有兴趣的人可以去看看《异次元骇客》,该片讨论到一个很有趣的虚拟现实的问题。



我給大家透露一個秘密,其實,我們現在就在一個電腦里,我和你都是進程,它要模擬我們只要 copy 過去就行了。


看来我和你都是知道秘密的人啊。明天会不会给干掉啊?


不要緊,我用的是繁體字,檢查不到。
102 楼 llade 2008-08-22  
inshua 写道
llade 写道
思考题:
假如有一天科技非常发达了,电脑可以模拟一切,假如某台超级计算机模拟北京奥运会,恰巧在某天这台电脑需要虚拟javaeye网站,模拟到这篇帖子,你说这台计算机会不会当掉?

有兴趣的人可以去看看《异次元骇客》,该片讨论到一个很有趣的虚拟现实的问题。



我給大家透露一個秘密,其實,我們現在就在一個電腦里,我和你都是進程,它要模擬我們只要 copy 過去就行了。


看来我和你都是知道秘密的人啊。明天会不会给干掉啊?
101 楼 inshua 2008-08-22  
llade 写道
思考题:
假如有一天科技非常发达了,电脑可以模拟一切,假如某台超级计算机模拟北京奥运会,恰巧在某天这台电脑需要虚拟javaeye网站,模拟到这篇帖子,你说这台计算机会不会当掉?

有兴趣的人可以去看看《异次元骇客》,该片讨论到一个很有趣的虚拟现实的问题。



我給大家透露一個秘密,其實,我們現在就在一個電腦里,我和你都是進程,它要模擬我們只要 copy 過去就行了。
100 楼 llade 2008-08-22  
思考题:
假如有一天科技非常发达了,电脑可以模拟一切,假如某台超级计算机模拟北京奥运会,恰巧在某天这台电脑需要虚拟javaeye网站,模拟到这篇帖子,你说这台计算机会不会当掉?

有兴趣的人可以去看看《异次元骇客》,该片讨论到一个很有趣的虚拟现实的问题。
99 楼 hurd 2008-08-22  
如果数学能帮我们更好的完成工作,还是有必要使用的。

98 楼 llade 2008-08-22  
inshua 写道
Trustno1 写道
引用
全程是因为生物学家一直在分类,但是分类不是很理想不够自然,然后采用了数学来分类,后来情况好转了。也就是说,数学提高了分类的理想度和自然度(汗,这是啥概念),不能视为数学证明了分类是对的。

什么叫对?对不对要有标准.标准是什么,是分类的理想度和自然度。既然说提高了理想度和自然度,那么必然就有理想的分类,和不理想的分类.那么哪一种分类更为理想呢?数学演算的结论就能告诉你.


你搞錯了,不是數學的演算告訴我是對是錯,而是現實世界驗證是對是錯。當然,數學可以先檢查一下有沒有推理錯誤,但是最終還是要拿到現實世界檢驗才能知道對錯。

舉個老掉牙的例子,我研究烏鴉,研究了 n 種的烏鴉,於是我歸納出烏鴉是黑色的,并用數學的語言記錄,烏鴉的顏色位於 rgb(0,0,0)正x 附近,並且,我非常熱愛研究,我還從基因找到了烏鴉是黑色的證據,這個模型能完美的推導出不同種類的烏鴉的顏色。按說我這個研究已經無懈可擊了,可以交卷了,數學幫助我完成了任務,我贊美數學。

但是不幸的是,在某個該死的地方,發現了白烏鴉。

我可以有幾種辦法,1.不把白烏鴉當作烏鴉,給它起個別的名字 2.推翻我的模型,將白烏鴉納入其中。

這就是科學。不是數學有錯誤,而是我知識不完備,對不完備的事物建模,所以出現了錯誤。

科學上就是研究一個特定事物而已,從實踐中來,還要回實踐中去。

分類學也是一樣的,我可以按某些指標的量來分類,但是如果遇到新物種,和現有分類有衝突,我還是得乖乖的調整分類。沒有誰能證明現在的分類就是真理。正如古人提出的,邏輯不能推導出新知識,數學也是一樣。

這個問題跑題了,變成普及數學是工具了。當然,理解數學只是工具也是一件好事。

我想說的是,自有文明以來,人類已經研究了不少事物,鑒於這些研究如此成功,其思考方式,對於書寫一個成功的軟件作品,顯然極具參考意義。這些思考方式的源頭可以追溯到柏拉圖的理念,亞里士多德的形而上學,我們之所以采用 oo 是因為 oo 是以此為依據的。oo 里的 meta 定義,可以直接追溯到柏拉圖的理念,oo 的方法學,可以追溯到亞里士多德的形而上學。科學就是這么走過來的,所以 oo 應該也是不錯的,這只是一種信念。

現在什麽學科都可以往數學上靠,分析出指標,定量化,然後把數學祭出來,但為何數學能解釋這么多問題?還能不能解釋更多的新問題?誰也說不清楚,這也只是一種信念而已。


一个字,劝你还是别和上帝讨论哲学问题,整点实际的。人为什么要写程序,是因为计算机笨,不能识别人的语言,甚至连多一个逗号少个分号都不行。人脑还是比电脑好使,至少那么多错别字还是能看懂,而且不会烧掉,假如这帖子能编程代码输入到冯诺依曼机,估计只有黑客帝国里matrix不会烧掉,但至少让它当了6次机吧(几次记不住了,人脑就是会遗忘啊)。
97 楼 inshua 2008-08-22  
Trustno1 写道
引用
全程是因为生物学家一直在分类,但是分类不是很理想不够自然,然后采用了数学来分类,后来情况好转了。也就是说,数学提高了分类的理想度和自然度(汗,这是啥概念),不能视为数学证明了分类是对的。

什么叫对?对不对要有标准.标准是什么,是分类的理想度和自然度。既然说提高了理想度和自然度,那么必然就有理想的分类,和不理想的分类.那么哪一种分类更为理想呢?数学演算的结论就能告诉你.


你搞錯了,不是數學的演算告訴我是對是錯,而是現實世界驗證是對是錯。當然,數學可以先檢查一下有沒有推理錯誤,但是最終還是要拿到現實世界檢驗才能知道對錯。

舉個老掉牙的例子,我研究烏鴉,研究了 n 種的烏鴉,於是我歸納出烏鴉是黑色的,并用數學的語言記錄,烏鴉的顏色位於 rgb(0,0,0)正x 附近,並且,我非常熱愛研究,我還從基因找到了烏鴉是黑色的證據,這個模型能完美的推導出不同種類的烏鴉的顏色。按說我這個研究已經無懈可擊了,可以交卷了,數學幫助我完成了任務,我贊美數學。

但是不幸的是,在某個該死的地方,發現了白烏鴉。

我可以有幾種辦法,1.不把白烏鴉當作烏鴉,給它起個別的名字 2.推翻我的模型,將白烏鴉納入其中。

這就是科學。不是數學有錯誤,而是我知識不完備,對不完備的事物建模,所以出現了錯誤。

科學上就是研究一個特定事物而已,從實踐中來,還要回實踐中去。

分類學也是一樣的,我可以按某些指標的量來分類,但是如果遇到新物種,和現有分類有衝突,我還是得乖乖的調整分類。沒有誰能證明現在的分類就是真理。正如古人提出的,邏輯不能推導出新知識,數學也是一樣。

這個問題跑題了,變成普及數學是工具了。當然,理解數學只是工具也是一件好事。

我想說的是,自有文明以來,人類已經研究了不少事物,鑒於這些研究如此成功,其思考方式,對於書寫一個成功的軟件作品,顯然極具參考意義。這些思考方式的源頭可以追溯到柏拉圖的理念,亞里士多德的形而上學,我們之所以采用 oo 是因為 oo 是以此為依據的。oo 里的 meta 定義,可以直接追溯到柏拉圖的理念,oo 的方法學,可以追溯到亞里士多德的形而上學。科學就是這么走過來的,所以 oo 應該也是不錯的,這只是一種信念。

現在什麽學科都可以往數學上靠,分析出指標,定量化,然後把數學祭出來,但為何數學能解釋這么多問題?還能不能解釋更多的新問題?誰也說不清楚,這也只是一種信念而已。
96 楼 Trustno1 2008-08-22  
引用
全程是因为生物学家一直在分类,但是分类不是很理想不够自然,然后采用了数学来分类,后来情况好转了。也就是说,数学提高了分类的理想度和自然度(汗,这是啥概念),不能视为数学证明了分类是对的。

什么叫对?对不对要有标准.标准是什么,是分类的理想度和自然度。既然说提高了理想度和自然度,那么必然就有理想的分类,和不理想的分类.那么哪一种分类更为理想呢?数学演算的结论就能告诉你.
95 楼 inshua 2008-08-22  
Trustno1 写道
inshua 写道
Trustno1 写道
引用
科学本来就是这样的,没什么奇怪。

那么我觉得科学本来就不是这样的,很奇怪吗?

引用

你还没有用数学证明门纲目科分类是对是错呢,要不要试试?
http://epub.cnki.net/grid2008/detail.aspx?filename=DQXB198301004&dbname=CJFD1983

http://scholar.ilib.cn/Abstract.aspx?A=bjgydxxb200103003

http://baike.baidu.com/view/558592.htm

有些东西呢不要想当然,懒得去google就满嘴跑火车不是什么好习惯.


无语,这可不叫用数学证明“门纲目科”分类正确啊,这应该叫用数学方法来规范门纲目科分类,采用数学方法的人,首先认定应该按门纲目科分类,然后才提出数学手段


另外呢,要仔细看东西

引用
生物分类与非生命事物的分类具有本质区别,生物分类学家追求理想的自然分类。然而什么是真正自然的分类?如何达到这个目的?关于生物分类学中诸如此类的许多根本问题,分类学家意见不一致。50年代生物分类产生两种对立的观点,即表征与分支两种分类观点。基于两种不同的观点,数量分类学产生两种不同的数量分类方法。

不就是在回答你,为什么这样的分类是正确的自然的,那样分类不是正确的自然的?


过程(这个不是并发的):

1. 生物分类学家追求理想的自然分类    // 这说明生物学家的初衷是要分类
2. 如何达到这个目的                 // 达到什么目的,达到理想的自然(的)分类,而不是说为什么要分按门纲目科分类
3. 数量分类学产生两种不同的数量分类方法  // 此时采用了数学方法

全程是因为生物学家一直在分类,但是分类不是很理想不够自然,然后采用了数学来分类,后来情况好转了。也就是说,数学提高了分类的理想度和自然度(汗,这是啥概念),不能视为数学证明了分类是对的。
94 楼 Trustno1 2008-08-22  
inshua 写道
Trustno1 写道
引用
科学本来就是这样的,没什么奇怪。

那么我觉得科学本来就不是这样的,很奇怪吗?

引用

你还没有用数学证明门纲目科分类是对是错呢,要不要试试?
http://epub.cnki.net/grid2008/detail.aspx?filename=DQXB198301004&dbname=CJFD1983

http://scholar.ilib.cn/Abstract.aspx?A=bjgydxxb200103003

http://baike.baidu.com/view/558592.htm

有些东西呢不要想当然,懒得去google就满嘴跑火车不是什么好习惯.


无语,这可不叫用数学证明“门纲目科”分类正确啊,这应该叫用数学方法来规范门纲目科分类,采用数学方法的人,首先认定应该按门纲目科分类,然后才提出数学手段


另外呢,要仔细看东西

引用
生物分类与非生命事物的分类具有本质区别,生物分类学家追求理想的自然分类。然而什么是真正自然的分类?如何达到这个目的?关于生物分类学中诸如此类的许多根本问题,分类学家意见不一致。50年代生物分类产生两种对立的观点,即表征与分支两种分类观点。基于两种不同的观点,数量分类学产生两种不同的数量分类方法。

不就是在回答你,为什么这样的分类是正确的自然的,那样分类不是正确的自然的?

相关推荐

    大师品软件_Why Software Sucks

    《大师品软件_Why Software Sucks》是一本深入探讨软件设计缺陷和用户体验问题的书籍,由David S. Platt撰写。这本书旨在揭示为什么某些软件在使用过程中让人感到困扰,并提出改善软件设计的策略。作者Platt是一位...

    Why.Software.Sucks

    Any book is the product of a team effort. In this one, I've had an out- standing supporting cast. Everyone at Addison-Wesley understood and got behind the concept of a book for the users of ...

    itsucks-0.4.1开源爬虫

    【itsucks-0.4.1开源爬虫】是一个针对初学者友好的网络爬虫工具,它的出现使得没有编程背景的用户也能轻松进行数据抓取。这个最新版本的itsucks,不仅提供了完整的爬虫功能,还引入了一个简洁的图形化用户界面(GUI...

    itsucks-0.4.1.zip

    【itsucks-0.4.1.zip】是一个包含开源Java Web Spider项目的压缩包,这个项目被称为itSucks。itSucks的设计目标是帮助用户轻松构建网络爬虫,它使用了Web机器人技术,允许用户通过定义下载规则来抓取网页内容。项目...

    itsucks开源代码

    爬虫源码,开源 java 很好 强大 可扩展

    信息安全_数据安全_Why_the_role_of_CISO_sucks_and_w.pdf

    信息安全_数据安全_Why_the_role_of_CISO_sucks_and_w 信息安全研究 金融安全 安全人才 安全对抗 法律法规

    why-your-test-suite-sucks

    标题“why-your-test-suite-sucks”暗示了我们讨论的主题是关于测试套件存在的问题以及如何改进它们。测试套件是软件开发过程中的重要组成部分,它确保代码的质量、稳定性和可靠性。然而,当测试套件出现问题时,...

    Atc Sucks-crx插件

    【Atc Sucks-crx插件】是一款针对英文用户的浏览器扩展程序,主要目的是表达用户对“ATC”(可能是某个网站、服务或功能的缩写)的不满情绪。这款插件由开发者创建,用于向用户展示ATC存在的问题,或者提供某种方式...

    Smooth Scroll Sucks-crx插件

    因此,【Smooth Scroll Sucks-crx插件】致力于让浏览器的滚动条重获自由,释放用户在浏览时可能遇到的困扰。它通过禁用页面上的平滑滚动特效,使鼠标滚轮和触摸板的操作更加直接,使浏览体验更接近传统习惯。 现代...

    Vegandale Sucks-crx插件

    【Vegandale Sucks-crx插件】是一款专为英文用户设计的浏览器扩展程序,主要功能是替换网络上关于“Vegandale”的相关信息,将其转化为“Gentrified Parkdale”。这款插件针对的是那些可能对“Vegandale”这一名称...

    itsucks:http

    ItSucks 网络爬虫 描述 这个项目是一个具有下载(和恢复)文件能力的java网络蜘蛛(网络爬虫)。 它还可以使用正则表达式和下载模板进行高度定制。 所有后端功能也可在单独的库中使用。 官网 执照 本地开发使用 将 ...

    IE Sucks-crx插件

    IE SUCKS这么糟糕,实际上是有趣的观看失败! IE样式信息条在页面中的障碍码时发光。 无广告! Internet Explorer是一个浏览器的F ****笑话,并字面上持有进步! 在逐步淘汰之前庆祝最终几天,用IE吸收插件。 每当...

    rabbit sucks!-crx插件

    【标题】:“rabbit sucks!-crx插件”是一个针对特定网站或应用的浏览器扩展,其主要功能是优化用户界面,提供更加个性化的浏览体验。这个插件的名称可能具有一定的幽默感,暗示它可以帮助用户摆脱某些他们不喜欢的...

    DuPont Sucks FTP-开源

    DuPont Sucks FTP(DPS-FTP)是一个开源的FTP客户端工具,专为用户提供便捷的文件传输服务。这个项目的名称“DuPont Sucks FTP”可能源于一种幽默或反讽的表达,暗示它并非由杜邦公司开发,而是由社区驱动的独立项目...

    kevingreen.sucks

    【标题】"kevingreen.sucks" 是一个网站项目,基于 "Simple Next App" 构建,主要用于表达对个人或事物的不满或者批评。在互联网上,".sucks" 域名通常被用来创建一个平台,让人们可以公开讨论他们认为有问题的事物...

    IE吸盘「IE Sucks」-crx插件

    使用IE Sucks插件庆祝淘汰前的最后几天。 每当遇到旨在帮助Internet Explorer像老人一样上楼的代码时,我们都会像过去一样发出经典的IE信息栏。 您知道,这意味着您只有更多无用的废话可以破坏您的浏览器,除非这次...

    sucks:用python制作的小CRUD

    标题中的“sucks:用python制作的小CRUD”表明这是一个使用Python编程语言开发的简单创建、读取、更新和删除(Create, Read, Update, Delete,简称CRUD)应用程序。CRUD是数据库操作的基础,是任何数据管理系统的基石...

    your-band-sucks-v2:通过不良专辑封面分享音乐

    【标题解析】:“your-band-sucks-v2”很可能是一个音乐相关的项目或应用,可能是由开发者创建的一个幽默或者讽刺性的音乐分享平台。"v2"表示这是项目的第二个版本,通常意味着在原有基础上进行了改进和优化。 ...

    Moments Sucks-crx插件

    如果您确实讨厌Twitter内的Moments标签,并且在尝试查看通知时始终单击此处,则只需安装此… 如果您确实讨厌Twitter内的Moments选项卡,并且在尝试查看通知时始终单击此处,则只需安装此轻量级扩展程序即可将其发送...

Global site tag (gtag.js) - Google Analytics