主頁 > 企業開發 > JavaScript的歷史

JavaScript的歷史

2020-10-17 14:10:58 企業開發

JavaScript歷史

它最初由Netscape的Brendan Eich設計,JavaScript是甲骨文公司的注冊商標,Ecma國際以JavaScript為基礎制定了ECMAScript標準,JavaScript也可以用于其他場合,如服務器端編程,完整的JavaScript實作包含三個部分:ECMAScript,檔案物件模型,瀏覽器物件模型,
Netscape在最初將其腳本語言命名為LiveScript,后來Netscape在與Sun合作之后將其改名為JavaScript,JavaScript最初受Java啟發而開始設計的,目的之一就是“看上去像Java”,因此語法上有類似之處,一些名稱和命名規范也借自Java,但JavaScript的主要設計原則源自Self和Scheme,JavaScript與Java名稱上的近似,是當時Netscape為了營銷考慮與Sun微系統達成協議的結果,為了取得技術優勢,微軟推出了JScript來迎戰JavaScript的腳本語言,為了互用性,Ecma國際(前身為歐洲計算機制造商協會)創建了ECMA-262標準(ECMAScript),兩者都屬于ECMAScript的實作,盡管JavaScript作為給非程式人員的腳本語言,而非作為給程式人員的腳本語言來推廣和宣傳,但是JavaScript具有非常豐富的特性,
發展初期,JavaScript的標準并未確定,同期有Netscape的JavaScript,微軟的JScript和CEnvi的ScriptEase三足鼎立,1997年,在ECMA(歐洲計算機制造商協會)的協調下,由Netscape、Sun、微軟、Borland組成的作業組確定統一標準:ECMA-262

以上這些是百度百科百度出來的JavaScript的歷史

然后再來說說他的創始人

布蘭登·艾奇(Brendan Eich,1961年~),JavaScript的發明人,目前(2005年至2014年)在Mozilla公司擔任首席技術長(Chief Technology Officer),出任Mozilla的CEO十天就被迫辭職
他就是這樣的一個人

主題來了

今天看到一則評論是這樣寫的:

寫前端的直接承認就行了,JavaScript 這門語言被 Brendan Eich 搞的就是屎!一!樣!的!設!計!

Wiki 上原文:

JavaScript was originally developed in 10 days in May 1995 by Brendan Eich, while he was working for Netscape Communications Corporation. Indeed, while competing with Microsoft for user adoption of Web technologies and platforms, Netscape considered their client-server offering a distributed OS with a portable version of Sun Microsystems's Java providing an environment in which applets could be run.[citation needed] Because Java was a competitor of C++ and aimed at professional programmers, Netscape also wanted a lightweight interpreted language that would complement Java by appealing to nonprofessional programmers, like Microsoft's Visual Basic (see JavaScript and Java).[10]
大意就是 JavaScript 根本就是 Bredan Eich 這一個實習生在短時間內趕工出來的一個目標輕量級的解釋形語言,

Bredan Eich 本來是個寫 Lisp 的,壓根就沒搞過 OOP,但是當時網景想借 Java 的“東風”,結果他“苦熬”十天憋出來這么個玩意兒,你能在 JavaScript 里看到很多 Lisp 的影子,感覺它好像是個函式式的,函式式里函式是第一等公民(即所謂的 First-Class Function),函式可以被當作引數傳遞給另一個函式,這里就涉及到作用域的問題,可是又特么有個不倫不類的 prototype 和 this,又有點兒像 OOP,call 和 apply 就是這種情況下的產物,又像函式式又像 OOP,
呵呵好幾個踩我的,都是前端沒跑了,

我自己也寫前端,寫這么多年了誰罵 JS 我給誰點贊,

JS 是屎、可不代表用屎寫不出來牛嗶的作品來,這都拎不清的我勸你趁早轉行,

估計水平不咋地的人看到自己唯一會的一門語言被罵,只會急得跳腳,暗搓搓地點個踩心里再噴兩句,也不想想自己寫的代碼是不是屎上加屎,


首先看到這個我不禁一抖,JavaScript真的是這樣嗎?
于是我查查了資料,資料上是這么說的:
網景急于解決瀏覽器與用戶互動這個問題,當時解決這個問題有兩個辦法,一個是采用現有的語言,比如Perl、Python、Tcl、Scheme等等,允許它們直接嵌入網頁,另一個是發明一種全新的語言,
這兩個選擇各有利弊,第一個選擇,有利于充分利用現有代碼和程式員資源,推廣起來比較容易;第二個選擇,有利于開發出完全適用的語言,實作起來比較容易,到底采用哪一個選擇,網景公司內部爭執不下,管理層一時難以下定決心,
就在這時發生了一件大事,1995年Sun公司將Oak語言改名為Java,正式向市場推出,Sun公司大肆宣傳,許諾這種語言可以"一次撰寫,到處運行"(Write Once, Run Anywhere),它看上去很可能成為未來的主宰,網景公司動了心,決定與Sun公司結成聯盟,它不僅允許Java程式以applet(小程式)的形式,直接在瀏覽器中運行;甚至還考慮直接將Java作為腳本語言嵌入網頁,只是因為這樣會使HTML網頁過于復雜,后來才不得不放棄,
總之,當時的形勢就是,網景公司的整個管理層,都是Java語言的信徒,Sun公司完全介入網頁腳本語言的
決策, 因此,Javascript后來就是網景和Sun兩家公司一起攜手推向市場的,這種語言被命名為"Java+script"并不是偶然的,此時,34歲的系統程式員Brendan Eich登場了,1995年4月,網景公司錄用了他,
Brendan Eich的主要方向和興趣是函式式編程,網景公司招聘他的目的,是研究將Scheme語言作為網頁腳本語言的可能性,Brendan Eich本人也是這樣想的,以為進入新公司后,會主要與Scheme語言打交道
僅僅一個月之后,1995年5月,網景公司做出決策,未來的網頁腳本語言必須"看上去與Java足夠相似",但是比Java簡單,使得非專業的 網頁作者也能很快上手, 這個決策實際上將Perl、Python、Tcl、Scheme等非面向物件編程的語言都排除在外了,
Brendan Eich被指定為這種"簡化版Java語言"的設計師,
重點內容
但是,他對Java一點興趣也沒有,為了應付公司安排的任務,他只用10天時間就把Javascript設計出來了,
由于設計時間太短,語言的一些細節考慮得不夠嚴謹,導致后來很長一段時間,Javascript寫出來的程式混亂不堪,如果Brendan Eich預見到,未來這種語言會成為互聯網第一大語言,全世界有幾百萬學習者,他會不會多花一點時間呢?
總的來說,他的設計思路是這樣的:
(1)借鑒C語言的基本語法;
(2)借鑒Java語言的資料型別和記憶體管理;
(3)借鑒Scheme語言,將函式提升到"第一等公民"(first class)的地位;
(4)借鑒Self語言,使用基于原型(prototype)的繼承機制,
所以,Javascript語言實際上是兩種語言風格的混合產物----(簡化的)函式式編程+(簡化的)面向物件編程, 這是由Brendan Eich(函式式編程)與網景公司(面向物件編程)共同決定的,
如果不是公司的決策,Brendan Eich絕不可能把Java作為Javascript設計的原型,作為設計者,他一點也不喜歡自己的這個作品:
"與其說我愛Javascript,不如說我恨它,它是C語言和Self語言yiyeqing的產物,十八世紀英國文學家約翰遜博士說得好:'它的優秀之 處并非原創,它的原創之處并不優秀,' (the part that is good is not original, and the part that is original is not good.)"

差不多以上就是JavaScript這門語言比較完整的介紹了,我覺得那個評論者的一句話很對:JS 是屎、可不代表用屎寫不出來牛嗶的作品來,這都拎不清的我勸你趁早轉行

最后

反正我是挺喜歡JavaScript這門語言的,但我還是感覺他還是有一點難,可能是因為我學的知識還不夠多吧
JavaScript借鑒了那馬多的語言的特性,我覺得已經很不錯,就這一點,我就覺得它是一門值得去學的語言,更何況經過
多年的發展,JavaScript從ES到ES再到ES,還有現如今流行的typescript,我總是相信JavaScript的道路會越走越好,就像那句話說的那樣:以后能用JavaScript實作的,都將會用JavaScript來實作,還有一點是,現在前端語言除了JavaScript來寫腳本,還能用其他什么語言嗎?這個問題在JavaScript發明之初就面對過,正因為沒有更好的,所以,網景公司才會開發一門新的語言,來寫前端腳本,在隨著現如今的JavaScript在不斷地發展著,相比JavaScript剛問世被罵,被排擠,被瀏覽器禁用,好的太多太多了,我也相信JavaScript會一直是最優秀的前端腳本語言,最近正在讀JavaScript的那本犀牛書,就是JavaScript權威指南,我覺得挺有意思,也正是因為這個,我才慢慢喜歡上了JavaScript,祝JavaScript越來越好,我耶會對JavaScript繼續進行學習,JavaScript現如今可是非常獲得一門一門語言呢,正如所說的那樣:發明者要是知道,JavaScript現在回這嗎流行,他應會謹慎考慮而不會用十天時間來完成對他的創作吧,畢竟JavaScript現在可是可以寫出十分厲害的東西呢,
哈哈哈,JavaScript,不管別人怎嗎罵你,你作為我進入計算機領域的第一門語言(除了HTML,css),我一定不會討厭你的,現在大二,我估計我大學剩下的兩年還是會跟你好好相處的,OK,書寫完畢,洗澡去!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/176006.html

標籤:JavaScript

上一篇:關于小程式云開發資料庫的增刪改查操作

下一篇:一個開源組件 bug 引發的分析

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more