生而混亂,被設計者不喜,歷久彌新的腳本語言JavaScript

2021-01-20 夢想視角

在網際網路的時代,每一個人都離不開瀏覽器。而每一個極具特性,受廣大網友喜歡的網站,都離不開JavaScript語言的貢獻。而且,當前網際網路的每一個新形態,比如比較火的微信小程序,都會給JavaScript留二次開發的渠道。這就是JavaScript這門屬於網絡的高級腳本語言的現狀。

引言

JavaScript程式語言通常被簡稱為JS,被廣泛用於Web應用開發,常用來為網頁添加各式各樣的動態功能,為用戶提供更流暢美觀的瀏覽效果。JS的最大特點是編程環境簡單,入門門檻較低。

JavaScript是一種腳本語言,其原始碼在發往客戶端運行之前不需經過編譯,而是將文本格式的字符代碼發送給瀏覽器由瀏覽器解釋運行。也就是說,JavaScript語言編寫的腳本是通過嵌入在HTML中來實現自身的功能的。

JavaScript最初由網景公司(Netscape)的 Brendan Eich 設計,將其命名為LiveScript,後來網景公司在與Sun合作之後將其改名為JavaScript。

JavaScript語言的前世今生

1994年,網景公司發布了旗下 Navigator 瀏覽器 0.9 版。這是歷史上第一個比較成熟的網絡瀏覽器,轟動一時,引起了當時人們的極大關注。但是,這個版本的瀏覽器只能用來瀏覽,不具備與訪問者互動的能力。因此,網景公司急需一種網頁腳本語言,使得瀏覽器可以與網頁進行互動。

就在這時,發生了另外一件大事:1995年,Sun公司將Oak語言改名為Java,正式向市場推出。Java的"一次編寫,到處運行"特性,使得其看上去很可能成為未來的主宰。網景公司決定與Sun公司結成聯盟,不僅允許Java程序以 Applet(小程序)的形式,直接在瀏覽器中運行;甚至還考慮直接將 Java 作為腳本語言嵌入網頁,只是因為這樣會使HTML網頁過於複雜,後來才不得不放棄。

此時,34歲的系統程式設計師Brendan Eich登場了。1995年4月,網景公司錄用了他,研究將Scheme語言作為網頁腳本語言的可能性。而 Brendan Eich 的主要方向和興趣就是函數式編程,他以為進入新公司後,會主要與Scheme語言打交道。

但僅僅一個月之後,1995年5月,網景公司做出決策,未來的網頁腳本語言必須「看上去與Java足夠相似」,但是要比Java簡單,使得非專業的網頁作者也能很快上手。而 Brendan Eich 被指定為這種"簡化版Java語言"的設計師。

而Brendan Eich本人對 Java 是沒有一點興趣,為了應付公司安排的任務,他只用10天時間就把 Javascript 設計出來了。由於設計時間太短,語言的一些細節考慮得不夠嚴謹,導致後來很長一段時間,Javascript寫出來的程序混亂不堪。而就是這種初期混亂不堪的語言,未來卻成為了網際網路第一程式語言,真是世事難料啊。

當然,Breadan Eich 本人也不太喜歡自己的這個作品,曾經說過:"與其說我愛Javascript,不如說我恨它。它是C語言和Self語言一夜情的產物。十八世紀英國文學家詹森博士說得好:'它的優秀之處並非原創,它的原創之處並不優秀。"

JavaScript:又不是我製造出了「千年蟲」

總的來說,對於JavaScript語言的設計,Breadan Eich 的設計思路是這樣的:

借鑑 C 語言的基本語法;借鑑 Java 語言的數據類型和內存管理;借鑑 Scheme 語言,將函數提升到"第一等公民"(first class)的地位;借鑑 Self 語言,使用基於原型(Prototype)的繼承機制。所以,Javascript語言實際上是兩種語言風格的混合產物----(簡化的)函數式編程+(簡化的)面向對象編程。這是由Brendan Eich(函數式編程)與網景公司(面向對象編程)共同決定的。

而千禧年(公元2000年)時,被炒得火熱無比一個詞——「千年蟲」,能夠被廣泛傳播的原因,很大程度上也與JavaScript語言有關。

因為JavaScript語言的日期類直接採用了 java.util.Date函數庫,其中的 Date.getYear() 返回的應該是年份的最後兩位。如果用這個函數生成年份,某些網頁可能出現"19100"這樣的結果。

這個問題的存在,使得上世紀九十年代火熱的網際網路造就的廣大網民,都知道了千年蟲,讓這個從根本上說是一種電腦程式處理日期上的 Bug,成了普通人都熱議的話題。

結語

任何事物的誕生,都存在偶然性。而誕生之後是否能夠流芳百世、名傳千古,那完全是機緣與時代的產物。一個程式設計師用了十天創造出的、混亂不堪的計算機程式語言,在網際網路大潮中,搭上了瀏覽器的快車,便快速的發展壯大,影響著人們對網際網路的使用。

拿現在網際網路界的流行語來說,這也算是站在風口上的「豬」吧,而JavaScript語言的成長史,那就應該算是醜小鴨變天鵝的典型了吧。

#JavaScript#

相關焦點

  • 學習Async,Defer 和動態腳本,本文就夠了!
    src="https://javascript.info/article/script-async-defer/small.js"></script> 瀏覽器掃描頁面尋找腳本,然後並行下載它們,以提高性能。
  • JavaScript運行機制
    一、引子本文介紹JavaScript運行機制,這一部分比較抽象,我們先從一道面試題入手:這一題看似很簡單,但如果你不了解JavaScript運行機制,很容易就答錯了。題目的答案是依次輸出1 2 3,如果你有疑惑,下文有詳細解釋。
  • JavaScript中的陷阱大集合
    當軟體開發者開始使用世界上使用最廣泛的語言編寫代碼時,他們會在這個過 程中發現很多有趣的「特性」。即便是老練的Javascript開發者也可以在本文找到一些有趣的新陷阱,請留意這些陷阱,當然也可以盡情享受由這些陷阱 帶來的「樂趣」!
  • 一次使用 Go 語言編寫腳本的經歷
    本文介紹了我如何嘗試使用 Go 語言進行腳本編程的經歷。文中我將討論 Go 腳本的必要性,我們預期的表現以及可能的實現方式。在討論過程中,我講深入探討腳本、Shell 和 Shebang。最終,我們將會討論讓 Go 腳本工作的解決方案。為什麼 Go 語言適合編寫腳本?
  • JS教程:第一講 JavaScript語言概況
    JavaScript腳本正是滿足這種需求而產生的語言。它深受廣泛用戶的喜愛的歡迎。它是眾多腳本語言中較為優秀的一種,它與WWW的結合有效地實現了網絡計算和網絡計算機的藍圖。無凝Java家族將佔領Internet網絡的主導地位。因此,儘快掌握JavaScript腳本語言編程方法是我國廣大用戶日益關心的。
  • Web開發的大爆炸:利用JavaScript進行移動
    它將HTML頁面分解成節點,我們可以使用JS等其他語言輕鬆理解節點。為了向你展示一個例子,讓我們在頁面上添加一些帶有一些JS的按鈕。打開你的index.html文件。在您的個人資料連結下,我們定義一個新的按鈕標籤。
  • 利用CSS、JavaScript及Ajax實現圖片預加載的三大方法
    簡單、高效,不需要任何JavaScript。該方法雖然高效,但仍有改進餘地。使用該法加載的圖片會同頁面的其他內容一起加載,增加了頁面的整體加載時間。為了解決這個問題,我們增加了一些JavaScript代碼,來推遲預加載的時間,直到頁面加載完畢。
  • 編程入門學什麼語言好?
    首先應該明確學習程式語言的目的-工作或興趣,這兩者差別比較大!如果是考慮就業問題,那麼根據2019年末的一個流行度調查,關於程式語言的排名,目前前三的分別是:Java(難)C(很難)Python(較難)
  • 13 種程式語言名稱的來歷
    程式語言命名通常有幾個規律,如根據特性取縮寫(如BASIC,COBOL,TCL和LISP),以已有的語言為基礎(如 C++,C#和CoffeeScript),或直接是數學和計算機領域傑出人物的名字(如Ada,Pascal和Turing)。有時,設計者取名時更充 滿想像力。下面是13個意味深長的名字,以及它們背後的故事。
  • 第五篇:JavaScript事件處理
    初識JavaScript事件JavaScript語言本身不會產生事件,產生事件的是網頁文檔和網頁文檔中的HTML元素。什麼是事件呢?事件就是網頁文檔或網頁元素對外發出的通知。DOM實際上是建立網頁與JavaScript語言溝通的橋梁。JS如何監聽事件?如果JS需要對DOM對象觸發的事件進行處理,就需要監聽這些事件,瀏覽器會自動調用監聽事件的JS函數。
  • 25 歲的 JavaScript 都經歷了什麼?
    編譯 | 前端小智 責編 | 阿哲頭圖 | CSDN 下載自視覺中國來源 | 大遷世界(ID:qq449245885)原文:https://www.zdnet.com/article/javascript-at-25-the-programming-language-that-makes-the-world-go-round
  • 西瓜視頻分鏡頭腳本怎麼寫?分鏡頭腳本概念介紹
    想要在西瓜視頻發布好看、優質的視頻,在拍攝前做好準備工作,寫好分鏡頭腳本能夠有效地提高拍攝效率和拍攝質量 。在寫腳本的時候,其實我們就把視頻的框架和拍攝的流程都梳理了一遍,熟練以後甚至可以把劇本以影像的形式在腦海裡放映一遍,這樣在拍攝的時候往往能事半功倍,避免漏拍、錯拍的情況。以下是關於西瓜視頻分鏡頭腳本的概念的詳細介紹。
  • 20個常用的JavaScript簡寫技巧
    任何程式語言的簡寫技巧都能夠幫助你編寫更簡練的代碼,讓你用更少的代碼實現你的目標。讓我們一個個來看看 JavaScript 的簡寫技巧吧。 1. 聲明變量 2.
  • 打造鏡頭語言 淺談電影分鏡頭腳本製作
    ·分鏡頭基本構成要素  很多人覺得分鏡頭費事不省裡,但是當你真正只做過分鏡頭之後,你會發現它不但不會耽誤你的進度,還會大大的幫你節省拍攝時間,也許很多人沒有強大的手繪基礎,覺得自己製作的分鏡頭不好看,筆者在這裡要說一下,分鏡頭絕對不是拿給別人炫耀的東西,而是拍攝的輔助的工具,至於手繪的能力其實並不重要
  • 引流腳本,APP引流腳本,引流腳本是什麼意思?
    通俗一點講,引流腳本就是一個代替人工來自動化操作的工具,舉個簡單的例子吧,像你們的手機上都會有或多或少的一些交友平臺吧,美拍這個APP相信大家都不陌生吧,裡面的粉絲數量也是相當可觀的,你隨便進一個欄目,用傳統的簡單手動操作去跟別人打招呼,然後進行引流,效果也是不錯的吧,但是讓你花一天的時間都在跟別人去打招呼進行引流,你是什麼感覺呢?
  • 短視頻小白如何寫腳本?
    分鏡頭腳本 分鏡頭腳本已經將文字轉換成可以用鏡頭直接表現的畫面,通常分鏡頭腳本包括畫面內容、景別、拍攝技巧、時間、機位、音效等,在一定程度上已經是」可視化「影像了。分鏡頭腳本要求十分細緻,每一個畫面都要在掌控之中。包括每一個鏡頭的長短,每一個鏡頭的細節。
  • 分享10款超酷的Javascript繪畫和畫布類庫
    gt; 資源 > 關鍵詞 > mvc最新資訊 > 正文 分享10款超酷的Javascript繪畫和畫布類庫 javascript
  • 為什麼說設計是網站的肢體語言?
    》,文中稱,演講者通過肢體語言可以使自己的表達更加充分,從而使聽眾更容易理解自己。設計者設計的網站就是網際網路的肢體語言,好的網站可以使用戶盡得他們所需。那設計者又該如何設計網際網路的這一肢體語言呢?我們對該文進行了編譯,讀完本文,或許你就可以找到答案。
  • Javascript去除字符串中的點或其他符號
    在前端上使用javascript進行操作的。測試了兩次沒有好用,程序直接把整個字符串都進行了替換,在考慮這個是為什麼呢?javascript(請忽略此配圖)示例var ip = data.field.ip.replace(/.