逛圖書館的時(shí)候,偶然看到《程序員的吶喊》這本書乃坤,欣喜不已苛让,于是就拿來(lái)翻了翻。因?yàn)橐郧熬吐?tīng)說(shuō)過(guò)這本書湿诊,只是不知道里面講的是什么狱杰。今天有機(jī)會(huì)看到,當(dāng)然不能放過(guò)啦厅须!
剛剛讀完一篇我就被嚇到了仿畸,書里面竟然這樣評(píng)價(jià)C++:
C++非常冷漠,可以說(shuō)地球上最糟糕的語(yǔ)言
看到這句話,我有點(diǎn)受不了了错沽,但是我還是堅(jiān)持看完了這篇文章《巴別塔》簿晓,因?yàn)槲蚁胫谰烤故鞘裁丛蜃屪髡撸?a target="_blank">Steve Yegge )這么吐槽C++。
剛看到這篇文章的題目《巴別塔》千埃,我就滿臉的疑惑憔儿,“‘巴別塔’是什么鬼,跟這篇文章有什么聯(lián)系放可?”查過(guò)資料才知道皿曲,原來(lái)巴別塔只是作者的一個(gè)比喻,比喻編程世界里不同的語(yǔ)言吴侦。這個(gè)不是重點(diǎn),先不深究了坞古。下面我來(lái)總結(jié)一下作者為什么說(shuō)C++是“地球上最糟糕的語(yǔ)言”:
- 冷漠备韧,C++完全缺乏自省能力
首先我們要知道“自省”是什么意思,確切的說(shuō)應(yīng)該是“編程語(yǔ)言的自省”痪枫。這個(gè)概念是針對(duì)面向?qū)ο蟮木幊陶Z(yǔ)言來(lái)說(shuō)的织堂,具體是指程序在運(yùn)行時(shí)能知道對(duì)象的類型。作者說(shuō)的這一點(diǎn)奶陈,我剛開(kāi)始有些認(rèn)同易阳,但是就目前來(lái)說(shuō)我覺(jué)得這個(gè)觀點(diǎn)可能就有點(diǎn)太過(guò)于偏激,C++并不是完全缺乏自行能力吃粒,只不過(guò)是相對(duì)較弱而已潦俺,因?yàn)槲覀兛梢酝ㄟ^(guò)typeid
來(lái)獲取對(duì)象的類型(這是我目前所知道的)。
- 愚鈍徐勃,愚鈍的語(yǔ)言寫不出聰明的系統(tǒng)
作者這里的意思是C++完成一個(gè)軟件需要巨大的代碼量事示,他總是喜歡拿亞馬遜來(lái)說(shuō)事兒:
像山一樣高的排泄物,規(guī)模超過(guò)你見(jiàn)過(guò)的任何山脈僻肖。每當(dāng)你要修復(fù)什么東西的時(shí)候肖爵,非得爬到最中間才行。
這一點(diǎn)作者說(shuō)的一點(diǎn)也沒(méi)錯(cuò)臀脏,用過(guò)MFC的人應(yīng)該都深有體會(huì)劝堪。但是我覺(jué)得不能用愚蠢來(lái)形容這個(gè)語(yǔ)言,這個(gè)評(píng)價(jià)實(shí)在是太嚴(yán)重了揉稚。我這里并不是想否定作者的話秒啦,我也沒(méi)有資格(因?yàn)樽髡咴谖闹姓f(shuō)到“我建議你去了解一下優(yōu)秀的編程語(yǔ)言是什么樣子的,如Lisp窃植,然后你才有資格否定我的話”)帝蒿,我只是想說(shuō):事物不是一成不變的,任何編程語(yǔ)言都會(huì)成長(zhǎng)巷怜,更何況C++較以前已經(jīng)改進(jìn)了很多葛超;而且我不認(rèn)為世界上會(huì)有一門“天生”就優(yōu)秀的編程語(yǔ)言暴氏,Lisp語(yǔ)言本身就比C++出生的早!
參考資料
- "編程語(yǔ)言的自省". 學(xué)步園. http://www.xuebuyuan.com/. 2013-01-09
- typeid?Operator.?MSDN.?http://msdn.microsoft.com/EN-US/library/fyf39xec(v=VS.140,d=hv.2).aspx>.