关于JavaScript的三大谎言

哈Ha! 我向您呈现我对Richard Kenneth的文章关于JavaScript的三大谎言翻译。 这篇文章写于2016年5月,但我认为它的相关性并没有消失。 我是一个新手程序员,因此可能会出现“理解”方面的错误。 所以...

关于JavaScript的三大谎言


谎言有两种类型:我们告诉别人的谎言和我们告诉自己的谎言为其辩解
JavaScript爱好者一次又一次告诉我三大谎言。

谎言1


JavaScript是世界上最容易被误解的编程语言。
人们不知道如何正确使用它,因此他们不断陷入各种麻烦。 这是一个谎言,因为在JavaScript中没有什么令人费解的。

这是一种普通的命令式/过程式编程语言,具有少量的编程功能(FP)和有争议的“面向对象”功能,称为对象原型。 那有什么特别之处呢?

基本上,使用JavaScript时出现的所有问题仅是使用它的人的错:他们无知,懒惰,习惯于用Java或Python进行编程,他们不知道什么? 功能编程?

那么,为什么人们在使用其他FP语言时不会出错,例如C#,Clojure,Dart,Elm,Erlang,F#,Julia,Haskell,Scala和Scheme ? 函数式编程是IT行业中一个相当容易理解的范例。 那么,什么使JavaScript在这方面特别有问题呢?

也许人们不了解对象的原型。 在这种情况下,请阅读“什么不是JavaScript的对象原型 当然,原型不适合软件开发。 它们不是编程抽象的特别高级。 原型大部分是可区分的哈希表,级别很低,这就是我所谓的“构建块”,用于真正的面向对象的编程(基于类的OOP)。 人们可能不了解如何使用对象的原型,但是为什么需要学习如何“砌砖”? 这不值得您付出努力。

是的,我明白了。 原型非常灵活。 它们不具备经典AKI所具有的所有“仪式”。 从这个意义上说,它们很有趣。 但是对于大型应用程序,它们不能很好地扩展,因此人们正在重返课堂。 如果原型是一种有用的技术,那么您会发现它适用于所有地方,因为原型可以用基于类的语言建模,就像类可以用基于原型的语言建模一样。 这是JavaScript程序员无法弄清楚的。

谎言2


异步编程是JavaScript的关键优势。 好吧,让我们首先了解为什么异步编程甚至存在于JavaScript中

为了开发图形用户界面(GUI),无论是在WindowsX Window还是OS X的Cocoa或Web浏览器中,事件循环都是必需的(通常如此) 。 它们全部异步处理用户输入事件。 这是否意味着异步编程也是C ++Objective-C的强大功能? 事件循环(带有异步库)也已在PythonPerlTcl中使用 。 然后,我想它们都具有异步编程的功能? (当人们使用不存在的词“ 异步性 ”( 异步是形容词,描述不及时协调的对象或事件)时,我会大笑。

JavaScript还使用事件循环和异步处理来支持Web浏览器用户界面。 那使他成为一门好语言吗?

现在,这种计算模型已经使Node.js在服务器端变得非常流行,用于非GUI开发,即用于服务器端。 实现高性能并发。 显然, Node对许多应用程序很有用,但它不太可能接管并发世界。 最近的事件表明了Node.js的局限性 是的,这应该说服所有人只使用JavaScript。
事件的循环被描述为“穷人的平行性。
Node的支持者喜欢一遍又一遍地展示大型企业(PayPal,Netflix,沃尔玛,Uber等)的相同示例。 每个Node.js示例可以在答案中进行比较吗? -数百个Java示例? Java已经证明了自己无数次用于企业开发的经验。 这就是为什么它是行业标准。 Node.js尚未证明自己。 我们真的不知道有多少公司尝试使用Node.js并最终放弃了它。 我们不知道Node.js项目的真正成功率是多少。 对于企业而言,选择Node.js仍然是一个风险。
我有信心地预测,一旦Go扩展了其框架和软件包生态系统,它将在将来取代Node。 它的轨迹是不可否认的。
在大多数并发方案中, GoErlang / Elixir等语言可以轻松胜过Node 。 从长远来看,即使事件/异步循环模型也不可持续。 如果我们的目标是实现最佳性能,那么我们应该对使用真正的并行编程语言感兴趣。 为什么要妥协JavaScript

谎言#3


JavaScript是世界上最流行的编程语言。

真的是这样吗 默认情况下广泛使用的语言与广泛使用的语言之间存在巨大差异
请记住,在Internet以外的任何其他领域,开发人员都不是一种语言的人质。 我们忽略这一事实,后果自负。

JavaScript是Web浏览器的唯一本地语言,因此这是编写浏览器应用程序的最直接方法。 但是,大多数开发人员都鄙视这种语言,如果他们确实有更好的选择,他们会做到。 如果您在Internet(论坛,社交网络,网站等)上搜索人们对JavaScript的意见,则可以自己进行验证。 除了PHP以外,其他任何语言都找不到很多关于JavaScriptWATWTF我们确定的是,网络非常流行,而不是JavaScript

大多数主要语言排名索引并不表明JavaScript是最流行的编程语言。 甚至没有第二,第三或第四位置。 根据IEEE Spectrum (American Journal),这是#8位, PYPL#5TIOBE#7CodeEval#6Redmonk (一家分析公司)使用Github统计数据,该统计数据显示出非常高的JavaScript数量,正是因为用任何语言编写的Web应用程序都必须至少具有一些JavaScript才能在浏览器中工作; 没有选择。 因此, Redmonk无法给出JavaScript异常的客观评价。 否则,最受欢迎的语言是Java

例如,来自StackOverflow的用户轮询在选择中也包含类似的偏差。 当我们别无选择只能独自使用JavaScript时,怎么能说JavaScript是一种流行的语言呢? (幸运的是,我们可以使用翻译器)。

我们应该记住,对于其他领域(例如,网络服务器,游戏和图形,移动设备,台式机等)。 编程语言的选择多种多样。 Web应用程序非常独特。 (至少直到最终发布WebAssembly为止。)

是的


让我非常清楚: JavaScript不是用于软件开发的良好编程语言JavaScript被设计为一种轻量级的,用于Web浏览器的新鲜脚本语言。 这样一来,它就变得灵活而又宽容,打字也很弱。 它甚至没有正确的整数类型或正确的数组类型。 这是什么语言!?

弱打字,这是开发软件所用的编程语言的致命弱点。 尽管这使编写用于Web浏览器的快速简单脚本变得非常容易,但是当您编写需要安全性和可靠性的大型应用程序时,它也不利于您。 这就是为什么大多数主要语言通常都是强类型的(不要与静态类型的语言混淆)的原因。 这非常非常重要!

典型的弱化和由此产生的强制性表现出完全缺乏语言纪律。 这解释了大多数WATWTF列表

由JavaScript生成。 (此外,作者提供了指向在线资源的链接,其中提供了JavaScript疣的列表)。

Source: https://habr.com/ru/post/zh-CN445170/


All Articles