現代編程語言終極測評:一星篇

廣告:二哥網絡科技公司!

客服微信13005636712 主營業務:專業刷拚多多銷量,拚多多改銷量,代刷淘寶天貓、京東拚多多、dsr動態評分、代刷淘寶1-4鑽信譽等級、還有更多的業務請加二哥微信谘詢,誠招代理合作夥伴!

- - - - - - - - - - - - - - - - - - - - -

編程語言哪種好?這可能是許多學習編程人員甚至是外行人員都會麵對的頭疼問題。網絡上普遍的編程語言介紹,大多都是東拚西湊的內容,並且無法讓人真正認識和了解各種語言的優缺點。這篇文章,原標題是These Modern Programming Languages Will Make You Suffer,作者Ilya Suzdalnitski在文章中針對15種編程語言展開了詳細測評,希望對你有所幫助。

現代編程語言終極測評:一星篇

圖片來源:javaassignmenthelp

懶人目錄

概述篇:編程語言最重要的特征

一星篇:C++,JAVA

二星篇:C#,Python,Rust,TypeScript

三星篇(上):Go,JavaScript

三星篇(下):Haskell,OCaml,Scala

四星篇:Elm,F#

五星篇:ReasonML,Elixir

C++

現代編程語言終極測評:一星篇

首先芭乐视频app官网下载入口來看看設計最差的語言C++,它可能也是計算機科學領域最大的錯誤之一。盡管這門語言的普及使用率很廣,但是它並不是一門擁有很多閃光點的編程語言。

所屬的編程語係:C

👎 語言特征

C++是一門恐怖的麵向對象語言……如果你隻能用C語言來完成項目,那麽你就不會因為任何愚蠢的對象模型把事情搞砸。

— Linus之父林納斯·托瓦茲(Linus Torvalds)

C++擁有許多特性,它嚐試做到一切事情,但卻沒有一項做到精湛。C++擁有“goto”、指針、引用、OOP,以及操作符重載等低效率特性。

為什麽C++是一門如此糟糕的語言呢?我認為,最大的原因在於它被設計出來的年代。

C++是1979年設計出來的,當時的設計者缺乏經驗,不知道應該把設計重點放在何處。C++已有的特征在那個年代似乎是很好的設計,這門語言當時也十分流行,這同時也意味著,更多的特征被添加了進去,以此支持不同的用例,所以C++所擁有的特征就更加亂七八糟的了。

👎速度

C++是出了名的編譯時間長。它比Java編譯速度慢得多,不過沒有Scala那麽糟糕。

不過C++的運行時性能以及應用啟動時間都還不錯。

👎生態係統/工具

現代編程語言終極測評:一星篇

在C++裏麵,芭乐视app下载安装不說“缺少&”,芭乐视频成人版會得到這樣的錯誤信息:

error C2664: ‘void

Std::vector<block,std::allocator<_Ty>>::push_back(const block &)’:

Cannot convert argument 1 from

‘std::_Vector_iterator<std::_Vector_val<std::_Simple_types<block>>>’

to ‘block&&’

我覺得這是很美妙的表達。

上圖的推文就提出了一個很好的觀點。C++編譯器的錯誤信息對新手來說,特別不友好。通常情況下,找出錯誤的確切原因可能需要一些時間。

👎👎垃圾回收

我希望垃圾回收器能夠成為C++0X中可選擇啟用的一項,不過在技術上,實現這一點還存在許多問題。

——C++語言之父本賈尼·斯特勞斯特盧普(Bjarne Stroustrup)

垃圾回收沒有添加進C++中,手動進行內存管理十分容易出錯。開發者需要手動釋放內存以及分配內存。我從不懷念自己使用不帶垃圾回收語言的編程日子,數不勝數的代碼錯誤如今在支持垃圾回收的編程語言中能被輕易避免。

👎 麵向對象編程的失敗案例

我創造了“麵向對象”這一術語。但我能告訴你的是,C++從來都不是我心目中完美的麵向對象語言。

——麵向對象編程(OOP)創始人阿倫·凱(Alan Kay)

在上個世紀60年代末,OOP是一種新興起的冷門技術,當時C++也剛剛起步。不幸的是,不像Smalltalk語言,C++在OOP實現過程中犯了一些嚴重的錯誤,直接導致這一個好的想法變成了噩夢。

不過有一點是極好的,相比於Java,至少C++中的OOP是可選項。

👎👎學習時需要付出的代價

現代編程語言終極測評:一星篇

圖片來源:Mercurial_Rhombus on Reddit

C++是一門複雜的低級語言,它沒有自動內存管理功能。由於它過多的特征,新手需要花費大量時間學習這門語言。

👎並發性

C++是在單核計算年代設計出來的,因此隻有過去十年添加進去的基礎的並發機製。

👎錯誤處理

捕獲錯誤或拋出錯誤是其首選的錯誤處理機製。

👎不可變性

C++沒有為不可變性數據結構提供內置支持。

👎空值

在C++中,所有引用都可以為空。

結論

現代編程語言終極測評:一星篇

C++的初衷是想做一個C語言的更優版,但它並沒有做到這一點。

C++似乎對係統編程比較友好。不過,還有很多更好的替代語言,比如Rust和Go,所以C++也不太適用於此。我認為C++沒有任何優點,也請隨意反駁我。

總之,C++該被淘汰了。

Java

現代編程語言終極測評:一星篇

Java是自微軟磁盤操作係統(MS-DOS)問世以來計算機領域最令人痛心的事。

——麵向對象編程(OOP)創始人阿倫·凱(Alan Kay)

Java首次出現是在1995年,比C++晚16年。相比C++,Java是一門更簡單的語言,這也使得它很受人們歡迎。

所屬的編程語係: C

👍垃圾回收

比起C++,Java最大的優點之一就是,它支持垃圾回收,所以它能自己消除大量編程錯誤。

👍生態係統

Java已經存在了很長時間了,它對於後端開發有一套龐大的生態係統,這能使開發事半功倍。

👎麵向對象語言

我不會在此太深入探討OOP的缺點,我隻會引用計算機科學領域一些傑出的人物對於OOP的觀點:

讓我感到很抱歉的是,我很久之前發明了“對象”這個術語,它使得很多人都開始關注於這個次要點上。但實際上,更重要的應該是消息傳遞。

——麵向對象編程(OOP)創始人阿倫·凱(Alan Kay)

我認同阿倫·凱的觀點,主流OOP語言的關注點有問題,它們關注類和對象,卻忽略了消息傳遞。值得慶幸的是,像Erlang和Elixir這樣的現代編程語言還是關注到了正確的點上。

使用OOP編程語言會讓應用程序變得更加冗長,可讀性下降,描述更少,所以芭乐视视频网页版很難修改和維護程序。

— Richard Mansfield

我相信任何使用過OOP語言(比如Java或C#)的開發者,在嚐試了非OOP語言後,都能深有體會。

👌速度

顯而易見的是,Java在其虛擬機(JVM)上麵的啟動速度非常慢。我之前見過,在JVM上運行的程序花費了至少30秒的時間來啟動。這樣的速度對於現代原生雲軟件而言是完全無法接受的。

大規模程序上的編譯速度會更慢,這也極大地影響了開發者的生產力(盡管沒有Scala語言那麽糟糕)。

從好的方麵來說,Java程序在JVM上的運行時性能很不錯。

👎學習時需要付出的代價

雖然Java是一門十分簡單的語言,但它在麵向對象編程的關注點,使得它難以成為一門好的編程語言。Java很易入門,但是,如果要寫出可靠並且可維護的麵向對象代碼,開發者需要花費上十年的時間去學習。

👎並發性

Java是在單核計算時代設計出來的,它就像C++一樣,隻有基礎的並發性支持。

👎空值

在Java中,所有的引用都可以為空。

👎錯誤處理

捕獲錯誤或拋出錯誤是其首選的錯誤處理機製。

👎不可變性

Java沒有為不可變性數據結構提供內置支持。

結論

現代編程語言終極測評:一星篇

Java在它剛剛出現那個年代,是相當不錯的一門編程語言。但是,不像Scala,Java過於關注OOP。這門語言的代碼很冗長,樣板代碼會帶來很多麻煩。

總之,Java也該被淘汰了。

本文轉載著名的淘寶刷鑽網站:http://www.sz581688.com/若有侵權請聯係郵箱bidie168@163.com 感謝!

現代編程語言終極測評:一星篇:等您坐沙發呢!

發表評論

表情
還能輸入210個字