為什麼像 Java、C、C++ 這樣的靜態語言會比 Python、Ruby 這樣的動態語言流行得多?

來源:互聯網
上載者:User
個人覺得像 Ruby 這樣的動態語言簡潔得多。

回複內容:

我覺得不應該看靜態還是動態,而要看強型別和弱類型。
強型別比弱類型不容易出錯,而弱類型只是省點代碼而已。

python與php都是動態語言,但在python類型上比php嚴謹。舉例如下:
a = [1, 2, 3];print(a['1']);b = {0:1, 'a':2};print(a['0']);
C/C++ 有強烈的學術背景,Java / C# 有強烈的商業背景,這些背景確保了有足夠多的人和公司對這些語言有信心,從而促進了這些語言的大規模應用,之後就靠慣性了。
看看 Python 和 Ruby 在 web 開發領域成長速度就知道,在面對一個與人們熟悉的環境有所區別的問題的適合,人們才會重新開始審視自己手裡的選擇、放棄習慣而做出更合理的選擇。最關鍵的一點:國內大學沒有Python和Ruby的課。因為靜態類型有利於工具做靜態分析,有利於效能最佳化,有利於代碼可讀性
有些人總是拿完成同樣任務所用代碼量來做比較,得出python優於java的結論,不得不說這是非常片面的觀點。
java是有些囉嗦,不過ide能幫忙減少80%以上的鍵盤敲擊,同時靜態分析能幫忙解決80%以上的低級錯誤,代碼提示能幫忙減少80%以上的查文檔時間,至於強大的重構能力更是python望塵莫及的,所以只要是稍微大的項目,用java很可能比python開發速度更快1. 動態語言相對來說速度慢些.
2. 涉及到一些大的工程,Java/C/C++來說可以系統性的更準確高效的解決問題.
3. 當越到低層和硬體關係更近時, C/C++可以更好的完成任務.直接編譯成機器語言.
而Python和Ruby需要運行環境.
當然, Python等動態語言用來做一個工具處理一些日常資料還是很好用的,
或者用Python Django做網站.

但一涉及到大型工程就需要用Java/C/C++了
比如嵌入式用C需要高效高效能, 網遊用C++需要大量的繪圖庫及運算,
銀行行業用J2EE, 安全性比較高, 並方便Unix上運行.
其實用的都不少, 差不多, 不同的語言工具有不同的特點解決不同的問題.
因為c、c++的曆史長,本來出來就早,所以早就有了廣泛應用。
而java,剛出來的時候有sun、IBM等等大廠在全力推廣,推了十幾年了,一直到現在。
ruby、python雖然出來也不算晚,但是沒有大廠的商業推廣,為福士熟知也是近十年的事情。工具是用來解決問題的
能比較好的解決問題就可能被用的多
而不是說這個工具有多精緻越是複雜的項目,使用靜態語言可以利用編譯器更早的發現和避免問題。這並不是說動態語言並不能用於大型項目,但是在超過一定規模之後,動態語言輕便靈活的優勢就會被重構時的overhead給抵消掉。

另一個原因是效能上的。同理,也不是動態語言寫不出高效的代碼,而是你花在最佳化上的時間會更多,而團隊人多了水平難免參差不齊,不如靜態語言穩妥。我覺得動態語言查錯比較困難,經常不知道錯誤在哪裡,個人學PHP的親身體會這個問題如果放在幾年前,估計就要倒過來問了......

哪個工具好,要看解決的問題是什麼,最近什麼技術流行,只能說明這個技術適用的問題域變成了普遍問題而已。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.