受到这个问题的启发。
我经常看到人们将 JavaScript 称为低级语言,尤其是在 GWT 和类似工具包的用户中。
我的问题是:为什么?如果您使用其中一种工具包,那么您将摆脱一些使 JavaScript 非常适合编程的特性:作为对象的函数、动态类型等。尤其是与流行的框架之一(如 jQuery 或 Prototype)结合使用时.
这就像调用 C++ 低级,因为标准库比 Java API 小。我不是 C++ 程序员,但我非常怀疑每个 C++ 程序员都会编写自己的 GUI 和网络库。
受到这个问题的启发。
我经常看到人们将 JavaScript 称为低级语言,尤其是在 GWT 和类似工具包的用户中。
我的问题是:为什么?如果您使用其中一种工具包,那么您将摆脱一些使 JavaScript 非常适合编程的特性:作为对象的函数、动态类型等。尤其是与流行的框架之一(如 jQuery 或 Prototype)结合使用时.
这就像调用 C++ 低级,因为标准库比 Java API 小。我不是 C++ 程序员,但我非常怀疑每个 C++ 程序员都会编写自己的 GUI 和网络库。
考虑到它的灵活性(作为对象的功能等),它是一种高级语言
但是任何通常被编译成的东西都可以被认为是低级语言,因为它是编译的目标,现在有许多语言可以编译成 JS,因为它作为浏览器的 DOM 控制语言的独特作用。
在可以编译为 JS 的语言(或它们的子集)中:
用“它不是 X”来回答“为什么有时称为 X……”的问题完全是在绕开这个问题,不是吗?
对许多人来说,“低级”和“高级”是灵活的抽象概念,在使用不同的系统时应用不同。对于那些不完全沉迷于过去的人(对于某些人来说,没有现代低级语言之类的东西),一种语言的高级或低级通常是指它与目标机器的接近程度是。这包括虚拟机,其中浏览器现在已经很流行了。对不起所有在基础硬件上渴望 asm 的人。
当您将浏览器视为虚拟机时,javascript 与您所获得的(假)硬件一样接近。这就是许多将 javascript 称为“低级”的人的观点。我认为这是一个毫无意义的区分,人们不应该纠结于什么是低和什么是高。
很多人这么说是因为 JavaScript 中提供的对象和结构非常简单。要开发任何类型的真正功能,您必须使用外部库。低级是一个不好的说法,因为它已经在计算机科学中具有意义。更好的说法可能是它没有内置库。
将此与 Java 进行比较,Java 中的实际语言实际上并没有做很多事情。尝试在没有 ArrayList 的情况下创建数组,或者在没有 IO 库的情况下访问文件系统。大多数语言不仅仅是基础,它们还带有这种额外的功能。
使用 JavaScript,我们获得的唯一真正力量来自浏览器引入的 API,而不是语言的一部分。诸如 DOM 操作和 Ajax 之类的东西是由浏览器提供的。
总结所有这些可能会更好,说使用像 Java 这样的语言,您可以开始做一些严肃的工作,而无需下载第三方库,但是使用 JavaScript,您要么必须下载库,要么必须编写库你自己。
这里的“低”与“第一次世界大战中的伤亡人数很少”和“减脂冰淇淋热量低”具有相同的含义。当有一个明显的比较点时,这是有道理的,但脱离上下文,这简直是荒谬的。
我不认为 javascript 是一种低级语言。它提供了许多功能和用户体验助推器。也许其他人可能只是因为用户可以在他们的浏览器选项中关闭它而将其视为这样,但它是一种非常强大的语言,几乎可以在几乎所有类型的浏览器上运行网络......
不是,它可能是你在普通浏览器编程中可以得到的低级,但它与 Scheme 或 Python 等函数式语言相当。
我认为 Javascript 的最大缺陷是缺少名称空间或包装以及没有线程
与 GWT 和类似工具包相比,它是低级的,但在更大的方案中它不是低级语言。它提供的特性非常高级:闭包、动态类型和原型继承只是其高级特性的几个例子。
许多喜欢编写 java 来生成 javascript 然后编写 javascript 的人认为它是低级的(即他们不公平或不公平地不喜欢它)。现在很多人抱怨 java,但是尽管缺乏静态类型检查,大多数人可能会认为 ruby 和 python 在大多数情况下更容易编写(java 是一种相当简单的静态语言 - 如果没有大型构建,很难设计好-in 功能集然后是一种简单的动态语言)。
与java相比,很少有人会称python或ruby为低级,如果人们被迫以python或ruby vm为目标,很难想象java到python/ruby的编译器会像gwt一样流行。
最后,javascript 有一个图像问题(人们有时认为语言变得越来越低级,反之亦然)。