前端簡史

單騎入西蜀發表於2019-02-28

前端發展史及趨勢

世界第一臺計算機

  • 時間/地點/人物:1946年2月14日世界第一臺計算機“ENIAC”(埃尼阿克)在美國賓夕法尼亞大學誕生。電腦的發明是一群科研人員共同努力的成果,但其中數學家馮·諾依曼的設計思想在其中起到了關鍵作用,所以馮·諾依曼被稱為現代計算機之父。
  • 背景:二戰中,美國國防部用它進行彈道計算。
  • 相關屬性:它是一個龐然大物,用了18000個電子管,佔地170平方米,重達30噸,耗電功率約150千瓦,每秒鐘可進行5000次運算。
  • 意義:它的問世標誌著電腦時代的開始。

程式語言與作業系統

  • UNIX(尤尼斯)
    • 時間/地點/人物:1969年誕生於美國AT&T(美國電話電報公司)的貝爾實驗室,開發者是:Ken Thompson(肯·湯普森)、D.M.Ritchie(丹尼斯·裡奇)、Douglas McIlroy(道格拉斯·麥克羅伊)。
    • 背景:20世紀60年代,貝爾實驗室的研究員Ken Thompson(肯·湯普森),閒來無事,手癢難耐,想玩一個他自己編的,模擬在太陽系航行的電子遊戲——Space Travel。揹著老闆找了臺空機器開始開發,但是這臺機器沒有作業系統,而遊戲必須使用作業系統的一些功能,於是他著手開發作業系統,後來這個作業系統被命名為–UNIX。
    • 特性:多使用者,多工的分時作業系統,具有良好的安全性,保密性和可維護性。
  • Linux(裡那克斯)
    • 時間/地點/人物:1991年10月5日,芬蘭赫爾辛基大學的研究生林納斯·託瓦茲宣佈Linux核心誕生。年僅21歲。
    • 背景:林納斯經常要用他的終端模擬器(Terminal Emulator)去訪問大學主機上的新聞組和郵件,為了方便讀寫和下載檔案,他自己編寫了磁碟驅動程式和檔案系統,這些在後來成為了Linux第一個核心的雛形。
    • 有些人生來就具有統率百萬人的領袖風範;另一些人則是為寫出顛覆世界的軟體而生。唯一一個能同時做到這兩者的人,就是託瓦茲。”美國《時代》週刊對“Linux之父”林納斯·託瓦茲(Linus Torvalds)給出了極高的評價。甚至,在《時代》週刊根據讀者投票評選出的二十世紀100位最重要人物中,林納斯居然排到了第15位,而從20世紀的最後幾年就開始霸佔全球首富稱號的蓋茨不過才是第17位。
    • 特性:免費使用、自由傳播、多使用者、多工、支援多種平臺。
  • windows
    • 簡介:1985年美國微軟公司開發的一套操系統,簡單易用,個人電腦喜愛的作業系統。採用了圖形化模式GUI。
  • Mac OS
    • 簡介:1984年開發,它是基於Unix核心的圖形化作業系統,也是首個在商用領域成功的圖形使用者介面作業系統,很少受到病毒的襲擊,最新的系統版本是macOS 10.14。
  • FORTRAN
    • 簡介 :1954年約翰·巴克斯,世界第一個高階語言,源自於“公式翻譯”(英語:FormulaTranslation)的縮寫。
  • C語言
    • 時間/地點/人物:1972年美國AT&T貝爾實驗室的D.M.Ritchie(丹尼斯·裡奇),在B語言的基礎上設計出了C語言,取BCPL的第二個字母作為語言名字。
    • 背景:20世紀60年代,貝爾實驗室的研究員Ken Thompson(肯·湯普森),閒來無事,手癢難耐,想玩一個他自己編的,模擬在太陽系航行的電子遊戲——Space Travel。揹著老闆找了臺空機器開始開發,但是這臺機器沒有作業系統,而遊戲必須使用作業系統的一些功能,於是他著手開發作業系統,後來這個作業系統被命名為–unix。
      1970年肯·湯普森以BCPL語言為基礎,設計出了接近硬體的B語言,並用B語言寫了第一個unix系統。
      1971年,同樣酷愛Space Travel的丹尼斯·裡奇為了能早點兒玩上游戲,加入了Thompson的開發專案,合作開發UNIX。他的主要工作是改造B語言,使其更成熟。
      1972年,丹尼斯·裡奇設計出了C語言,人稱C語言之父,UNIX之父。
      1973年,C語言的主體完成。丹尼斯·裡奇和肯·湯普森迫不及待地開始用它完全重寫了UNIX。
    • 相關屬性:高階語言、結構式語言、程式碼級別的跨平臺、使用指標
  • C++/Java
    • 簡介:C++1983年由C語言改良而來,Java1996年由sun公司開發,主要開發者詹姆斯·高斯林,2009被甲骨文公司收購。

前端起源

  • www/web:World Wide Web,即全球資訊網、廣域網

    • 時間/地點/人物:1989年CERN(歐洲粒子物理研究所)的英國電腦科學家蒂姆·伯納斯·李發明了全球資訊網並申請了智慧財產權。
    • 背景:當時蒂姆·伯納斯·李為了方便科學家們之間看文件、傳論文,創造了全球資訊網,他被稱為全球資訊網之父。伯納斯·李也是“千年技術獎”這一全球最大的技術類獎的首位獲得者。還是圖靈獎的獲得者。
    • 意義:它使得全世界的人們以史無前例的巨大規模相互交流,是人類歷史上最深遠、最廣泛的傳播媒介。改變了世界,成就了一批富翁如:amazon的創辦人傑夫·比佐斯,Yahoo的創始人楊致遠,Netscape的創始人馬克·安德森……
  • w3c:全球資訊網聯盟,又稱W3C理事會

    • 時間/地點/人物:1994年10月在麻省理工學院電腦科學實驗室成立,建立者是全球資訊網的發明者蒂姆·伯納斯·李。
    • 背景:為了完成麻省理工學院(MIT)與歐洲粒子物理研究所(CERN)之間的協同工作,致力於實現所有的使用者都能夠對 web 加以利用(不論其文化教育背景、能力、財力以及其身體殘疾)。
    • 所做事情:制定web標準規範,200多項標準。

時間軸線

  • 1994年前端歷史的起點,這一年蒂姆·伯納斯·李建立w3c、網景推出了第一版Navigator、css釋出、服務端指令碼php誕生。
  • 1995年網景推出了JavaScript,實現了客戶端的計算任務(如表單驗證),發明者是Brendan Eich(布蘭登·艾奇)。
  • 1996年微軟推出了iframe標籤,實現了非同步的區域性載入。
  • 1997年 由Netscape、Sun、微軟、Borland ECMA-262(歐洲計算機制造商協會)
  • 1999年W3C釋出第四代HTML標準,同年微軟推出用於非同步資料傳輸的ActiveX,隨即各大瀏覽器廠商模仿實現了XMLHttpRequest。這標識著Ajax的誕生,但是Ajax這個詞是在六年後問世的,特別是在谷歌使用Ajax技術打造了Gmail和谷歌地圖之後,Ajax獲得了巨大的關注。Ajax是Web網頁邁向Web應用的關鍵技術,它標識著Web2.0時代的到來。
  • 2006年,XMLHttpRequest被W3C正式納入標準。同一年John Resig釋出了jQuery,主要用於操作DOM,中心思想是取其元素,對其操作。隨即成千上萬的外掛誕生。
  • 2008年穀歌V8引擎誕生,改變了瀏覽器效能低制約前端的開發的局面,現代瀏覽器的崛起標誌著前端計算能力有弱變強。
  • 2009年第五代JavaScript釋出,同一年AngularJS誕生,隨後被谷歌收購,前端走進了一個令人目不暇接的新時代。
  • 2009年Ryan Dahl釋出了node,node是一個基於V8引擎的服務端JavaScript執行環境,類似於一個虛擬機器,也就是說js在服務端語言中有了一席之地。如果說ajax是前端的第一次飛躍,那麼node可算作前端的第二次飛躍。它意味著JavaScript走出了瀏覽器的藩籬,邁出了全端化的第一步。
  • 2010年backbone.js誕生
  • 2011年React和Ember誕生
  • 2014年Vue.js誕生,同一年,第五代HTML標準釋出。
  • 2015年ECMAScript6釋出,簡稱ES6。
  • 至此前後端分離已經是大勢所趨,資料驅動框架也形成了三國鼎立的局勢,Angular、React、Vue各佔一席。

從前後端不分離到分離

  • 前端是對瀏覽器的開發,程式碼在瀏覽器執行。後端是針對伺服器的開發,程式碼在伺服器執行。
  • 網際網路發展的早期,前後端開發是一體的,前端程式碼是後端程式碼的一部分。
  • 當時後端是MVC的開發模式,前端只是後端MVC中的V。那時的前端工程師,實際上是模板工程師,負責編寫頁面模板。
  • Ajax 技術誕生,改變了一切。2004年:Gmail,2005年:Google 地圖。前端不再是後端的模板,可以獨立得到各種資料。Ajax 技術促成了 Web 2.0 的誕生。
  • 前端通過 Ajax 得到資料,因此也有了處理資料的需求。這導致前端MVC框架的誕生。代表之一是Backbone,但是Backbone 沒有 C,只用事件來處理 UI 邏輯。
  • 另一些框架提出 MVVM 模式,用 View Model 代替 Controller。本質:view 繫結 view-model,檢視與資料模型強耦合。資料的變化實時反映在 view 上,不需要手動處理。
  • 傳統結構是後端把渲染好的html給瀏覽器,SPA架構是,後端把資料給js,js渲染html給瀏覽器。
  • 前後端分離:Ajax使前端應用興起,智慧手機的普及使前端要支援多終端。前端不再是後端 MVC 中的 V,而是單獨的一層。
  • 未來只有端工程師(手機端、PC 端、TV 端、VR 端……)和雲工程師。

參考連結1 參考連結2

相關文章