神馬?要退役 JavaScript ?!誰人出此狂言?!

語言: CN / TW / HK

theme: orange

我報名參加金石計劃1期挑戰——瓜分10萬獎池,這是我的第1篇文章,點擊查看活動詳情


衝浪時無意看到一篇文章 《douglas-crockford-interview》,這是一篇採訪記錄。

上來第一句就是:

Douglas Crockford: "The best thing we can do today to JavaScript is to retire it."

道格拉斯:我們今天能對 JavaScript 做的最好的事就是將它退役。

我nm,你誰呀,我大 JS 是你説退役就退役的?!

fdfbdd6552d5416787036caf56a1e5a6 (1).gif

查一下 Douglas Crockford 這老哥是誰?

  • 道格拉斯·克羅克福特(英語:Douglas Crockford)是美國程式設計師和企業家,知名於對網頁程式語言JavaScript推進和改良;且為輕量級資料交換格式「JSON」的建立者。 他還是眾多JavaScript語言開發工具的創造者,例如JSLint和JSMin。近段時間,他在PayPal擔任JavaScript語言進階顧問,當然 他也是JavaScript、JSON以及web技術的佈道者,在這些方面出版發行了很多知名的書籍及演講。 —— wikipedia

image.png

WC,牛蛙牛蛙,JSON 之父,JavaScript 推進、改良、佈道者,1975 年就在大學學習 Fortran 編程語言了,妥妥的 OOOOOOGGGGGG大佬。

image.png

那之前一直重倉 JavaScript,為何現在一反常態,唱衰 JavaScript 呢?

看看他具體怎麼説的?

Evrone: In your opinion, what expected changes in JavaScript are going to be the most important?

Douglas: The best thing we can do today to JavaScript is to retire it. Twenty years ago, I was one of the few advocates for JavaScript. Its cobbling together of nested functions and dynamic objects was brilliant. I spent a decade trying to correct its flaws. I had a minor success with ES5. But since then, there has been strong interest in further bloating the language instead of making it better. So JavaScript, like the other dinosaur languages, has become a barrier to progress. We should be focused on the next language, which should look more like E than like JavaScript.

主持人:在您看來,JavaScript 的哪些預期變化是您最看重的?

道格拉斯:我們現在最好就是退役 JavaScript。20 年前,我是 JavaScript 為數不多的擁護者,函數嵌套以及動態對象的設計很棒。我花了十年時間試圖去修復它的缺陷。後來在 ES5 上取得了小小的成功。但是自從那以後,人們更側重於擴大使用 JavaScript 的規模,而不是讓它變得更好。所以,JavaScript 如今像一個恐龍語言,已經成為了發展的阻礙。我們應該更多關注下一種編程語言,比如 E 語言這種。

本瓜:噢?難道是來推 E 語言的?踩一捧一、經典營銷路數?

話説什麼是 E 語言?(注意:不是易語言,別混淆了)

  • E 語言是1997年由Mark S. Miller、Dan Bornstein、Electric Communities創建的用於 安全分佈式計算的面向對象程序設計語言E語言主要源自於安全分佈式編程中Java的並行語言Joule 和Original-E,後者是Java的一組擴展。E將基於消息的計算與類Java語法相結合。基於事件循環和Promise的併發模型確保永遠不會發生死鎖。

E 的語法與 Java 最為相似,儘管它也與 Python 和 Pascal 有些相似。變量都是動態類型的,並且有詞法作用域。然而,與 Java 或 Python 不同的是,E 完全由表達式組成。

舉個例子:遞歸 def factorial(n :int) :int { if (n == 1) { return 1 } else if (n > 0) { return n * factorial(n-1) } else { throw("invalid argument to factorial: "+n) } } 其中第一個:int 確保函數體只需要處理整數參數,第二個 :int 參數確保函數將有返回值。能夠事先看到函數的信息泄漏,有利於安全審計。

E 程序的典型例子是挖礦場景,一個簡單的電子貨幣系統,只需幾行E代碼就能實現。

貼下代碼感受一二:

def makeMint(name) :any { def [sealer, unsealer] := makeBrandPair(name) def mint { to makePurse(var balance :(int >= 0)) :any { def decr(amount :(0..balance)) :void { balance -= amount } def purse { to getBalance() :int { return balance } to sprout() :any { return mint.makePurse(0) } to getDecr() :any { return sealer.seal(decr) } to deposit(amount :int, src) :void { unsealer.unseal(src.getDecr())(amount) balance += amount } } return purse } } return mint } 其中用 def 關鍵字定義對象,to 關鍵字開始每個方法,:(int >= 0)) 或 :(0..balance)) 表示對輸入的約束。

感官上來説,本瓜覺得它對輸入、輸出都做了一個界定,這樣更利於審查安全性。從這個角度看它的確比 JavaScript 更嚴格。這裏的嚴格並不代表繁重,輕量的東西也可以是嚴格的。JavaScript 設計之初就是輕量的腳本語言,但隨着 web 繁榮壯大,JavaScript 似乎滿足不了了,於是出現了各類框架、或者 TypeScript,但是即使是強如 TypeScript,還是要被編譯成 JavaScript。這或許真的是一種困局~

image.png


好吧~ 也許大佬真的能看的更遠更遠,以後究竟是 TypeScript 還是 E 語言,還是其它技術的革命,我們可以作為一個觀察者,拭目以待吧~

有興趣的工友可以繼續看看 E 語言、或者 Joule 語言 相關內容~

OK,以上便是本篇分享。點贊關注評論,為好文助力👍

我是掘金安東尼 🤠 100 萬人氣前端技術博主 💥 INFP 寫作人格堅持 1000 日更文 ✍ 關注我,安東尼陪你一起度過漫長編程歲月 🌏