為什麼會有這麼多的程式語言?

蔚藍忍者發表於2020-10-08

寫在前面的話:偶爾聽到有人為哪門程式語言孰優孰劣爭辯;有時也聽到有人為了選擇用哪門程式語言而困惑。有的人可能會告訴我們:“不要去糾結哪門哪門程式語言了,有那個時間還不如去學習一下那門語言。”可是仍然覺得這樣的回覆無法讓人內心平靜,為了能夠從心底裡不去糾結這些問題,我認為應該理解一個基本的問題:為什麼會有這麼多的程式語言?恰好最近看coursera裡面Stanford University的professor Alex Aiken講解的Compilers一課裡講到這樣一個問題:The Economy of Programming Language,裡面的觀點還是很有啟發意義。

====正文開始=====

  不同的cpu有著不同的指令集,這些指令集都是二進位制的0和1;後來有了組合語言,可以認為是二進位制指令的助記符表示;再後來有了高階程式語言,它們通過編譯器又變回了組合語言或者機器語言;緊接著一個又一個的高階程式語言誕生了,為什麼會有這麼多程式語言呢

  一個簡單的解釋可以是:不同的領域有不同的需求!

  對於科學和工程計算領域,要大量的處理資料的計算,如矩陣的計算,於是FORTRAN語言,就很好的適應了這一點;對於資料需要能夠很好的查詢、修改等操作,可能SQL語言就是一個不錯的語言;對於一些底層操作的需求,c和c++可能就很好的能夠適應這一點……

  於是為了適應不同的應用場景,一個一個的程式語言誕生了。

  可是又有了另外一個問題:那為什麼不去改造一門語言,讓它的功能無所不包,而是不停的創造新的程式語言呢?

  一個很好的解釋可以是:創造一門新的程式語言的成本有時候會比改進一門程式語言的成本更低!這裡的成本,有一個基本假設:Programmer training is the dominant cost for a programming language。

  (1)創造一門程式語言,有時候只是需要幾個人去寫寫編譯器,再考慮一下其他的需求即可;一旦一門新的程式語言誕生了,這門程式語言對於程式設計人員來說,是一門新的語言,這門語言的語法、API等等都是全新的,程式設計人員不會有其他的負擔;

  (2)而如果改造一門程式語言,需要曾經使用該語言的程式設計人員重新去適應新的改進,有時為了適應新的應用場景,可能的改變是巨大的。可以試想一下,如果將c++進行更新以適應web網頁開發,必然需要改進很多;同樣對一門語言的重大更新,還可能造成其他的影響。

  (3)這也得出一個這樣的結論:那些應用廣泛的程式語言,可能很趨於更少的改變。(如果一門程式語言一直在不停的變來變去,幹嘛還要去學它呢)。於是我們也理解了這樣一個現象:對於中國這麼大的國家,任何政策的微小變化,影響可能也是巨大的。

  所以,與其對一門已有程式語言進行改進,不如重新發明一門程式語言來的清爽

  而開發一門新的程式語言,為了使用者能夠更快更好的學習,往往也會模仿已有語言的一些特性,所以我們看到的程式語言,長得往往都很像。

  一旦我們理解了為什麼有這麼多的程式語言,我們也不會再糾結於這麼多的程式語言的選擇,進而能夠專心的根據不同的應用場景,選擇合適的程式語言;剛開始學習不同的程式語言的時候,也許會有些混亂,可是學的多了過了混亂期,也就清楚了。

  更重要的一點:有時間再去學學基礎的東西,例如編譯原理、組合語言、計算機系統、演算法等等知識,這些東西學的時候看似無用,一旦學明白了,後面再學習新的東西,會發現自己學的速度飛快。

  路漫漫其修遠兮,吾將上下而求索!

轉載:https://www.cnblogs.com/wuguanglei/p/4302813.html

相關文章