新聞中心
程序語(yǔ)言百百種,想要學(xué) Coding 就必須先確定你的目的是什么,有的是拿來(lái)寫(xiě)App的,有的是專寫(xiě)操作系統(tǒng),有的則是拿來(lái)寫(xiě)網(wǎng)頁(yè)的 …… 各種不同的目的都有其最適合的語(yǔ)言。常見(jiàn)的語(yǔ)言如 C++、JavaScript、VB、VC、Matlab、Python 等,但其實(shí)像WhatsApp如此受歡迎的App就不是前述這幾種語(yǔ)言寫(xiě)的,為什么要有那么多的程序語(yǔ)言?

成都創(chuàng)新互聯(lián)成立于2013年,公司自成立以來(lái)始終致力于為企業(yè)提供官網(wǎng)建設(shè)、移動(dòng)互聯(lián)網(wǎng)業(yè)務(wù)開(kāi)發(fā)(小程序開(kāi)發(fā)、手機(jī)網(wǎng)站建設(shè)、APP應(yīng)用開(kāi)發(fā)等),并且包含互聯(lián)網(wǎng)基礎(chǔ)服務(wù)(域名、主機(jī)服務(wù)、企業(yè)郵箱、網(wǎng)絡(luò)營(yíng)銷等)應(yīng)用服務(wù);以先進(jìn)完善的建站體系及不斷開(kāi)拓創(chuàng)新的精神理念,幫助企業(yè)客戶實(shí)現(xiàn)互聯(lián)網(wǎng)業(yè)務(wù),嚴(yán)格把控項(xiàng)目進(jìn)度與質(zhì)量監(jiān)控加上過(guò)硬的技術(shù)實(shí)力獲得客戶的一致贊譽(yù)。
本文作者 Chris Dannen 同時(shí)是知名科技媒體《Fast Company Digital》 和《FastCo.Labs》 的編輯,曾經(jīng)做過(guò)管理顧問(wèn)、戶外運(yùn)動(dòng)的採(cǎi)訪記者以及 Red Bull Energy Drink 的品牌代表,曾寫(xiě)過(guò)兩本關(guān)于 iOS 開(kāi)發(fā)與設(shè)計(jì)的書(shū)。以下以作者***人稱撰寫(xiě)。
世界上的程序語(yǔ)言已這么豐富,為什么我們還需要更多?
六月初,Apple 發(fā)布了一個(gè)新的語(yǔ)言Swift,主要是為了建立 Mac Apps 而開(kāi)發(fā)的,你有想過(guò)為什么需要這么多的程序語(yǔ)言嗎?難道現(xiàn)在開(kāi)發(fā)的都還不夠用嗎?沒(méi)錯(cuò),就是一個(gè)簡(jiǎn)單到不行的原因:只要有人想要學(xué)習(xí),就會(huì)有各種不同的語(yǔ)言被開(kāi)發(fā)出來(lái)。因?yàn)榭萍歼M(jìn)步,加上使用語(yǔ)言的目的性不同,越來(lái)越廣泛也越齊全。
如果把這個(gè)問(wèn)題套用到「雞生蛋還是蛋生雞」,這個(gè)問(wèn)題的解答會(huì)是蛋生雞。許多語(yǔ)言的開(kāi)端,都是要讓編寫(xiě)程序的概念變得更簡(jiǎn)單、更適合初學(xué)者和有興趣的朋友。事實(shí)上,電腦把語(yǔ)言設(shè)成二元碼(電腦進(jìn)行儲(chǔ)存和運(yùn)算時(shí),采用二進(jìn)位,也就是所有資訊都被替代成二進(jìn)位字串),為什么要這么做呢?
原因很簡(jiǎn)單:如果你把你所有的指示轉(zhuǎn)換成 Yes 或 No 的問(wèn)題,并分別以 1 和 0 表示,這么一來(lái)電腦就不會(huì)搞混了(除非一開(kāi)始的編碼是錯(cuò)的)。在第二次世界大戰(zhàn)時(shí),廣播訊號(hào)是以非常糟糕又不可靠的無(wú)線電導(dǎo)航來(lái)傳重要訊息,而二元碼如此 聰明的創(chuàng)新是 Claude Shannon (美國(guó)數(shù)學(xué)家、電子工程師和密碼學(xué)家,被譽(yù)為資訊理論的創(chuàng)始人)所發(fā)現(xiàn)的,只要用二元碼,電腦就可以把資訊儲(chǔ)存與進(jìn)行處理。
自從二元碼誕生,非常多的語(yǔ)言都以它來(lái)設(shè)計(jì),使工程師能夠?qū)懙酶鲿秤指菀鬃x,雖然會(huì)感到無(wú)聊或是覺(jué)得寫(xiě)二元碼很冗長(zhǎng)。比如說(shuō)大寫(xiě)字母 A 好了,以二元碼表示成 01000001 ,如果是小寫(xiě) a 呢,則是 01100001 ,寫(xiě)完一個(gè)程序要花一些時(shí)間,但不用介意長(zhǎng)度有幾千行,因?yàn)榇蠖鄶?shù)的程序都是這樣來(lái)的。
當(dāng)一個(gè)語(yǔ)言以易懂的英文寫(xiě),就更容易讀了,但另一方面就會(huì)顯得相當(dāng)冗長(zhǎng);像是 Apple 的程序語(yǔ)言 Objective-C(是一種通用、高階、物件導(dǎo)向的程序語(yǔ)言,任何原始的 C 語(yǔ)言承是不需要經(jīng)過(guò)修改就能直接通過(guò) Objective-C 的編譯器),就是冗長(zhǎng)到不行,但主要也是為了要滿足對(duì)使用者友善的特色,語(yǔ)言本身就是非常容易使用的。即使在你的生命中從來(lái)沒(méi)有寫(xiě)過(guò)程序,或多或少你也能 了解一點(diǎn)工程師想要告訴電腦要做什么,它長(zhǎng)的大概是像這個(gè)樣子:[someInstance doSomethingWithObject:a andAnotherParam:b];
事實(shí)上,為什么在物理電子學(xué)的范疇里有這么多的駭客套件,主要是因?yàn)橐尙F(xiàn)實(shí)世界的裝置通常能以最自然的方式轉(zhuǎn)換成寫(xiě)程序的概念,至少對(duì)于寫(xiě)程序的初學(xué)者而言,這類的程序語(yǔ)言是比較適合的,即使它很冗長(zhǎng)。
程序語(yǔ)言就是開(kāi)發(fā)者自我性格的復(fù)制
就像其他的創(chuàng)新一樣,程序語(yǔ)言通常都是從一個(gè)偏執(zhí)頑固的人開(kāi)始,試圖要走一條只屬于自己的路。
舉例來(lái)說(shuō)1971年,在這個(gè)領(lǐng)域的大多數(shù)人都在 Lisp(源于列表處理器,List Processor 的縮寫(xiě),是歷史悠久的電腦程序語(yǔ)言家族,于 1958 年基于 λ 演算創(chuàng)造,是***個(gè)函數(shù)語(yǔ)言程序設(shè)計(jì)的語(yǔ)言)寫(xiě)程序,一個(gè)在 Stanford 的工程師明白了要如何編輯 Lisp 的編碼,也就是我們今天所謂的原始的編輯器。想像一下,就是一個(gè)在 Mac 上的 TextEdit App,但當(dāng)然不是像現(xiàn)在一樣可以直接簡(jiǎn)單的使用。
然后你必須按 Escape 鍵跳出頁(yè)面,檢查你所做的那些改變,像是儲(chǔ)存或?yàn)g覽在部落格貼文的草稿等,是否跟你預(yù)想中的一樣;不管怎么說(shuō),重復(fù)對(duì)照你所想的與結(jié)果,這簡(jiǎn)直是一件痛苦的事。
另一個(gè)從 MIT 來(lái)的工程師看到在 Palo Alto 的創(chuàng)新后,決定要回 Cambridge 后靠自己把它復(fù)製下來(lái),并且做一些改善與調(diào)整。而其他同事們?yōu)榱诵陆缑娼K于開(kāi)始寫(xiě) macros(巨集,根據(jù)一系列預(yù)定的規(guī)則替換一定的文字模式)--可重復(fù)使用的編碼位元以節(jié)省時(shí)間。當(dāng)他們將巨集的集合程序化,結(jié)合到一個(gè)系統(tǒng)內(nèi),他們 把這個(gè)叫做 EMACS--Editing MACroS 的縮寫(xiě)。
抽象到不行
如果你是念文法商的,別被這樣的名詞嚇到,它代表著一個(gè)程序的生命。
換個(gè)角度想像,在寫(xiě)作時(shí),我們會(huì)把字句的結(jié)合叫做段落,這是就寫(xiě)文章的觀點(diǎn)來(lái)看,它也是一個(gè)抽象的概念,當(dāng)我們要告訴其他人正在討論文章的哪部份時(shí),我們不需要再重新引述整個(gè)段落的文字內(nèi)容,而是告訴他們第幾段就好,說(shuō)到底它也是抽象的。
同樣地,寫(xiě)程序的工程師經(jīng)常會(huì)試著要?jiǎng)?chuàng)造可重復(fù)使用的編碼字元,因?yàn)榫拖衿渌艘粯樱瑫?huì)懶惰,會(huì)不想做重復(fù)的事情。
大約 30 年前有個(gè)大改變,對(duì)于藉由可重復(fù)使用的部分來(lái)建立電腦程序,將它稱作為物件(若是在建筑、車子或是家具設(shè)計(jì),就很像是模組化), 這樣的設(shè)計(jì)模式稱作為物件導(dǎo)向的程序編寫(xiě),在 NeXT(Steve Jobs 在創(chuàng)立蘋(píng)果后所成立的公司)的那段期間,這可是相當(dāng)創(chuàng)新的。當(dāng)時(shí)還將它視為未來(lái)程序發(fā)展的***者,所以他們就將這樣物件導(dǎo)向的程序拿去賣,并且決定將它取 為在 C 語(yǔ)言架構(gòu)下屬于他們自己版本的名稱,于是 Objective-C 就這樣誕生了。
當(dāng) Apple 買下 NeXT 后繼承了 Objective-C,并把他們公司的 OS 變成 Mac OSX。
云端時(shí)代,語(yǔ)言也需要新架構(gòu)
當(dāng)本質(zhì)上發(fā)生改變的時(shí)候,你必須要去適應(yīng)它,因此有時(shí)候你會(huì)需要一個(gè)新的語(yǔ)言。伴隨著云端時(shí)代的來(lái)臨,更是如此。
傳統(tǒng)上來(lái)說(shuō),程序會(huì)依下載位置在你的電腦(裝置)上跑,就像你所下載的 Apps 和安裝到你電腦內(nèi)的軟體。然而有時(shí)候,某個(gè)叫作網(wǎng)絡(luò)的東西,它有無(wú)限神奇的功能,能夠把在某一臺(tái)電腦運(yùn)作的 App 傳送到另一臺(tái)電腦上,這些是網(wǎng)絡(luò) App,比如說(shuō)像是 Facebook.com 或是 Twitter.com 等等。
在網(wǎng)絡(luò) App 你能夠做很多事情并且看到即時(shí)的變化,F(xiàn)acebook.com 的 App 是在某處的伺服器運(yùn)作,而不是你實(shí)際的電腦上。
要?jiǎng)?chuàng)一個(gè) App 其實(shí)是需要花好一番功夫的,你需要不只是電腦能力和頻寬傳輸,軟體是一種服務(wù),從云端來(lái)的服務(wù),這些云端是需要花一大筆成本來(lái)操作的,所以最近一群聰明的人聚集在一起,然后創(chuàng)造叫作 Node.js 的開(kāi)源平臺(tái),通過(guò)網(wǎng)絡(luò)跑 App 以大幅降低成本。
許多開(kāi)發(fā)商偏好將他們的 App 視為一種服務(wù),因?yàn)橐粋€(gè)網(wǎng)站有非常多的下載 App 的優(yōu)勢(shì),像是免費(fèi)下載,使 App 更便宜且在一定規(guī)模下運(yùn)作,已經(jīng)造成了 Node.js 一陣轟動(dòng),而 Node.js 是由 JavaScript 寫(xiě)出來(lái)的,Node 解釋了為什么身為一個(gè)語(yǔ)言的 JavaScript 最近可以如此受歡迎。
并不是要說(shuō)上圖這幾個(gè)受歡迎的語(yǔ)言已經(jīng)霸占了大部分市場(chǎng),其他的語(yǔ)言像是 Erlang,自從 App 開(kāi)始移往云端后,它又重新的引起大家的興趣。事實(shí)上,相較于圖上這幾個(gè)語(yǔ)言來(lái)說(shuō),受歡迎程度相當(dāng)?shù)偷?Erlang 是創(chuàng)造 WhatsApp 的***功臣。
一個(gè)程序語(yǔ)言,承載了一群自造者的文化
一部份人創(chuàng)造的程序語(yǔ)言是為了其他人,因此他們承載著所有自造者的文化產(chǎn)物,部份文化產(chǎn)物又和其他的工程師群不同,他們各自走著屬于自身文化產(chǎn) 物下的版本,在電腦科學(xué)的歷史上這已經(jīng)發(fā)生過(guò)無(wú)數(shù)次,也形成著***語(yǔ)言的運(yùn)算子重載(對(duì)已有的運(yùn)算符號(hào)重新定義,賦予它另一種功能以適應(yīng)不同的數(shù)據(jù)類 型)。
有些語(yǔ)言對(duì)于邏輯思考的類型是有一定幫助的,一個(gè)你所用的語(yǔ)言會(huì)改變你的思考模式。就像是 Richard Pattis(一個(gè)加州大學(xué)爾灣分校資訊學(xué)的資深講師)所說(shuō),「不只是為了不同的任務(wù)而有不同的語(yǔ)言工具,同時(shí)它們也形塑著你如何看待寫(xiě)程序的科技」。
這也是為什么會(huì)有這么多程序語(yǔ)言存在著,不同的語(yǔ)言代表著一群工程師腦中的思考邏輯模式,當(dāng)然如果身為語(yǔ)言的使用者而非語(yǔ)言的創(chuàng)造者,太多的選擇中要選擇一個(gè)對(duì)工作最有幫助的,最能達(dá)成目標(biāo)的那個(gè)。
原文:Why Does The World Need More Programming Languages?
來(lái)源:techorange
網(wǎng)頁(yè)名稱:世界上的程序語(yǔ)言已這么豐富,為什么還不夠?
本文來(lái)源:http://m.fisionsoft.com.cn/article/cdiidep.html


咨詢
建站咨詢
