我报名参与金石计划1期挑战——瓜分10万奖池,这是我的第1篇文章,点击检查活动概况


冲浪时无意看到一篇文章 《douglas-crockford-interview》,这是一篇采访记录。

上来第一句便是:

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

道格拉斯:咱们今日能对 JavaScript 做的最好的事便是将它退役。

我nm,你谁呀,我大 JS 是你说退役就退役的?!

为啥 JSON 之父要主张:退役 JavaScript

查一下 Douglas Crockford 这老哥是谁?

  • 道格拉斯克罗克福特(英语:Douglas Crockford)是美国程式规划师和企业家,闻名于对网页程式言语JavaScript推动和改良;且为轻量级资料交换格局「JSON」的建立者。 他仍是众多JavaScript言语开发工具的创造者,例如JSLint和JSMin。近段时间,他在PayPal担任JavaScript言语进阶参谋,当然 他也是JavaScript、JSON以及web技能的布道者,在这些方面出版发行了许多闻名的书籍及演讲。 —— wikipedia

为啥 JSON 之父要主张:退役 JavaScript

WC,牛蛙牛蛙,JSON 之父,JavaScript 推动、改良、布道者,1975 年就在大学学习 Fortran 编程言语了,妥妥的 OOOOOOGGGGGG大佬。

为啥 JSON 之父要主张:退役 JavaScript

那之前一直重仓 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。这或许真的是一种困局~

为啥 JSON 之父要主张:退役 JavaScript


好吧~ 或许大佬真的能看的更远更远,以后究竟是 TypeScript 仍是 E 言语,仍是其它技能的革命,咱们能够作为一个观察者,拭目而待吧~

有兴趣的工友能够继续看看 E 言语、或许 Joule 言语 相关内容~

  • erights.org

  • Joule

OK,以上便是本篇共享。点赞重视谈论,为好文助力

我是安东尼 100 万人气前端技能博主 INFP 写作品格坚持 1000 日更文 ✍ 重视我,安东尼陪你一同度过漫长编程年月