JavaScript 很糟糕吗?

更新日期: 2019-10-14阅读: 2k标签: 语言

虽然 JavaScript 是目前最流行的技术,但它确实也是一种设计糟糕的语言。这就是现实。只有承认现实,我们才能开始解决这个问题。

根据 Stack Overflow 2018 年的调查 ,JS 是当前最流行的一项技术。我们这里有一个 宝贵视频 。JavaScript 的作者说,JS 的现状如同 BASIC 之于 C++ 一样。本文不是关于 JS 的技术特性的,而是关于我们的 多元无知 如何使玩具语言先成为事实上的浏览器语言,然后延伸到服务端,现在被用于控制台仿真和数据科学。

正如标题所示,我认为 JS 的流行是一件糟糕的事情。首先,JS 是一种非常糟糕的语言。 Wat 谈话做了大量工作来解释具体问题。各位可以参考以下优质资源来了解更多详情。当你读完所有资料,就会发现所有这些糟糕设计都明显源于 JavaScript 的历史 。

为了保护 JavaScript 的想法不被竞争提案打败,该公司需要一个原型。1995 年 5 月,Eich 在 10 天内写了这样一个原型。

这就是问题所在,这就是为什么我们不能拥有美好事物的原因。当然,我并不认为这个原型没有被重写过上百遍,我指的是这个方法,即现有实践并不重要,“快速实现,打破常规”。普通的编程语言都有着多年的设计历史记录,通常 10 年左右。wiki 上的历史副标题实际上都措辞相同,只是名称和日期不同而已。设计一种语言需要受过良好教育的专家进行大量规划和决策过程。JS 的最初设计以及它的后续迭代都是由商业决策驱动的,为了占领浏览器市场。

这有点儿像作秀。

问题是,现在最流行的编程语言不能正确执行基本的代数运算,而许多人对此习以为常。受欢迎程度被错误地认为是正常的。很多新加入这个行业的人认为这没关系,很正常。

这有些直接后果。

连 Is-even 软件包都有依赖关系和怪异的发布历史!一般项目的 node_modules 都有成千上万的依赖。

让我们来稍微谈谈 Axios 。

Axios 是一个 HTTP 请求库。截至目前,Axios 在 GitHub 上拥有 5007 个 fork 和 61,660 个 star。仅在 GitHub 上就有差不多 150 万个项目在使用它。

假设你想发起一个请求,而如果请求失败,打印用于诊断的错误日志。那么,下面是开发者为你提供的官方样本 :

axios.get('/user/12345')
.catch(function (error) {
if(error.response) {
// The request was made and the server responded with a status code
// that falls out of the range of 2xx
console.log(error.response.data);
console.log(error.response.status);
console.log(error.response.headers);
}elseif(error.request) {
// The request was made but no response was received
// `error.request` is an instance of XMLHttpRequest in the browser and an instance of
// http.ClientRequest in node.js
console.log(error.request);
}else{
// Something happened in setting up the request that triggered an Error
console.log('Error',error.message);
}
console.log(error.config);
});

我直到今天都不能相信自己的眼睛。如果我曾在第三世界的无名大学提交过像这样的课程作业,我会得到巨大的羞辱。现在是 2019 年,显然设计模式和干净的代码仍是必备知识。

自从 2017 年,这个 bug 就已经打开并被标记为一个众所周知的 bug。显然,编写嵌套的 if 花费了 3 年。我将在其他语言最流行的 HTTP 请求库中发现同样糟糕的打开了 3 年的 bug。祝你好运。撇开 Axios 的话题,让我们继续聊吧。

灾难就在这里。 搞砸 map 函数对于语言设计者来说就像获得奥林匹克金牌一样。奇怪的是,人们说“JS 是奇怪的”反而是少数,有相当多的人说他们从这篇文章中学到了一些东西。老实说,我不知道他们指的是什么。检查一种语言中的每个函数是否与其它 30 多种主流编程语言是否一致?坦率地说,.map(f) 与.map(x => f(x)) 有什么确切的不同,是有用的知识吗?这都是“黑魔法”,不是 预期的行为 。

在极简主义中,作为一个维护者轻而易举。但对于 JS 世界来说,并非如此。无论是否有意义,新版本总是层出不穷。3 年前的版本从零开始重建并不比升级容易。我使用过的任何 JS 项目都至少会有几个警告说它的 babel 版本将会过时,很快会被弃用。Babel 有一个 捐赠页面 ,上面写着他们的年度预算是 308,084 美元。作为一个社区,我认为这可以让开发者知道什么是向后兼容性并尊重它的用户群体。

OpenCollective 是一个很有趣的浏览工具,但是太令人郁闷了。这个页面 显示 ,webpack 的年度预算是惊人的一百万美元。那些认为将可执行代码放到配置文件或 环境变量 中需要重新设计的天才们,比这个称为 OpenSSL 的 小项目 获得了 10 倍还多的资金。如果 OpenSSL 被破解了,你的银行、互联网供应商、云服务……都要崩溃。如果 Webpack 崩了,你可以立即得到 gulp、grunt、browserify 或任何其它发烧友的玩具,而且那将不过是一键式迁移。想象一下世界从 OpenSSL 迁移,想象一下编写 OpenSSL 的功能克隆,或者数百个现代 IT 基础设施的基础项目,由没有通过任何赞助页面之类的渠道捐赠的人维护。

我听起来像是一个在互联网向志愿者索要东西的人,这是一件不道德的事情。事实上,我要表明的是,作为从业者,如果基于运行在浏览器上和支持 emoji 这些优点就接受低于标准的方案,贬低了那些编写可靠的良好设计的软件的人的努力。作为兴趣项目和原型当然可以,它也就“还行”,正如 php“还行”一样。有时,它确实好使。我要指出的问题是广泛的推理模式——JS 是如此流行,那么它一定和其它语言和生态系统一样优秀。这不符合逻辑。

JavaScript 目前是市场上最被需要的技术。其它语言没有这么多炒作,人们四处奔走,设计师设计 logo、T 恤和 3d 打印的吉祥物,通过财富 100 强公司和小额捐赠服务募集资金。所有这些,都必须有价值反馈。到目前为止,反馈的价值是负的,这让整个行业陷入低谷。JS 设计委员会在 20 年时间内似乎对于修复基本的语义不感兴趣。我不知道他们在做什么,但很明显,它们的首要任务并没有放在提升编程体验上,反而创造了一种“随用随想驱动开发”的文化,劫持了整个 JS 生态系统,也劫持了整个行业。

JavaScript 确实很流行,但也确实很糟糕。这就是现实。只有当我们承认现实,才能开始修复这个问题。

总之——JavaScript 很糟糕。

链接: https://www.fly63.com/article/detial/6431

vue.js实现多语言_vue.js国际化 vue-i18n插件的使用

在项目开发中遇到需要多语言的支持,在Vue项目中有对应的组件vue-i18n,而且对项目的代码修改不大.这篇文章讲解vue-i18n的安装和使用,语言包的生成 & 替换项目中原有的静态文本

web网页多语言的实现方案_前端实现多语言切换

需要在web中实现多语言的切换,当用户语言切换完成后下次重新打开网页,也是上次设置的语言进行显示。在用户点击切换语言后,把选择的语言版本保存在cookie中;定义语言的标识+内容的json字符串

JavaScript中的黑话

因为球是圆的,所以不论发生什么都有可能,对这点我是深信不疑的,但最近我总是在怀疑,JavaScript也是圆的!本文带你细数JavaScript的黑话,因为这一切是多么的有趣,又是多么的无意义,就如这世界一般,很多事情只有当你了解过,才能做出错误的选择。

10个编译为JavaScript的语言

你不用写一行Javascript或者考虑这种语言的局限,就能生产在浏览器能运行的代码。这篇文章包括了十种有趣的语言能够编译为Javascript,在浏览器或者Node.js中被执行

这三个新特性可能改变JavaScript未来

你想不想知道下一波令人兴奋无比的 JavaScript 特性?你甚至都不知道自己需要这些特性。现在,我要向你展示三个可能会改变你编写 JavaScript 代码方式的提案。这些提案中有很多方面仍未最终确定。

7种主流编程语言的优点和缺点对比

7种主流编程语言:Python需要拿着游标卡尺学习的语言 ,C/C++大多数中国程序员的第一个语言 ,Java最长寿的语言 ,C#自称不是 Java 的 Java 语言 ,JavaScript 不是 Java 语言的语言 ,SQL数据库离不开的语言 ,PHP 世界上最好的语言

JavaScript 的现状_以及对 JavaScript 的批评有哪些呢?

JavaScript 已经成为了一门一流的编程语言,使用 JavaScript 的程序员们正变得无所不能。质疑 JavaScript 是否是一种「真正的」编程语言的时代已经过去,现在的问题是,你有没有准备好投入到这门语言中,进行真正的学习。

学习编程开发_如何学习并掌握一门计算机编程语言

如果你有兴趣编写计算机程序,移动APP,网站,游戏或者任何软件,你应该学习编程。编程语言撰写的代码构建了计算机的程序。无论对于何种计算机编程语言,其核心编程思想都是一样的

前端国际化的另类方式

一个项目发展到一定的环境或者一开始就是为多国打造的,就需要考虑国际化了。简单来说,就是一套页面,多套语言。主要探讨了两种完全不同的国际化方式,前一种主流,后一种完全属于另类,但还是有用武之地的。如果你的页面不太复杂,完全可以采取这种方式。

编程语言排行榜

对于程序员来说,选择一门适合自己,适合职业发展的编程语言也是同等重要。各大编程语言的受欢迎程度、学习的人群数量,以及由于人工智能的兴起,最热门的编程语言排行榜也发生了变化。让我们来看看。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!