探祕程式語言數百種,為什麼我們還需要更多?
程式語言百百種,想要學 Coding 就必須先確定你的目的是什麼,有的是拿來寫 App 的,有的是專寫作業系統,有的則是拿來寫網頁的 …… 各種不同的目的都有其最適合的語言。
常見的語言如 C++、JavaScript、VB、VC、Matlab、Python 等,但其實像 WhatsApp 如此受歡迎的 App 就不是前述這幾種語言寫的,為什麼要有那麼多的程式語言?

世界上的程式語言已這麼豐富,為什麼我們還需要更多?
自己是做開發的,明白每一個程式語言都有其重要性。但是,每一年會都有新的語言出現。你有想過為什麼需要這麼多的程式語言嗎?難道現在開發的都還不夠用嗎?沒錯,就是一個簡單到不行的原因:只要有人想要學習,就會有各種不同的語言被開發出來。
因為科技進步,加上因為使用語言的目的性不同,越來越廣泛也越齊全。
如果把這個問題套用到「雞生蛋還是蛋生雞」,這個問題的解答會是蛋生雞。許多語言的開端,都是要讓編寫程式的概念變得更簡單、更適合初學者和有興趣的朋友。事實上,電腦把語言設成二元碼(電腦進行儲存和運算時,採用二進位,也就是所有資訊都被替代成二進位字串),為什麼要這麼做呢?
原因很簡單:如果你把你所有的指示轉換成 Yes 或 No 的問題,並分別以 1 和 0 表示,這麼一來電腦就不會搞混了(除非一開始的編碼是錯的)。
在第二次世界大戰時,廣播訊號是以非常糟糕又不可靠的無線電導航來傳重要訊息,而二元碼如此聰明的創新是 Claude Shannon (美國數學家、電子工程師和密碼學家,被譽為資訊理論的創始人)所發想的,只要用二元碼,電腦就可以把資訊儲存與進行處理。

程式語言就是開發者自我性格的複製
就像其他的創新一樣,程式語言通常都是從一個偏執頑固的人開始,試圖要走一條只屬於自己的路。
舉例來說 1971 年,在這個領域的大多數人都在 Lisp(源於列表處理器,List Processor
的縮寫,是歷史悠久的電腦程式語言家族,於 1958 年基於 λ 演算創造,是第一個函式語言程式設計的語言)寫程式,一個在 Stanford 的工程師明白了要如何編輯 Lisp 的編碼,也就是我們今天所謂的原始的編輯器;想像一下,就是一個在 Mac 上的 TextEdit App,但當然不是像現在一樣可以直接簡單的使用。
然後你必須按 Escape 鍵跳出頁面,檢查你所做的那些改變,像是儲存或瀏覽在部落格貼文的草稿等,是否跟你預想中的一樣;不管怎麼說,重複對照你所想的與結果,這簡直是一件痛苦的事,。
另一個從 MIT 來的工程師看到在 Palo Alto 的創新後,決定要回 Cambridge 後靠自己把它複製下來,並且做一些改善與調整;而其他同事們為了新介面終於開始寫 macros(巨集,根據一系列預定的規則替換一定的文字模式)—— 可重複使用的編碼位元以節省時間。當他們將巨集的集合程式化,結合到一個系統內,他們把這個叫做 EMACS,Editing MACroS 的縮寫。
抽象到不行
如果你是念文法商的,別被這樣的名詞嚇到,它代表著一個程式的生命。
換個角度想像,在寫作時,我們會把字句的結合叫做段落,這是就寫文章的觀點來看,它也是一個抽象的概念,當我們要告訴其他人正在討論文章的哪部份時,我們不需要再重新引述整個段落的文字內容,而是告訴他們第幾段就好;說到底它也是抽象的。
同樣地,寫程式的工程師經常會試著要創造可重複使用的編碼字元,因為就像其他人一樣,會懶惰,會不想做重複的事情。

雲端時代,語言也需要新架構
當本質上發生改變的時候,你必須要去適應它,因此有時候你會需要一個新的語言。伴隨著雲端時代的來臨,更是如此。
傳統上來說,程式會依下載位置在你的電腦(裝置)上跑,就像你所下載的 Apps 和安裝到你電腦內的軟體。然而有時候,某個叫作網路的東西,它有無限神奇的功能,能夠把在某一臺電腦運作的 App 傳送到另一臺電腦上,這些是網路 App,比如說像是 Facebook.com 或是 Twitter.com 等等。
在網路 App 你能夠做很多事情並且看到即時的變化,Facebook.com 的 App 是在某處的伺服器運作,而不是你實際的電腦上。
要創一個 App 其實是需要花好一番功夫的,你需要不只是電腦能力和頻寬傳輸,軟體是一種服務,從雲端來的服務,這些雲端是需要花一大筆成本來操作的,所以最近一群聰明的人聚集在一起,然後創造叫作 Node.js 的開源平臺,透過網路跑 App 以大幅降低成本。
許多開發商偏好將他們的 App 視為一種服務,因為一個網站有非常多的下載 App 的優勢,像是免費下載,使 App 更便宜且在一定規模下運作,已經造成了 Node.js 一陣轟動,而 Node.js 是由 JavaScript 寫出來的,Node 解釋了為什麼身為一個語言的 JavaScript 最近可以如此受歡迎。
自己是從事五年的前端工程師了,不少人私下問我,2019年前端該怎麼學啊,方法有沒有?
沒錯,年初我花了一個多月的時間整理出來的學習資料,希望能幫助那些想學習前端,卻又不知道怎麼開始學習的童鞋。
這裡推薦一下我的前端學習交流群:731771211,裡面都是學習前端的從最基礎的HTML+CSS+JS【炫酷特效,遊戲,外掛封裝,設計模式】到移動端HTML5的專案實戰的學習資料都有整理,送給每一位前端小夥伴。2019最新技術,與企業需求同步。好友都在裡面學習交流,每天都會有大牛定時講解前端技術!
點選: 加入

並不是要說上圖這幾個受歡迎的語言已經霸佔了大部分的市場,其他的語言像是 Erlang,自從 App 開始移往雲端後,它又重新的引起大家的興趣。事實上,相較於圖上這幾個語言來說,受歡迎程度相當低的 Erlang 是創造 WhatsApp 的最大功臣。
一個程式語言,乘載了一群自造者的文化
一部份人創造的程式語言是為了其他人,因此他們承載著所有自造者的文化產物,部份文化產物又和其他的工程師群不同,他們各自走著屬於自身文化產物下的版本,在電腦科學的歷史上這已經發生過無數次,也形成著最受歡迎語言的運運算元過載(對已有的運算子號重新定義,賦予它另一種功能以適應不同的資料型別)。
有些語言對於邏輯思考的型別是有一定幫助的,一個你所用的語言會改變你的思考模式。
這也是為什麼會有這麼多程式語言存在著,不同的語言代表著一群工程師腦中的思考邏輯模式,當然如果身為語言的使用者而非語言的創造者,太多的選擇中要選擇一個對工作最有幫助的,最能達成目標的那個。