[Javascript]程式語言那麼多,為什麼 Google 偏愛 JS?
類型:
Javascript
《TO》導讀:本文以第一人稱撰寫,原文來自《雷鋒網》專欄作家威靈頓
我從事軟體開發的相關工作已經有 15 年了。目前的工作主要集中於 Web 和行動應用方面。在這麼多年裡,我對 JavaScript 的態度可能比較能代表一大群工程師的看法:從一開始對 JS 的不屑一顧到最後驚奇它的表現和潛力。
曾經的 JavaScript 像玩具一樣
在 2000 年那會兒,我也從事過一段 web 應用開發。開發平台是 Windows,主要使用 Asp。那個時候的 JavaScript 主要用途是檢驗頁面輸入資料是否正確。錯誤的時候,會彈出個警告窗口。當時整個 Web 開發、應用環境,實際上都是十分簡陋的。Web 開發者看待 JavaScript 估計就如同玩具一般。因為它能做的真的是十分有限。如果你能找到 2000 年時候的有關 JS 的 IT 圖書,內容多半大同小異,充斥?告訴你怎麼用 JS 做個什麼跑馬燈、怎麼製造煩死人的彈窗,如此這般。這些內容也進一步抑制了大家對 js 的期望。
後來,我轉向 C/C++,因為「真正的工程師使用 C++」。這一轉身就是很多年,我對 JS 的印象,也就止於那點功用了。
這幾年,因為種種變化,我又轉回來了。這個時候再回顧 Web 開發,已經可以用天翻地覆來形容。相關的概念層出不窮,發展出的各種技術、工具,五花八門,讓人眼花繚亂。而且更要命的是,這些知識除了基礎的幾類,大部分都十分的不穩定,並且在這種不穩定的情況下迅速發展,以瘋狂的速度淘汰更新。今天還在用的工具,可能明天就有更新、更好的了。
為什麼會這樣?因為社會需要的熱點在這裏「需求推動」。這個社會的生活、生產,逐漸轉移到了站台上、行動端,這就是這些領域快速發展進步的主因。
這個時候再回頭看當年的玩具語言:JavaScript,也早已今非昔比。
它已經成長為網路時代不可或缺的前端頂樑柱。現在已經不可想像沒有 JS 的站台是否還能正常執行。不只有如此,它的觸角居然還深入到了後端服務,Node.js 方興未艾。一些新一代的產品,如 MongoDB,甚至內建了 JS 語言支援,作為應用互動的工具。
這是很多人都無法想像到的場景,包括我在內。對此,我不得不回過頭看一下,思考 JavaScript 為什麼會擁有現在的地位。
冥冥之中註定的語言
JavaScript 的總體設計有亮點,但問題也很多。它是作者在 10 天內設計出來的。因為時間倉促,很多細節未及推敲、深思熟慮就推上了市場,以至於充斥了漏洞、糟粕。Douglas Crockford 在《JavaScript 語言精粹》(英文名《JavaScript:The Good Parts》)裏面提到:「Javascript 中糟粕的比重超出了預期。」(註:Douglas Crockford,JavaScript 開發社區最知名的權威,是 JSON 、JSLint、JSMin 和 ADSafe 之父,著有《JavaScript: The Good Parts》。)
連 Brendan Eich(JavaScript 的創造者)自己都說:「與其說我愛它,不如說我恨它。它是 C 語言和 Self 語言一夜情的產物。十八世紀英國文學家約翰遜博士說得好:‘它的優秀之處並非原創,它的原創之處並不優秀。’(the part that is good is not original, and the part that is original is not good.)」
但是,似乎是在冥冥之中註定,JavaScript 在一開始就抓到了未來程式開發語言的方向:函式式程式開發。
「JavaScript 設計的最出色的就是它的函式的實作。它近乎接近於完美。…… 函式在 javascript 中是頂級對象,它是第一個成為主流的 Lambada 語言,它是披? C 外衣的 Lisp。?」
—— Douglas Crockford
讀過《駭客與畫家:矽谷創業之父 Paul Graham 文集》(主要介紹駭客即優秀工程師的愛好和動機,討論駭客成長、駭客對世界的貢獻以及程式語言和駭客工作方法等話題)的人,都會記得作者的預言:Lisp 才是語言的終極趨向。(註:LISP 源自清單處理 LISt Processing 的縮寫,由來自麻省理工學院的人工智慧研究先驅 John McCarthy 在 1958 年基於λ演算所創造,是一種通用進階電腦程式語言,長期以來壟斷人工智慧領域的應用,也是第一個函式式程式設計語言。)
矽谷創業之父 Paul Graham
函式式程式開發的流行之勢
函式式程式開發並不是新發明,它的歷史甚至比一些主流語言還早。因為效能和實作等問題,一直飽受冷落。而如今,電腦的硬體效能大大提高,改變了很多事物。原本不夠經濟的,變得可行;原本不夠好的,在新條件下變得不錯。鑑於函式式程式開發的優良特性和強大能力,它的流行其實並不意外。「程序化 -> 針對對象 -> 函式式」的應用開發範型發展趨勢是可以預見的。
這些年,指令碼/直譯式程式語言大行其道,使用 Python/Ruby/PHP 代替原本靜態語言開發的應用比比皆是,傳統的 C/C++ 應用開始逐漸縮減到桌面應用、高效能伺服器應用、驅動、系統介面等領域。因為大部分的應用的效能已經不是問題,CPU 相對過剩,I/O、網速才是瓶頸,因為人們總是更重視開發效率。而 JavaScript 因為一開始就有這樣的設計能力,把握住了技術的先機,緊隨了這股浪潮。
當然,運氣也不可或缺。世界上的程式開發語言至少也有個幾百種。一種語言想獲得認可並得到流行,光有好的技術設計是不夠的,它還需要位置乃至契機。
程式開發語言要找到適合自己應用的領域,深深的紮下根來,並以此為基地,向外伸展。這個時間,有時候需要 20 年以上。比如 PHP 專注於 Web 開發,C 對於系統開發不可缺少,Python 在科學計算、網路程式開發有諸多應用。
在 2004 年,JavaScript 就得到了一次契機:Google 推出了使用 Ajax 技術的Gmail信箱,那堪比桌面的無刷體驗,引發了業界轟動和模仿浪潮。而 Ajax 的作業核心就是 JavaScript。此後,JS 在瀏覽器中的地位變得十分穩固,已經成了事實標準。在 2009 年,基於 Google 強大 V8 JS 引擎的 Node.js 出現了,它意味? JS 向其它領域開始進軍,發揮它的語言威力。微軟當年也宣稱在伺服器端可以內建支援 JavaScript,不過這完全不可比。
網路時代的需要,JavaScript 捷足先登。瀏覽器一開始就繫結了 JS 指令碼/直譯式程式技術,這讓它取得先發優勢。當年的瀏覽器大戰後,微軟的瀏覽器佔據統治地位,IE 裏面是可以編寫 vbscript 的,但微軟在網路時代的停滯不前,讓他遺失了很多機會。
由於網路帶來的低成本訊息互動以及更低的開發、部署成本,越來越??多的產品基於瀏覽器做為界面。JS 在應用開發上當仁不讓。業界出於需求,制定了幾版相關的技術標準,比如 HTML、CSS、JS 便都有了自己的位置和開發標準規範,它們相互緊密協作,融為一體。Web 應用開始侵蝕以往的桌面應用。
時間證明了 JavaScript 的價值,它並沒有被淹沒在歷史的發展裡。只要應用領域有足夠的渴求,原本有很多不足的東西也會獲得強大的推動力,把它改造的更好。
Brendan Eich 在今年年 5 月份做了一個 PPT,回顧了 JS 語言的創造程序和這 20 年的發展、前景。(觀看地址:http://brendaneich.github.io/ModernWeb.tw-2015/?;按右鍵到下一頁)
那麼我也藉用他的話來結尾吧:
[b]My advice:always bet on JS.?
[/b]
(本文轉載自合作夥伴《雷鋒網》;圖片來源:ruiwen,CC Licensed;未經授權,不得轉載)
TO 給你新鮮事!
想在手機查閱更多Javascript資訊?免費下載【香港矽谷】Android App
原文站台: TechOrange
分享到Facebook
類型:
Javascript
《TO》導讀:本文以第一人稱撰寫,原文來自《雷鋒網》專欄作家威靈頓
我從事軟體開發的相關工作已經有 15 年了。目前的工作主要集中於 Web 和行動應用方面。在這麼多年裡,我對 JavaScript 的態度可能比較能代表一大群工程師的看法:從一開始對 JS 的不屑一顧到最後驚奇它的表現和潛力。
曾經的 JavaScript 像玩具一樣
在 2000 年那會兒,我也從事過一段 web 應用開發。開發平台是 Windows,主要使用 Asp。那個時候的 JavaScript 主要用途是檢驗頁面輸入資料是否正確。錯誤的時候,會彈出個警告窗口。當時整個 Web 開發、應用環境,實際上都是十分簡陋的。Web 開發者看待 JavaScript 估計就如同玩具一般。因為它能做的真的是十分有限。如果你能找到 2000 年時候的有關 JS 的 IT 圖書,內容多半大同小異,充斥?告訴你怎麼用 JS 做個什麼跑馬燈、怎麼製造煩死人的彈窗,如此這般。這些內容也進一步抑制了大家對 js 的期望。
後來,我轉向 C/C++,因為「真正的工程師使用 C++」。這一轉身就是很多年,我對 JS 的印象,也就止於那點功用了。
這幾年,因為種種變化,我又轉回來了。這個時候再回顧 Web 開發,已經可以用天翻地覆來形容。相關的概念層出不窮,發展出的各種技術、工具,五花八門,讓人眼花繚亂。而且更要命的是,這些知識除了基礎的幾類,大部分都十分的不穩定,並且在這種不穩定的情況下迅速發展,以瘋狂的速度淘汰更新。今天還在用的工具,可能明天就有更新、更好的了。
為什麼會這樣?因為社會需要的熱點在這裏「需求推動」。這個社會的生活、生產,逐漸轉移到了站台上、行動端,這就是這些領域快速發展進步的主因。
這個時候再回頭看當年的玩具語言:JavaScript,也早已今非昔比。
它已經成長為網路時代不可或缺的前端頂樑柱。現在已經不可想像沒有 JS 的站台是否還能正常執行。不只有如此,它的觸角居然還深入到了後端服務,Node.js 方興未艾。一些新一代的產品,如 MongoDB,甚至內建了 JS 語言支援,作為應用互動的工具。
這是很多人都無法想像到的場景,包括我在內。對此,我不得不回過頭看一下,思考 JavaScript 為什麼會擁有現在的地位。
冥冥之中註定的語言
JavaScript 的總體設計有亮點,但問題也很多。它是作者在 10 天內設計出來的。因為時間倉促,很多細節未及推敲、深思熟慮就推上了市場,以至於充斥了漏洞、糟粕。Douglas Crockford 在《JavaScript 語言精粹》(英文名《JavaScript:The Good Parts》)裏面提到:「Javascript 中糟粕的比重超出了預期。」(註:Douglas Crockford,JavaScript 開發社區最知名的權威,是 JSON 、JSLint、JSMin 和 ADSafe 之父,著有《JavaScript: The Good Parts》。)
連 Brendan Eich(JavaScript 的創造者)自己都說:「與其說我愛它,不如說我恨它。它是 C 語言和 Self 語言一夜情的產物。十八世紀英國文學家約翰遜博士說得好:‘它的優秀之處並非原創,它的原創之處並不優秀。’(the part that is good is not original, and the part that is original is not good.)」
但是,似乎是在冥冥之中註定,JavaScript 在一開始就抓到了未來程式開發語言的方向:函式式程式開發。
「JavaScript 設計的最出色的就是它的函式的實作。它近乎接近於完美。…… 函式在 javascript 中是頂級對象,它是第一個成為主流的 Lambada 語言,它是披? C 外衣的 Lisp。?」
—— Douglas Crockford
讀過《駭客與畫家:矽谷創業之父 Paul Graham 文集》(主要介紹駭客即優秀工程師的愛好和動機,討論駭客成長、駭客對世界的貢獻以及程式語言和駭客工作方法等話題)的人,都會記得作者的預言:Lisp 才是語言的終極趨向。(註:LISP 源自清單處理 LISt Processing 的縮寫,由來自麻省理工學院的人工智慧研究先驅 John McCarthy 在 1958 年基於λ演算所創造,是一種通用進階電腦程式語言,長期以來壟斷人工智慧領域的應用,也是第一個函式式程式設計語言。)
矽谷創業之父 Paul Graham
函式式程式開發的流行之勢
函式式程式開發並不是新發明,它的歷史甚至比一些主流語言還早。因為效能和實作等問題,一直飽受冷落。而如今,電腦的硬體效能大大提高,改變了很多事物。原本不夠經濟的,變得可行;原本不夠好的,在新條件下變得不錯。鑑於函式式程式開發的優良特性和強大能力,它的流行其實並不意外。「程序化 -> 針對對象 -> 函式式」的應用開發範型發展趨勢是可以預見的。
這些年,指令碼/直譯式程式語言大行其道,使用 Python/Ruby/PHP 代替原本靜態語言開發的應用比比皆是,傳統的 C/C++ 應用開始逐漸縮減到桌面應用、高效能伺服器應用、驅動、系統介面等領域。因為大部分的應用的效能已經不是問題,CPU 相對過剩,I/O、網速才是瓶頸,因為人們總是更重視開發效率。而 JavaScript 因為一開始就有這樣的設計能力,把握住了技術的先機,緊隨了這股浪潮。
當然,運氣也不可或缺。世界上的程式開發語言至少也有個幾百種。一種語言想獲得認可並得到流行,光有好的技術設計是不夠的,它還需要位置乃至契機。
程式開發語言要找到適合自己應用的領域,深深的紮下根來,並以此為基地,向外伸展。這個時間,有時候需要 20 年以上。比如 PHP 專注於 Web 開發,C 對於系統開發不可缺少,Python 在科學計算、網路程式開發有諸多應用。
在 2004 年,JavaScript 就得到了一次契機:Google 推出了使用 Ajax 技術的Gmail信箱,那堪比桌面的無刷體驗,引發了業界轟動和模仿浪潮。而 Ajax 的作業核心就是 JavaScript。此後,JS 在瀏覽器中的地位變得十分穩固,已經成了事實標準。在 2009 年,基於 Google 強大 V8 JS 引擎的 Node.js 出現了,它意味? JS 向其它領域開始進軍,發揮它的語言威力。微軟當年也宣稱在伺服器端可以內建支援 JavaScript,不過這完全不可比。
網路時代的需要,JavaScript 捷足先登。瀏覽器一開始就繫結了 JS 指令碼/直譯式程式技術,這讓它取得先發優勢。當年的瀏覽器大戰後,微軟的瀏覽器佔據統治地位,IE 裏面是可以編寫 vbscript 的,但微軟在網路時代的停滯不前,讓他遺失了很多機會。
由於網路帶來的低成本訊息互動以及更低的開發、部署成本,越來越??多的產品基於瀏覽器做為界面。JS 在應用開發上當仁不讓。業界出於需求,制定了幾版相關的技術標準,比如 HTML、CSS、JS 便都有了自己的位置和開發標準規範,它們相互緊密協作,融為一體。Web 應用開始侵蝕以往的桌面應用。
時間證明了 JavaScript 的價值,它並沒有被淹沒在歷史的發展裡。只要應用領域有足夠的渴求,原本有很多不足的東西也會獲得強大的推動力,把它改造的更好。
Brendan Eich 在今年年 5 月份做了一個 PPT,回顧了 JS 語言的創造程序和這 20 年的發展、前景。(觀看地址:http://brendaneich.github.io/ModernWeb.tw-2015/?;按右鍵到下一頁)
那麼我也藉用他的話來結尾吧:
[b]My advice:always bet on JS.?
[/b]
(本文轉載自合作夥伴《雷鋒網》;圖片來源:ruiwen,CC Licensed;未經授權,不得轉載)
TO 給你新鮮事!
想在手機查閱更多Javascript資訊?免費下載【香港矽谷】Android App
原文站台: TechOrange
分享到Facebook