脚本语言与编程语言
任何人都可以解释脚本语言和编程语言之间的区别吗?
你也可以陈述每个例子。 我google了很多,但我总是从堆栈溢出find最好的答案。
脚本语言是编程语言,不需要明确的编译步骤。
例如,在正常情况下,您必须先编译一个C程序,然后才能运行它。 但在正常情况下,在运行之前不必编译JavaScript程序。 所以JavaScript有时被称为“脚本”语言。
这条线越来越模糊,因为现代硬件和现代编译技术的编译速度如此之快。 例如,Google Chrome浏览器中的JavaScript引擎V8也在浏览器外部使用了很多,实际上是将JavaScript代码实时编译为机器代码,而不是解释它。 (事实上,V8是一个优化的两阶段编译器。)
还要注意的是,一种语言是否是一种“脚本”语言,可能比语言更多的是环境。 没有理由不能写一个C解释器,并将其用作脚本语言(以及人们)。 也没有理由不能编译JavaScript到机器代码,并将其存储在可执行文件(和人)。 Ruby语言就是一个很好的例子:原来的实现是完全解释的(一种“脚本”语言),但现在有了多个编译器。
“脚本”语言的一些例子(例如传统上没有显式编译步骤的语言):
- LUA
- JavaScript的
- VBScript和VBA
- Perl的
传统上用一个明确的编译步骤的一小部分:
- C
- C ++
- d
- Java (但是请注意,Java被编译为字节码,然后在运行时解释和/或重新编译)
- 帕斯卡尔
…然后你有像Python一样的东西在这两个阵营:Python被广泛使用没有编译步骤,但主要的实现(CPython)通过编译到字节码,然后运行字节码在一个虚拟机,它可以将该字节码写入文件( .pyc
, .pyo
)以供使用,而无需重新编译。
这只是一个很less的,如果你做一些研究,你可以find更多。
为了理解脚本语言和编程语言之间的区别,人们必须理解为什么脚本语言诞生了。
最初,编写程序语言是为了编写像Excel,Word,浏览器,游戏等程序。这些程序是用c和java等语言构build的。 加class时,这些程序需要用户创build新function的方式,所以他们必须提供一个接口到他们的字节码,因此脚本语言诞生了。
一个脚本语言通常不会被编译,所以只要你写了一些有意义的东西就可以运行。 因此,Excel可以使用C ++构build,但是它暴露了一种名为VBA的脚本语言,用户可以定义function。 同样,浏览器也可以用C ++ / Java语言编写,但是它们公开了一种叫做javascript的脚本语言(与Java无关)。 游戏通常使用C ++构build,但为用户提供了一种名为Lua的语言来定义自定义function。
脚本语言通常位于某种编程语言之后。 由于脚本语言运行在原始编程语言的一个子集上,因此脚本语言对计算机原生能力的访问通常较less。 这里的一个例子是Javascript将无法访问您的文件系统。 脚本语言通常比编程语言慢。
虽然脚本语言可能会有较less的访问和较慢,他们可以是非常强大的工具。 脚本语言成功的一个原因是易于更新。 你还记得在networking上的Java小程序的日子,这是一个运行编程语言(Java)与运行脚本语言(JavaScript)的例子。 当时,电脑并没有那么强大,JavaScript还没有成熟,所以Java小程序主导了这个场景。 但是Java applet很烦人,他们要求用户sorting并编译语言。 快进到今天,Java小程序几乎已经灭绝,Javascript主导了这个场景。 由于大多数浏览器组件已经安装,所以Javascript加载速度非常快。
最后,脚本语言也被认为是编程语言(尽pipe有些人拒绝接受),我们应该使用的术语是脚本语言和编译语言。
所有的脚本语言都是编程语言。
语言不被归类为脚本 – 完全取决于执行环境。
如果环境是被解释的环境,这通常被称为脚本环境。
差异正变得越来越不重要。 传统上,脚本语言扩展现有的程序…我认为这是“脚本”的主要定义是指它为现有的实体写一套指令执行。 然而,在脚本语言以专有和口语语法开始的地方,现在大多数stream行的语言都与C有一些关系。
我认为“解读还是编译”的区别实际上是扩展现有程序(具有内置解释器)的一个症状,而不是内在的差异。 程序员和外行更关心的是“程序员在做什么?” 一个程序被解释而另一个被编译的事实对于确定创build者在活动上的差异几乎没有意义。 你不是判断一个剧作家,他的戏剧是更普遍朗读还是舞台表演,是吗?
编程语言:编译成机器码并在底层操作系统的硬件上运行。
脚本语言:是编程语言的非结构化子集。 这是一般的解释。 它基本上“脚本”其他事情做东西。 主要重点不在于构build自己的应用程序,而是让现有的应用程序以您想要的方式行事,例如浏览器,TCL等的JavaScript,
***但是有一种情况,一个编程语言被转换为解释器,而另一个则使用一个C解释器,你可以在其中'C'脚本。 通常编写脚本是为了控制应用程序行为,因为编程语言用于构build应用程序。 但要注意的是,划分日益模糊,作为Python的一个例子,它取决于如何使用语言。
脚本语言是编程语言的一个子集。
- 脚本语言不会被用户编译成机器代码(python,perl,shell等)。 相反,另一个程序(称为解释程序,运行程序并模拟其行为)
- 一些非脚本编程语言(C,C ++,Haskell和其他“编译”语言)被编译为机器代码,随后运行。
我不同意使用解释器的语言是脚本语言,编译的语言是编程语言。 我们可以为任何语言开发解释器或编译器。 解释的环境更适合网页脚本编写,并且更容易,这就是为什么我们拥有它。
那么,我觉得脚本语言和编程语言没有什么区别。 这完全是为了完成工作。 当谈到与networking有关的任务时,我们把他们称为Web脚本,考虑到小任务,这样我们也可以将系统相关任务称为系统或操作系统级脚本,以及我们用来完成系统脚本语言这些任务的编程语言。
另外,如果我们能够build立所需的平台和环境,那么不能用Python语言编写系统级的代码,要用C语言编写Web脚本。 但是所有这些都需要付出很大的努力,这可能会影响到快速发展的时间限制,缩短的延迟的一小部分在web脚本中不会受益。 但是,如果我们在Python中执行系统级别的任务,则反之亦然。
底线:语言select取决于要执行的任务的性质,并将语言区分为脚本语言是一个神话。
除了脚本语言被解释和编程语言被编译的区别之外,还有另一个区别如下,我猜想它已经被错过了。
脚本语言是一种编程语言,用于操纵,定制和自动化现有系统的设施。 在这样的系统中,通过用户界面已经可以使用有用的function,并且脚本语言是将该function暴露给程序控制的机制。
编程语言通常用于从Scratch编码系统。
src ECMA
如果我们看到逻辑编程语言和脚本语言,这是99.09%相同。 因为我们使用循环,控制条件,variables等相同的概念,所以我们可以说两者是相同的,但是它们之间只有一点不同,就是在C / C ++和其他编程语言中,我们在执行之前编译代码。 但是在PHP,JavaScript等脚本语言中我们不需要编译我们直接在浏览器中执行。
感谢Nitish K. Jha
在(JavaScript和旧的PHP版本)脚本语言中,我们使用现有的基本function和方法来执行我们的工作。 让我们以JavaScript
为例,只有在浏览器或浏览器支持浏览器或方法的情况下,才能使用ajax
或web-sockets
。 但是在像C或C ++,Java这样的语言中,我们可以从头开始编写这个特性,即使这个特性的任何库都不可用,但是我们不能在JavaScript中这样做。
您可以在Internet Explorer 8中支持Web套接字吗?或者在JavaScript的帮助下,可以支持Web套接字但是,您可以使用C或C ++或Java编写插件,这可能会将Internet套接字8的function添加到Internet Explorer 8中。
基本上在脚本语言中,我们按顺序编写代码,按顺序执行现有的方法来完成我们的工作。 在数字计算器中input数字和公式也是脚本语言的一个例子。我们应该注意到,每种脚本语言的编译器/运行时环境总是用编程语言编写,我们可以在其中添加更多的function和方法,并可以编写新的库。
PHP这是有些黑白的编程和脚本语言。 我们可以通过添加以另一种高级语言编写的编译扩展来添加新的方法。 我们不能直接在PHP中添加networking的高级function或创buildimage processing库。
PS我真的很抱歉只能围绕PHP JavaScript来回答我的回答,但我使用这两个,因为我在这两个方面有相当的经验。
我认为你所说的“差异”实际上是真正的差异的结果。
实际的差异是编写代码的目标。 谁来运行这个代码。
脚本语言用于编写将要定位到软件系统的代码。 它将在该软件系统上自动执行操作。 该脚本将成为目标软件系统的一系列指令。
一种编程语言的目标是计算系统,它可以是一个真实的或虚拟的机器。 说明由机器执行。
当然,真正的机器只能理解二进制代码,所以你需要编译一个编程语言的代码。 但这是瞄准机器而不是程序的结果。
另一方面,脚本的目标软件系统可以编译代码或解释代码。 取决于软件系统。
如果我们说真正的区别在于它是否被编译,那么我们就有一个问题,因为在V8中运行的Javascript被编译,而在Rhino中运行的时候却不是。
它变得更混乱,因为脚本语言已经演变成非常强大。 因此,他们不限于创build小脚本来自动化其他软件系统上的操作,您可以使用它们创build任何丰富的应用程序。
Python代码的目标是一个解释器,所以我们可以说它在这个解释器上“脚本化”了操作。 但是当你编写Python代码的时候,你并没有把它看作是一个解释器的脚本,你将它看作是创build一个应用程序。 译员只是在那里编码在更高的水平等等。 所以对我来说,Python是一种编程语言,而不是脚本语言。
脚本语言
脚本语言在另一个程序中被解释。 JavaScriptembedded在浏览器中并由该浏览器解释。
脚本语言的例子
- JavaScript的
- Perl的
- python
脚本语言的优点:
-
简单 – 脚本语言比编程语言更容易编写。
-
更less的代码行(LOC)
程序语言
像Java这样的编程语言被编译,而不是以相同的方式被另一个应用程序解释。
编程语言的例子
- C
- C ++和
- Java的