国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java替代C語言的可能性

2019-11-18 15:32:57
字體:
來源:轉載
供稿:網友

    前不久CSDN刊登了一篇《C語言已經死了》的文章,引起了一些爭論。其實那篇文章是從Ed Burnette的博客上轉載來的,原文題目是“Die, C, die!”,直譯過來應該是《去死吧,C!》,表達的是一種詛咒,而不是判定。

翻譯稱《C語言已經死了》,顯然是一種煽風點火的誤讀。CSDN網友對于其觀點已經進行了批判,不過坦率地說,由于這些批判基于一個扭曲的翻譯文本,所以不但沒有什么新鮮的地方,而且也沒有抓住原作者的重點。

    實際情況是這樣的,最近一段時間,在國外的技術社群里刮起了一股風,不少人在討論java做為C語言替代者而成為最主流的基礎軟件編程語言的可能性。從大部分人發表的觀點來看,對于Java替代C的趨勢還是支持的。

    基礎軟件是指這樣一類軟件,其主要任務是把計算機的潛能充分發揮出來,面向上層應用軟件提供一個高效、可靠的功能集。這些軟件會被密集地調用,性能上的一點點滯后都會在實踐中被成百上千倍的放大。所以對于基礎軟件來說,性能至少與可靠性一樣重要。我們在一些基礎軟件的源代碼里,經常看到一些丑陋的設計,看到一些變態的黑客技巧,在其他的領域里,這是不被鼓勵的,但是在基礎軟件中,這就是合理的,可以接受的。

    C語言目前仍在一些領域里堅挺,在操作系統、虛擬機和設備驅動程序開發方面,它可能是永遠的王者。但是在其他的基礎軟件領域,比如數據庫、網絡服務器、圖形圖像處理等,C語言繼續占據霸主地位的原因其實只有兩個,一是快,二是熟悉的人多,而且經驗豐富。

    但是這兩點現在都遭到了挑戰。

    首先是速度。Java的執行速度在JDK1.4的時候達到了這樣一個水平,就是對于一個一般水平的開發者來說,他寫的C++程序已經不再比對等的Java 程序跑得更快了。隨后的JDK 5.0和6.0進一步提高了執行性能,由不同的組織舉行的多項評測結果表明,Java與C語言的整體執行效率差距在一倍以內,也就是說,素以速度著稱、并且為了速度放棄了很多東西的C語言,現在比裝備齊全的Java只快不到一倍了。這還不算,假如考慮到新的計算環境,C語言的速度優勢有可能僅僅是一個錯覺。因為,世界上只有很少的人有能力在多CPU計算平臺上用C語言寫出又快又正確的大程序,在這些人中間,又只有很少很少的人有能力用C語言寫出一個在大型的、異構的網絡環境下能夠充分發揮各節點計算能力的大規模并行程序。也就是說,你也許有能力把程序效能提高一倍,從而充分發揮一臺價值6000元人民幣的PC的計算潛力,為客戶節省1000元錢。但假如是在一個由1000臺機器組成的大型異構網絡并行計算的環境下,你寫的C程序恐怕性能還會遠遠低于對應的Java程序,更不要說巨大的后期維護成本,而由此帶來的損失可能是1000萬或者更多。

    其次是經驗。很多人都宣稱自己的C功力如何如何了得,但是實際上,即使是真正的C高手也不得不花相當可觀的時間來尋找并且調試錯誤,尤其是內存方面的錯誤。大部分用C寫的上規模的軟件都存在一些內存方面的錯誤,需要花費大量的精力和時間把產品穩定下來。這還沒有把安全方面的缺陷考慮在內,現在大部分的開發者在代碼安全方面的知識都很薄弱,安全漏洞在代碼中相當普遍,而在C語言中,這一不足暴露得格外明顯。最大的挑戰或許得說是并發問題了,并發是一個很復雜的問題,需要在相當高的抽象層面上解決,而C語言的抽象機制過于簡單,提供不了高層的抽象,因此在開發者只能從一些“并發原語”出發去構造并發程序,這跟用鉛筆刀鋸大樹沒什么分別,直截了當地說,大部分C程序員根本沒有能力編寫高效無缺陷的并發程序。

    所以殘酷的事實是,當一個人說自己的C語言如何了得,經驗如何豐富時,非常可能他說的是,自己在用C語言寫單機、單線程的,不會遭到外界攻擊的,在時間預算上沒有什么壓力,而且用戶能夠忍受一個很長的產品穩定期的應用程序方面非常有經驗。遺憾的是,市場環境和計算環境已經完全變化。面對更復雜的計算環境,用C語言來編寫高質量的大規模軟件,是只有真正的專家團隊才能完成的工作。假如你曾經有過連續數日苦苦追蹤和調試一個內存泄露、或者線程錯誤的經歷,你就會明白,你可能不是這樣的專家。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台前县| 山东| 梧州市| 安平县| 棋牌| 温宿县| 龙井市| 舞钢市| 巨野县| 尤溪县| 张家港市| 抚远县| 山西省| 社会| 蓬溪县| 靖安县| 读书| 桐乡市| 剑阁县| 石台县| 阆中市| 泊头市| 宜宾市| 黄平县| 卢龙县| 乳山市| 新和县| 顺义区| 武义县| 尚志市| 和平区| 鄯善县| 湟源县| 镇康县| 兴义市| 德清县| 霍城县| 郴州市| 庄河市| 鹿邑县| 大邑县|