我想作者的“C++語言已死”的“死”並不是指“消失”的意思,而是指“退出舞台”或“風光不再”的意思。且不從技術的角度進行周密的分析,只從事物的發展規律來看,也應該如此,事實上的確如此。
C++語言發展歷史是:ALGOL60->CPL->BCPL->B->C,在這個發展鏈條中,“操作硬件的方便性”是主要驅動力。可以理解,在那個連操作系統都還剛剛出現的年代,與硬件直接打交道是一門語言是否成功的、非常重要的因素。
不可否認,C在此方面的確有一些長處,比匯編更好理解,對硬件的編程非常直接方便。我是90年開始接觸C++語言的,老師東北大學計算機專業本科生,因89學潮分配到我們那裡的一個工廠當推銷員,我在讀的湖南岳陽一中將他請過來教我們計算機)說,C++語言是目前世界上最好用的語言,我認為“最好用”三字說得很好。
“最好用”是指對當時的編程環境和編程需求而言,IT發展到今天,已經不再是PC的時代,而是浏覽器時代起碼有這個明確的方向了)。軟件產業的發展就象人類的工業發展一樣,已經到了大規模自動化生產的時代,試問當今還有幾人在用C++語言寫Web應用?C++語言就好象一把锉刀,看似簡單,但功能強大,可以锉出你所需要的任何形式的模具,但除了“勞斯萊斯”這樣的上千萬的車外,誰還會用锉刀手工制作一輛汽車?如果世界都還停留在手工操作年代,工業能夠發展現在的水平?已經發展到現在的水平的今天,誰還會用锉刀生產工業產品呢?
其實是有的,锉刀做為人類的生產工具之一在很長一段時間內都不會消失,就象C++語言一樣,C++語言還是有其用武之地,但C發揮優勢的地方不多,得符合以下條件:定制、開發成本預算高、產品銷量大以減小每個產品的平均軟件開發成本)。捻著指頭一手,C最好發揮的揚所就在嵌入式了。
再來看看嵌入式這塊C的橋頭堡。做嵌入式,成本無外乎兩方面:平均硬件成本、總體軟件開發成本。在目前來看,這兩方面是矛盾的。如果采用J2ME或是Windwos CE之類的平台做開發,由於從業門檻的降低使得軟件開發成本會大大降低,開發效率會提高很快,但對芯片的性能就提出較高的要求,使得硬件成本大大增加,這種芯片用在現在的微波爐、洗衣機等電器上是很浪費的;
第二種做法當然是降低芯片的成本,但對芯片的編程就要更苛刻,JVM、CLR之類的東西顯然是不能整個搬了,只能從硬件驅動寫起,自己來完成所需要的所有功能非常象用锉刀進行手工制作),硬件成本是大大除低了,但開發成本就提高了。就目前相對廉價的中國人才市場來看,許多開發商都會選用第二種方案,於是C++語言依然保持在這個領域的龍頭老大。但這是暫時的,硬件發展速度用日新月異來形容是不過份的,當硬件的成本足夠低廉的時候,你是用JVM、CLR,還是用C呢?
C++語言的另一大功能是“教學語言”,這點不錯,我現在從事教學工作,C++語言是我經常講授的一門課,的確很不錯,不僅讓初學編程的人培養一種嚴謹的思維,也能通過對針指的學習領悟其他編程語言的語法實質。
但我個人認為Java或C#也應該是一門不錯的教學語言,這兩門語言比C復雜,這是做為教學語言的缺點,但最大的優點在於其是完全OOP的,而C是面向過程,在這個OO的年代,以C做為入門的編程者常常需要幾年的時間來轉換思維到OO上來。我的感覺是,C++語言做為入門教學語言在很長一段時間內不可改變,也不能改變,但學時數應該減少,而Java或C#語言應該做為C++語言的後繼必修課應該增加學時。