世界上最好的編程語言?

快來討論討論,各種語言的優勢
3 個回答
趣IT科技

談到這個話題,一定會有兩種人跳出來。 一種人說,PHP 是世界上最好的編程語言;另一種人說,編程語言都大同小異,掌握了思想,什麼都簡單了。

首先我認為所有切實存在,功能重疊的事物,都是可以比較優劣的,有時不說出真相,只是真相太殘酷。『優秀』並非是主觀的,而是客觀存在的,世界上存在著被廣泛認同的『優秀』。否則,作家,設計師,設計編程語言的科學家,應該以什麼為目標來工作呢?

那麼什麼又是編程的思想呢?是循環,回調,面向對象這些麼?但似乎並非每個編程語言都有這些元素。我在知乎『優秀的程序員應該掌握多少門編程語言』中列舉了幾種我瞭解的,各自具有代表性的編程語言:

  • C, 使用原始的內存管理的系統編程
  • Java, 工業級的面向對象的,靜態類型的虛擬機語言
  • Python, 腳本語言,動態類型的虛擬機語言
  • Javascript, 基於事件回調的函數式編程
  • HTML/CSS, 聲明式的語言
  • Golang, 併發編程

可以看到,它們風格迥異,使用的領域似乎完全沒有重疊。

非要找共性的話,大概是它們都具有『抽象』的能力,描述『算法』的能力,這也是有些人口中的『思想』,但我不認同。 抽象是為了找到解決問題的方法,而編程語言是為了將解決問題的過程(算法)表達出來。 知道如何解決問題,不代表就能夠用編程語言表達出來;掌握編程語言,也不代表知道如何解決問題。

我們學習一門編程語言本身的時間並不多,更多的時間在學習它的函數庫,以及特定編程環境下的限制。 例如學習 C 語言,我們需要知道計算機如何管理內存,如何實現函數調用,還要學習如何通過標準庫進行輸入輸出,而 C 語言本身的語法,完全可以用一個小時描述清楚。

所以,我們拋開這一切,去尋找世界上最好的編程語言呢。但結果是不存在,因為現在流行的編程語言設計者目光都太短淺。 沒錯,優秀的不一定是用的人最多的,不一定應用得最廣泛,所以編程語言的設計者需要折中,拿出不那麼優秀的設計作為最終方案。

比如 PHP 之所以流行,是因為支持 PHP 的虛擬主機最便宜。 比如 C 之所以流行,只是因為有太多項目一開始是用 C 寫的。 比如 Python 之所以流行,只是因為庫足夠多。 比如 Javascript 之所以流行,因為在瀏覽器裡這是唯一選擇。

他們都不是因為語言本身被設計得有多麼優秀而流行的。

我認為世界上最好的編程語言需要有這樣的特徵:

  • 核心足夠小
  • 可以擴展語法
  • 圍繞一種數據結構展開
  • 優秀的抽象能力
  • 可以被編譯成本地代碼

世界上最好的編程語言應當是全能的,否則如何和其他編程語言做比較呢?要做到這一點,就要保證這個語言的核心部分是最小的,不偏向於任何一個領域,也減少學習成本。

這方面的正面例子有 Lisp, Lisp 中的一切都是列表,核心部分僅包括不到十個基本運算符。從這個角度來看,你根本不知道 Lisp 是被設計用於什麼領域的——這是世界上最好的編程語言所必須的要素。

但是 Lisp 沒有火起來,因為有個笑話說的是一個 Lisp 程序末尾要有整整一頁的括號。

所以世界上最好的編程語言需要能夠靈活地擴展語法,這個概念通常被稱為元編程,例如 Ruby 就號稱支持元編程,雖然我沒有體驗過。 除了擴展語法之外,最好還要能夠改變程序在編譯時的行為,這會加強元編程的能力,也會對提升性能有一定幫助。 比如 PHP 和 Python 都支持用 C 編寫擴展,如果這種語言支持用自己本身來寫擴展,並且能夠干預編譯器的行為,那麼這種改造會讓它適合幾乎所有領域的編程。雖然干預編譯器的行為是很危險的行為,只有少數人會編寫這種擴展,但是這總要比設計一門新的領域特定的語言要容易。

可以擴展語法,這是保證世界上最好的編程語言能夠快速適應各種特定領域編程的重要條件。

世界上最好的編程語言應該內置一種數據結構,能夠方便地在程序內,甚至包括程序外進行數據交換,讓整個語言圍繞著這種核心的數據結構展開,具有一種『一致性』的美感。 這方面正面的例子是 Lisp 和 Javascript, 但 Javascript 做得還不夠好,類型系統中有很多陷阱。

世界上最好的編程語言還應該有優秀的抽象能力,比如 C 的抽象能力就不夠,組織大型項目會非常麻煩。Lisp 的抽象手段又太單一,Java 和 C++ 的特徵又過於複雜。

『可以被編譯成本地代碼』這才是最具有挑戰性的一個特徵,前面我提了很多變態的需求,它們都需要在可以被編譯成本地代碼的條件下實現。可以被編譯成本地代碼,表示這種語言不需要虛擬機,可以自行提供各種功能,性能上也有更多的優化空間。

114114114114114114

世界上最好的編程語言永遠是下一個。。。。。不過我覺得red這一個聽說是個全線開發費的編程很好很累根據地!我現在學習彙編語言累死啦。。。。神吶,那些語言是怎樣創造出來的阿拉!

拐弯抹角老司机
2017-03-19

存在既有意義,討論什麼語言是最好的沒啥意義,語言就是一個工具,每門語言都有自己的優勢所在,重要的是瞭解語言的優缺點,在不同的情境下使用最合適的語言

相關推薦

推薦中...