神马?要退役 JavaScript ?!谁人出此狂言?!
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 是你说退役就退役的?!
查一下 Douglas Crockford 这老哥是谁?
- 道格拉斯·克罗克福特(英语:Douglas Crockford)是美国程式设计师和企业家,知名于对网页程式语言JavaScript推进和改良;且为轻量级资料交换格式「JSON」的建立者。 他还是众多JavaScript语言开发工具的创造者,例如JSLint和JSMin。近段时间,他在PayPal担任JavaScript语言进阶顾问,当然 他也是JavaScript、JSON以及web技术的布道者,在这些方面出版发行了很多知名的书籍及演讲。 —— wikipedia
WC,牛蛙牛蛙,JSON 之父,JavaScript 推进、改良、布道者,1975 年就在大学学习 Fortran 编程语言了,妥妥的 OOOOOOGGGGGG大佬。
那之前一直重仓 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。这或许真的是一种困局~
好吧~ 也许大佬真的能看的更远更远,以后究竟是 TypeScript 还是 E 语言,还是其它技术的革命,我们可以作为一个观察者,拭目以待吧~
有兴趣的工友可以继续看看 E 语言、或者 Joule 语言 相关内容~
OK,以上便是本篇分享。点赞关注评论,为好文助力👍
我是掘金安东尼 🤠 100 万人气前端技术博主 💥 INFP 写作人格坚持 1000 日更文 ✍ 关注我,安东尼陪你一起度过漫长编程岁月 🌏
- ChatGPT 不过如此,Kosmos-1 更胜一筹?微软这波又赢了
- “ChatGPT 们” 所需算力真是“贵滴夸张”!
- 国内有哪些对标 ChatGPT 的大语言模型? 5 大竞品
- 常用!提前 reject promise 的 2 种场景,收藏等于学会
- 编程开发新朋友 —— ChatGPT 和 NotionAI 实战
- 为什么我更推荐 Notion AI 胜于 ChatGPT ?
- 推荐 5 个你大概率没见过的免费 API ,一键获取数据!
- ✨从纯函数讲起,一窥最深刻的函子 Monad
- 神马?要退役 JavaScript ?!谁人出此狂言?!
- 写出干净的 JavaScript 5 个小技巧
- 想要白嫖正则是吧?这一次给你个够!
- 浅聊缓存函数
- JavaScript 中如何取消请求
- 知其然,而知其所以然,JS 对象创建与继承【汇总梳理】
- 10 个 Reduce 常用“奇技淫巧”
- 万字年中总结,共勉
- 4 个 JavaScript 最基础的问题 —— Eric Elliott
- 日拱算法:搜索二维矩阵 II
- 日拱算法:多数元素
- 日拱算法:只出现一次的数字