中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

世界上的程序語言已這么豐富 為什么還不夠?

2018-07-20    來源:編程學習網(wǎng)

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

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

        本文作者 Chris Dannen 同時是知名科技媒體《Fast Company Digital》 和《FastCo.Labs》 的編輯,曾經(jīng)做過管理顧問、戶外運動的採訪記者以及 Red Bull Energy Drink 的品牌代表,曾寫過兩本關于 iOS 開發(fā)與設計的書。以下以作者第一人稱撰寫。

        世界上的程序語言已這么豐富,為什么我們還需要更多?

        六月初,Apple 發(fā)布了一個新的語言 Swift,主要是為了建立 Mac Apps 而開發(fā)的,你有想過為什么需要這么多的程序語言嗎?難道現(xiàn)在開發(fā)的都還不夠用嗎?沒錯,就是一個簡單到不行的原因:只要有人想要學習,就會有各種不同的語 言被開發(fā)出來。因為科技進步,加上使用語言的目的性不同,越來越廣泛也越齊全。

        如果把這個問題套用到「雞生蛋還是蛋生雞」,這個問題的解答會是蛋生雞。許多語言的開端,都是要讓編寫程序的概念變得更簡單、更適合初學者和有 興趣的朋友。事實上,電腦把語言設成二元碼(電腦進行儲存和運算時,采用二進位,也就是所有資訊都被替代成二進位字串),為什么要這么做呢?

        原因很簡單:如果你把你所有的指示轉換成 Yes 或 No 的問題,并分別以 1 和 0 表示,這么一來電腦就不會搞混了(除非一開始的編碼是錯的)。在第二次世界大戰(zhàn)時,廣播訊號是以非常糟糕又不可靠的無線電導航來傳重要訊息,而二元碼如此 聰明的創(chuàng)新是 Claude Shannon (美國數(shù)學家、電子工程師和密碼學家,被譽為資訊理論的創(chuàng)始人)所發(fā)現(xiàn)的,只要用二元碼,電腦就可以把資訊儲存與進行處理。

        自從二元碼誕生,非常多的語言都以它來設計,使工程師能夠寫得更流暢又更容易讀,雖然會感到無聊或是覺得寫二元碼很冗長。比如說大寫字母 A 好了,以二元碼表示成 01000001 ,如果是小寫 a 呢,則是 01100001 ,寫完一個程序要花一些時間,但不用介意長度有幾千行,因為大多數(shù)的程序都是這樣來的。

        當一個語言以易懂的英文寫,就更容易讀了,但另一方面就會顯得相當冗長;像是 Apple 的程序語言 Objective-C (是一種通用、高階、物件導向的程序語言,任何原始的 C 語言承是不需要經(jīng)過修改就能直接通過 Objective-C 的編譯器),就是冗長到不行,但主要也是為了要滿足對使用者友善的特色,語言本身就是非常容易使用的。即使在你的生命中從來沒有寫過程序,或多或少你也能 了解一點工程師想要告訴電腦要做什么,它長的大概是像這個樣子:[someInstance doSomethingWithObject:a andAnotherParam:b];

        事實上,為什么在物理電子學的范疇里有這么多的駭客套件,主要是因為要讓現(xiàn)實世界的裝置通常能以最自然的方式轉換成寫程序的概念,至少對于寫程序的初學者而言,這類的程序語言是比較適合的,即使它很冗長。

        程序語言就是開發(fā)者自我性格的復制

        就像其他的創(chuàng)新一樣,程序語言通常都是從一個偏執(zhí)頑固的人開始,試圖要走一條只屬于自己的路。

        舉例來說 1971 年,在這個領域的大多數(shù)人都在 Lisp (源于列表處理器,List Processor 的縮寫,是歷史悠久的電腦程序語言家族,于 1958 年基于 λ 演算創(chuàng)造,是第一個函數(shù)語言程序設計的語言)寫程序,一個在 Stanford 的工程師明白了要如何編輯 Lisp 的編碼,也就是我們今天所謂的原始的編輯器。想像一下,就是一個在 Mac 上的 TextEdit App,但當然不是像現(xiàn)在一樣可以直接簡單的使用。

        然后你必須按 Escape 鍵跳出頁面,檢查你所做的那些改變,像是儲存或瀏覽在部落格貼文的草稿等,是否跟你預想中的一樣;不管怎么說,重復對照你所想的與結果,這簡直是一件痛苦的事。

        另一個從 MIT 來的工程師看到在 Palo Alto 的創(chuàng)新后,決定要回 Cambridge 后靠自己把它復製下來,并且做一些改善與調整。而其他同事們?yōu)榱诵陆缑娼K于開始寫 macros (巨集,根據(jù)一系列預定的規(guī)則替換一定的文字模式)--可重復使用的編碼位元以節(jié)省時間。當他們將巨集的集合程序化,結合到一個系統(tǒng)內,他們把這個叫做 EMACS--Editing MACroS 的縮寫。

        抽象到不行

        如果你是念文法商的,別被這樣的名詞嚇到,它代表著一個程序的生命。

        換個角度想像,在寫作時,我們會把字句的結合叫做段落,這是就寫文章的觀點來看,它也是一個抽象的概念,當我們要告訴其他人正在討論文章的哪部份時,我們不需要再重新引述整個段落的文字內容,而是告訴他們第幾段就好,說到底它也是抽象的。

        同樣地,寫程序的工程師經(jīng)常會試著要創(chuàng)造可重復使用的編碼字元,因為就像其他人一樣,會懶惰,會不想做重復的事情。

        大約 30 年前有個大改變,對于藉由可重復使用的部分來建立電腦程序,將它稱作為物件(若是在建筑、車子或是家具設計,就很像是模組化), 這樣的設計模式稱作為物件導向的程序編寫,在 NeXT (Steve Jobs 在創(chuàng)立蘋果后所成立的公司)的那段期間,這可是相當創(chuàng)新的。當時還將它視為未來程序發(fā)展的領航者,所以他們就將這樣物件導向的程序拿去賣,并且決定將它取 為在 C 語言架構下屬于他們自己版本的名稱,于是 Objective-C 就這樣誕生了。

        當 Apple 買下 NeXT 后繼承了 Objective-C,并把他們公司的 OS 變成 Mac OSX。

        云端時代,語言也需要新架構

        當本質上發(fā)生改變的時候,你必須要去適應它,因此有時候你會需要一個新的語言。伴隨著云端時代的來臨,更是如此。

        傳統(tǒng)上來說,程序會依下載位置在你的電腦(裝置)上跑,就像你所下載的 Apps 和安裝到你電腦內的軟體。然而有時候,某個叫作網(wǎng)絡的東西,它有無限神奇的功能,能夠把在某一臺電腦運作的 App 傳送到另一臺電腦上,這些是網(wǎng)絡 App,比如說像是 Facebook.com 或是 Twitter.com 等等。

        在網(wǎng)絡 App 你能夠做很多事情并且看到即時的變化,F(xiàn)acebook.com 的 App 是在某處的伺服器運作,而不是你實際的電腦上。

        要創(chuàng)一個 App 其實是需要花好一番功夫的,你需要不只是電腦能力和頻寬傳輸,軟體是一種服務,從云端來的服務,這些云端是需要花一大筆成本來操作的,所以最近一群聰明的人聚集在一起,然后創(chuàng)造叫作 Node.js 的開源平臺,通過網(wǎng)絡跑 App 以大幅降低成本。

        許多開發(fā)商偏好將他們的 App 視為一種服務,因為一個網(wǎng)站有非常多的下載 App 的優(yōu)勢,像是免費下載,使 App 更便宜且在一定規(guī)模下運作,已經(jīng)造成了 Node.js 一陣轟動,而 Node.js 是由 JavaScript 寫出來的,Node 解釋了為什么身為一個語言的 JavaScript 最近可以如此受歡迎。

世界上的程序語言已這么豐富,為什么還不夠?

        并不是要說上圖這幾個受歡迎的語言已經(jīng)霸占了大部分市場,其他的語言像是 Erlang,自從 App 開始移往云端后,它又重新的引起大家的興趣。事實上,相較于圖上這幾個語言來說,受歡迎程度相當?shù)偷?Erlang 是創(chuàng)造 WhatsApp 的最大功臣。

        一個程序語言,承載了一群自造者的文化

        一部份人創(chuàng)造的程序語言是為了其他人,因此他們承載著所有自造者的文化產物,部份文化產物又和其他的工程師群不同,他們各自走著屬于自身文化產 物下的版本,在電腦科學的歷史上這已經(jīng)發(fā)生過無數(shù)次,也形成著最受歡迎語言的運算子重載(對已有的運算符號重新定義,賦予它另一種功能以適應不同的數(shù)據(jù)類 型)。

        有些語言對于邏輯思考的類型是有一定幫助的,一個你所用的語言會改變你的思考模式。就像是 Richard Pattis (一個加州大學爾灣分校資訊學的資深講師)所說,「不只是為了不同的任務而有不同的語言工具,同時它們也形塑著你如何看待寫程序的科技」。

        這也是為什么會有這么多程序語言存在著,不同的語言代表著一群工程師腦中的思考邏輯模式,當然如果身為語言的使用者而非語言的創(chuàng)造者,太多的選擇中要選擇一個對工作最有幫助的,最能達成目標的那個。

  英文原文:Why Does The World Need More Programming Languages?

標簽: isp 開發(fā)者 媒體 網(wǎng)絡

版權申明:本站文章部分自網(wǎng)絡,如有侵權,請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:編程語言中一些令人抓狂的規(guī)則

下一篇:當編程語言都變成女孩子(一)