[CoffeeScript]圖解C++、CoffeeScript 和 Ruby 的複雜度

來源:互聯網
上載者:User

標籤:coffeescript

??大多數人都同意C++是門相當複雜的語言,不過它究竟有多複雜?由於好奇心作祟,我比較了C++、CoffeeScript、Ruby這幾門語言的必學功能作為複雜程度評判的標準。雖然CoffeeScript和Ruby都是動態語言,這點明顯和C++不同,但它們都是多範例語言,而且(至少某種程度上)支援物件導向、函數式、過程式以及普通編程,所以這篇文章可以簡單地理解為C++ vs. 動態語言。

這裡拿來比較的概念既包括類和操作這樣大的範疇,也包括if-else狀態和while迴圈這樣的較細節的地方。從不同的角度比較語言的複雜度肯定會大不相同,所以這些數字只能粗略地反映語言複雜度。但無論如何,我覺得還是得到了一些有趣的資料。

同樣,我對其它靜態語言,比如F#和Scala一起做比較也高度興趣,可惜我並不熟悉它們,所以很難做出正確的比較。

CoffeeScript

首先來看看CoffeeScript:(單擊圖片,可查看大圖。下同)

它總共有8大範疇共68個概念。

注意:我把元編程也當作一個概念,因為它很大程度上基於可執行類體(executable class body)這一理念。

Ruby

Ruby明顯要更加複雜,總共11大範疇96個概念。它比CoffeeScript有更加複雜的類模型,比如常量、塊、操作符重載之類。

C++

最後,我們來看看C++:

總共18大範疇、186個概念,幾乎是Ruby的兩倍、CoffeeScript的3倍!

C++裡的某些概念(比如命名解析)因為有很多微妙的規則,所以更加複雜。而且因為有太多不同的範疇,C++裡的名稱概念也比其它語言更複雜。相比之下,在動態語言裡,幾乎所有東西都是常量或者變數(包括類名和函數名)。

還有一點,我有意地忽略了“編譯”和“連結”,因為CoffeeScript和Ruby裡並沒有這些功能。

從可以看出,C++複雜是有很多原因的,其中之一就是靜態類型系統(static type system),另一方面是因為模板(template),還有就是命名系統(name system)以及複雜的類模型(complex class model)。底層的驅動肯定是效能和型別安全的。

還缺少哪些資訊?

我沒提到程式員在練習中需要掌握多少技巧,比如:

● 標準類庫(standard libraries)

● 程式設計語言習語和最佳範例(language idioms and best practices)

● 並發概念(concurrency concepts)

● 設計模式(design patterns)

這一點在從入門到精通時更為明顯。

我相信在這一點C++同樣是最複雜的。比如像《 C++ Coding Standards 》這樣的書:《101 Rules》、《 Guidelines 》和《Best Practices》以及《 Effective C++ 》等等。這些書雖然已經涉及很多內容,但是旨在解決日常問題,並沒有考慮到複雜的使用。C++絕對比這些書裡說的要更加博大精深!

同樣,其它程式設計語言也有最佳範例和習語需要學習,但我覺得大部分語言的會比C++少得得多。

重點是什嗎?

我並不是為了抱怨C++到底是多麼龐大和複雜。對於硬體、效能限制明顯的大型項目,綜合考慮工具、庫和開發人員方面的因素,沒有哪種語言能夠代替C++。

但是,你需要要注意到C++編程裡哪些是必須瞭解的,這一點很重要,因為這深深影響到課程教學和作為項目語言的選擇。

C++並不是一門很容易入門的程式設計語言,相反學習這門語言會很費時間,而掌握它更費時間。因此,“自上而下”地學習C++很有意義!

隨著C++11標準的出台,C++現代進階子集(及其標準庫)的入門變得相對容易一些了,你只需要之後逐漸理解其複雜的和低級特性。換句話說學習std::shared_ptr應該在裸指標之前,lambda在仿函數之前,std::array在C樣數組之前。

如果你想使用C++開發新項目,開發人員的經驗等級和剩下的鞏固C++能力的時間很需要考慮。

下面這一點也很重要:因為C++的複雜性,開發人員語言知識經驗差別可能會非常大,所以在面試和培訓時要非常注意這點!團隊成員水平有明顯的差距時,能力強的和弱的開發人員都不會舒服。

最後是一張3種語言近距離比較的圖:

[CoffeeScript]圖解C++、CoffeeScript 和 Ruby 的複雜度

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.