JavaScript 最終將在編程語言中占統治地位?
JavaScript 最終將在編程語言中占統治地位?
JavaScript 現在是大多數開發者都會使用的編程語言。網絡效應會推動它成為有史以來第一個真正占統治地位的編程語言嗎?
大約十年前,編程的方式發生了巨大的變化。
過去,編程往往是一件孤獨的事情,程序員之間缺乏交流,大家都沈浸在自己的世界裏,程序員之間相互合作的情形僅僅發生在公司內部或者開源項目中。而就在十年前,同事之間進行合作的情況變得普遍,編程這件事的社交體驗突然變得無比尋常。從此,我們分享代碼的方式、尋找問題答案的方式以及探索新技術的方式,都開始與其他程序員的態度和行為有著緊密的聯系。
簡而言之,電腦被互聯網連接在一起,程序員就像這些電腦一樣,同樣因為互聯網而聯系起來。
互聯網
互聯網對編程方式的影響體現在多方面,最明顯的有以下途徑:
Stack Overflow 上匯集了眾多編碼問題以及針對這些問題的答案,它是有關編程問題可靠答案的重要信息來源。(必要的聲明:我主要使用 Stack Overflow 來獲取有用的答案,雖然我並不是它的資深回答者,但我依然是它的忠實支持者。)雖然參與 Stack Overflow 社區的障礙眾所周知,但該網站的好處也是很明顯的,其針對編程問題的答案非常豐富,這種問答模式增強了社交性,深度和前沿的技術問題能夠引導程序員做出正確的技術選型。一個框架或者工具包如果在 Stack Overflow 的積極回答越多,那麽使用它的人就會越多。
GitHub 是一個提供編程協作的強大平臺,它誕生於十年前,程序員可以通過它進行項目協作,分別向同一個項目提交自己的代碼。盡管它最初的目的主要是為了推廣當時新興的分布式版本控制工具 Git,但隨著托管在 GitHub 平臺上軟件數量越來越多且質量越來越高,其社會價值得到前所未有的提升。項目獲得的 star、fork、watcher 數量直觀地展示了該項目的優秀程度。GitHub 也存在缺點,比如學習 Git 並不容易,又比如項目應對變化缺乏足夠的靈活性,這些因素都會使一些用戶難以參與進來。但是,盡管存在一些缺點,GitHub 的社交特性深深影響了開發人員對新工具和新技術的追隨。
最後,關於科技新聞和討論的網站也很多,主要代表有 HackerNews。盡管它是眾多大型網絡編程社區中最具敵意的一種類型,但它無形中有助於推動和提升新的軟件構建方式,催生更多新技術和新想法。“黑客新聞”對工具的放大通常有助於它們達到臨界點,而人們對產品的討論則是另一種社交形式,有助於大家對某一平臺進行深入的評估。另外,聚焦產品的社區也可以實現這一功能,甚至更受歡迎,比如 Product Hunt。
如果我們仔細觀察這些社區的缺陷,就會看到更深層次的模式:軟件的評估主要基於其社會價值和反饋,而不僅僅是某些表面上“客觀”的技術優點。
技術一直與社會背景息息相關,對技術平臺風險或者可靠性的評估一直依賴於社會指標。但是隨著編程社交網絡的逐漸壯大,幾乎涵蓋了和編程相關的方方面面,於是編程社交網絡超越了社會指標成為技術評估的主要手段。
類似地,過去專業文件對技術成熟度的評估非常權威,就像是自上而下的指示,而如今這種形式已經變成了輔助手段,現在,針對某些框架和工具,通過加入書簽的次數以及評論數就可以直觀地看到這門技術的熱度,相比於書簽和評論這種直觀的方式,曾經權威的文件形式已經變得黯然失色。即使是純粹的社交因素,比如 Gitter 或者 Slack 聊天室中參與項目的人數,或者在社交媒體上關註項目的人數,都會影響開發者對新技術的關註度。
Atwood 法則
盡管最近 Jeff Atwood 在社交媒體上分享的東西讓我想撞墻,但是多年以來,他作為知名軟件博主確實發表了很多有價值的見解。其中由他名字命名的這條法則展示了超乎尋常的先見之明:
所有能夠用 JavaScript 編寫的應用程序最終都會用 JavaScript 來編寫。
Jeff 的靈感來源於互聯網之父 Tim Berners-Lee(蒂姆·伯納斯·李)所闡述的富有洞察力的“最小權力原則”。當 Jeff 發表那篇博文之後,人們仍然認為 JavaScript 只是玩具,並且很多人都認為所有程序都使用 JavaScript 來編寫的想法非常荒謬。當然,互聯網的神奇之處就在於其更新速度超乎預料,大概十二年後,強大的社區誕生了,它致力於將更多的軟件移植到 JavaScript,或者使用 JavaScript 來重寫。
Atwood 法則說明 JavaScript 有能力重新改寫幾乎任何類型的代碼。考慮到任何圖靈完備語言都應該能夠用其他語言編寫的功能,這個觀點變得很有趣,但是對於可能出現什麽樣的行為沒有特別的啟發。Atwood 法則的重點並不是采用 JavaScript,而是表達用其他語言實現想法的潛力。
JavaScript 受到網絡推動會怎樣?
如今 JavaScript 的覆蓋面越來越廣。ECMAscript 標準中描述了開放式語言。像 TypeScript 這樣的相鄰語言為編碼人員提供了很好的條件,以換取與 JavaScript 生態系統的兼容性。JavaScript 還有像 Node 這樣的環境。通過 npm 這樣的包管理工具,可以即時訪問多年的代碼。JavaScript 語言周邊的基礎設施非常強大,一些基礎設施甚至使用 JavaScript 語言來為其他語言提供構建工具或者自動化功能。更為重要的是,JavaScript 幾乎遍布全球數十億臺設備的 Web 瀏覽器。
如此廣泛的應用充分展示了 JavaScript 的流行和主導地位。實際上,最近 Stack Overflow 針對開發人員的調查顯示,將近 70%的人聲稱 JavaScript 是他們使用的語言之一。如上所述,參與 Stack Overflow 社區的一些障礙可能會影響這種調查,但是拋開這些因素,其整體趨勢依然很明顯。使用 JavaScript 的編碼器的比例在不斷增加,在過去幾年中增長了大約 15%。
這表明 JavaScript 可能正在以網絡的形式高速發展,並成為相關技術的生態系統。 需要註意的是,對於那些不存在贏家通吃的領域,特定領域的語言將始終在重點領域具有獨特的價值。 但對於通用編程領域,從電子表格宏到物聯網硬件的所有內容似乎都默認支持 JavaScript。
盡管通過社交網絡的熱度評估一項編程語言並不一定是有效的。但種種跡象表明 JavaScript 生態系統越來越強大。盡管大多數開發人員都會使用多種編程語言,事實上,大多數的編程人員在他們的工作中都使用不止一種語言,但是前瞻性地投身 JavaScript 對於他們來說都是有意義的。
JavaScript 之於 Glitch
當然,我整天都在和 Glitch 打交道,所以你知道我們的團隊對此有了一個看法。別擔心:Glitch 幾乎可以用任何通用語言運行代碼。我們已經有 Python、PHP 和 Ruby 項目在社區中愉快地運行。
但是我們選擇 JavaScript 和 Node 作為我們在工作中使用 Glitch 的主要平臺。這有很多原因,其中一個原因是我們是一個小團隊,我們希望我們投註的技術能夠為社區提供最大的價值。我們堅信,隨著時間的推移,我們對 JavaScript 生態系統的投資將變得越來越有價值。
我們還研究了 Glitch 生態系統中的應用程序、庫、模塊和代碼片段的網絡價值,我們開始為編程人員構建更多的工具,並利用機器學習來簡化編碼,我們認為集中註意力將帶來收益。選擇一個擅長的語言有助於確保我們創建的內容是有價值、適用並且立即有用的,而不在多種語言間徘徊。
如果 Haskell 從零開始出現並被用到數十億瀏覽器中,並且小學生也開始學習它,Glitch 就會在那裏。Glitch 團隊中肯定有人希望我們可以提供與其他語言一樣好的體驗,就像我們使用 JavaScript 一樣。但是隨著他們現在的趨勢,我們想要解釋我們在 JavaScript 和 Node 上做更大賭註的理由,而不是僅僅說“我們是語言不可知的”。這裏有依據理論、思想和一點歷史,以及相當多的數據,所有這些信號都表明這裏有特別的事情發生。
事實是,我們從未見過一種開放語言成為所有開發者的通用編程語言。如果大多數編碼工作都用一種語言完成,我們不知道這可能會產生哪些好處,除非有特別的理由要使用特定於領域的語言來讓我們不這樣做。
我們可能正處在一個前所未有的編程時代的懸崖邊上,我們可能會看到采用和使用整個編程語言的新模式。這種潛力讓我們興奮不已,並且想要屏住呼吸看看整個生態系統如何發揮。但更重要的是,我們很高興所有這些發展將使 Glitch 社區能夠制作出更具表現力和更有意義並且在代碼中更容易實現的應用程序。
JavaScript 最終將在編程語言中占統治地位?