脚本语言:脚本语言与编程语言(scripting languages list)

任何人都可以解释脚本语言和编程语言之间的区别吗?
你也可以为每个陈述一些例子。我已经用 Google 搜索了很多,但我总是从 Stack Overflow 找到最好的答案。

518

脚本语言是不需要显式编译步骤的编程语言。

例如,在正常情况下,你必须编译一个 C 程序才能运行它。但是在正常情况下,你不必在运行它之前编译一个 JavaScript 程序。所以 JavaScript 有时被称为“脚本”语言。

这条线越来越模糊,因为使用现代硬件和现代编译技术可以快速编译。例如,V8,Google Chrome 中的 JavaScript 引擎,也在浏览器之外使用,实际上是将 JavaScript 代码即时编译为机器代码,而不是解释它。(实际上,V8 是一个优化的两阶段编译器。)

还要注意,一种语言是否是一种“脚本”语言,可能与环境有关,而不是与语言有关。您没有理由不能编写 C 解释器并将其用作脚本语言(人们有)。您也没有理由不能将 JavaScript 编译为机器代码并将其存储在可执行文件中(人们有)。语言 Ruby 就是一个很好的例子:原始实现完全被解释(现在有“脚本”语言)。

“脚本”语言的一些示例(例如,传统上使用的语言没有明确的编译步骤):

Lua

JavaScript语言

VBScript 和 VBA

Perl

和一小部分传统与显式编译步骤一起使用:

C

C++

D

Java(但请注意,Java 被编译为字节码,然后在运行时进行解释和 / 或重新编译)

帕斯卡

...然后你有像 Python 这样的东西坐在两个阵营:Python 被广泛使用,没有编译步骤,但主要实现(CPython)通过编译为字节码,然后在 VM 中运行字节码来做到这一点,它可以将字节码写入文件(.pyc.pyo),以便在不重新编译的情况下使用。

这只是一个很少,如果你做一些研究,你可以找到更多。

113

要了解脚本语言和编程语言之间的区别,必须了解脚本语言诞生的原因。

最初,有一些编程语言是用来构建 excel,word,浏览器,游戏等程序的。这些程序是用 c 和 java 等语言构建的。随着时间的推移,这些程序需要一种用户创建新功能的方式,因此他们必须为他们的字节码提供一个接口,因此脚本语言诞生了。

脚本语言通常不是编译的,所以只要你写了一些有意义的东西就可以运行。因此,excel 可以使用 C++ 构建,但它公开了一种名为 VBA 的脚本语言,供用户定义功能。同样,浏览器可以使用 C++ / Java 构建,但它们公开了一种名为 javascript 的脚本语言 (与 Java 没有任何关系)。

脚本语言通常位于某些编程语言之后。脚本语言通常对计算机本机功能的访问较少,因为它们运行在原始编程语言的子集上。这里的一个例子是 Javascript 将无法访问您的文件系统。脚本语言通常比编程语言慢。

尽管脚本语言可能具有较少的访问权限并且速度较慢,但它们可能是非常强大的工具。脚本语言成功的一个因素是易于更新。您还记得在网络上使用 java 小程序的日子吗,这是运行编程语言(java)与运行脚本语言(javascript)的示例。当时,计算机的功能不如 Java 强大,并且 javascript 的加载速度不如 Java 小程序的成熟,因此它们在当今的场景中占主导地位

最后,脚本语言也被认为是编程语言(尽管有些人拒绝接受这一点)-我们应该在这里使用的术语是脚本语言与编译语言。

68

所有脚本语言都是编程语言。

语言不被归类为脚本或不-它完全取决于执行环境。

如果环境是一个被解释的环境,这通常被称为脚本环境。

20

差异变得越来越不重要。传统上,脚本语言扩展现有程序...我认为这是“脚本”的主要定义,它是指为现有实体编写一组指令来执行。但是,在脚本语言以专有和口语语法开始的地方,如今大多数流行的脚本语言都与 C 有关。

我认为“解释与编译”的区别实际上是扩展现有程序(带有内置解释器)的症状,而不是内在的差异。程序员和外行更关心的是,“程序员在做什么?”一个程序被解释而另一个程序被编译的事实在确定创作者的活动差异方面意义不大。您不会根据剧作家的戏剧是在舞台上更经常朗读还是在舞台上表演来判断他的戏剧,对吗?

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(90)
怎么删除页脚:删除 mailchimp中的页脚
上一篇
Ssr怎么用:SSR在 SvelteKit中解释
下一篇

相关推荐

  • python 列表copy A Guide to Making Copies of Your Lists

    示例示例Python 列表copy有两种方法:使用切片操作:…

    2023-01-28 09:40:48
    0 47 44
  • listen circle and match什么意思:Listening and Matching - Enhancing Y

    Listen circle and match是一种教学活动,用于帮助学生提高听力能力。教师会播放一段录音,学生们需要聆听并匹配出正确的单词或句子。…

    2023-02-21 04:57:58
    0 54 24
  • C4d删除多余的线:如何删除 c#winformsListView中的多余对象

    关于C4d删除多余的线的问题,在imageres.dll中经常遇到,我在 c # winforms 中遇到了 ListView 的一个小问题。我的应用程序的目的是能够在 Windows 中读取 dll 文件 (Post to read in Windows dll files),我做了两个最大的 Windows 库 (imageres.dll & amp;shell32.dll)。那是当我切换到 pifmgr.dll (包含 38 个图标) 时,它显示了 dll 文件中的最后一个图标,直到它达到…

    2023-11-12 10:22:43
    0 39 54
  • Linux添加白名单:XSS的黑名单 /白名单(alternative to blacklist)

    关于Linux添加白名单的问题,在alternative to blacklist中经常遇到,我需要实现 XSS 防御,我有麻烦。我读了这个 cheatsheethttps://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html有很多有价值的信息,但我很难实现这一点。我明白,你需要逃避不受信任的数据,我已经在我的应用程序中实现了它,但我也需要实现某种黑名单 / 白名单,对吗?什么是允许的数据和什么是不允许的。我试图使用这个代码在 java 端…

    2023-11-21 04:10:24
    0 47 72
  • Css初始化代码:ArrayList初始化等效于数组初始化

    关于Css初始化代码的问题,在java list literal中经常遇到,我知道您可以在实例化期间初始化数组,如下所示:…

    2023-11-12 06:11:50
    0 82 12
  • 微博怎么设置抽奖:如何打开新浪微博用户档案 (weibo hot search list)

    关于微博怎么设置抽奖的问题,在weibo hot search list中经常遇到,我们可以通过以下方式打开 Twitter 应用程序并直接访问 Twitter 用户个人资料:…

    2023-10-15 08:06:41
    0 29 59
  • 股大师软件:将道琼斯30股(所有30股)下载到R(list of dow jones stock)

    关于股大师软件的问题,在list of dow jones stock中经常遇到,我正在尝试从雅虎财经下载道琼斯指数中所有 30 股股票的数据。我也尝试过多伦多证券交易所(tsx),但没有办法,我收到了来自 R 的相同消息。请有人可以帮助我使用代码并同时获得所有股票。如果我手工获得所有 30(dow Jones 30)或 Tsx(60 股),那就不好了。这些是我的代码:…

    2022-11-23 08:42:44
    0 96 74
  • docker游戏服务器:如何使用Docker搭建高性能的游戏服务器

    Docker游戏服务器是一种将游戏服务器部署到容器中的方式,它可以帮助游戏开发者快速、轻松地部署游戏服务器,并且可以更轻松地扩展游戏服务器的容量。…

    2023-04-27 09:55:33
    0 81 37

发表评论

登录 后才能评论

评论列表(39条)