有人能解释一下脚本语言和程序设计语言的区别吗? 你也可以举一些例子。我谷歌了很多,但我总是从Stack Overflow找到最好的答案。
当前回答
脚本语言
脚本语言是在另一个程序中解释的。JavaScript被嵌入到浏览器中,并由该浏览器进行解释。
脚本语言示例
JavaScript Perl Python
脚本语言的优点:
简单——脚本语言比编程更容易编写 语言。 更少的代码行数
编程语言
像Java这样的编程语言是由另一个应用程序以同样的方式编译和解释的。
编程语言示例
C c++和 Java
更多的细节
http://www.yorku.ca/nmw/facs1939f13/javascript_all/js_scriptingVSprogramming.html http://www.killersites.com/blog/2005/scripting-vs-programming-is-there-a-difference/
其他回答
脚本语言是人们认为是脚本语言的编程语言。 这是一个没有明确边界的人为类别,而且每条提议的规则都有例外。
经典的规则用来说一种语言是一种脚本语言是表征,而不是定义。如果一种语言满足许多规则,那么它很有可能被认为是一种脚本语言。如果不是,很有可能不是。规则通常包括:
它适用于小型“脚本”,而不是大型程序。 它被嵌入到另一个应用程序中,用于该应用程序的小修改。 它是解释的,而不是编译的。 它是为新手程序员设计的,而不是专业人员。 它的名字以“script”结尾。
我还要补充说:
脚本语言是一种几乎所有错误都在运行时被检测到的编程语言。
也就是说,它可以是一种解释语言。
如果一种编程语言具有显著的“编译时”行为,即在不运行程序的情况下分析代码并报告错误,例如来自C、Java或c#的类型错误,那么它很可能不被认为是一种脚本语言。
传统上,很多脚本语言都是直接从源代码解释的,但更流行的脚本语言都有更高性能的实现,可以预编译代码,比如Python的.pyc文件,或者优化JavaScript引擎,在运行之前将其编译为本机代码。
如果该语言可以由解释器实现,解释器在运行时只查看源代码,那么它很可能被认为是脚本语言。它是否真的以这种方式实现并不重要,但如果可以,那么它也不需要对代码进行广泛的编译时错误检查。
如果该语言提供了一种有用的静态语义,可以帮助检测错误(除了语法错误),而不需要运行程序,那么它可能不是一种脚本语言。
总会有例外,通常是基于一种语言的传统,而不是任何实际的规则。 BASIC通常不被认为是一种“脚本语言”,尽管它几乎满足了任何人曾经使用过的作为脚本语言的所有标准。这就是为什么Visual Basic Script必须在名称中添加“脚本”,以区别于Visual Basic,后者是一种“真正的”用于大型程序的编程语言。
BASIC也是一种古老的编程语言,就像COBOL和Fortran一样,在人们期望从语言中获得静态分析之前,基本上在“脚本语言”出现之前。
脚本语言是不需要显式编译步骤的编程语言。
例如,在正常情况下,必须先编译C程序才能运行它。但在正常情况下,在运行JavaScript程序之前不必编译它。所以JavaScript有时被称为“脚本”语言。
随着现代硬件和现代编译技术的发展,编译的速度越来越快,这条界限变得越来越模糊。例如,谷歌Chrome中的JavaScript引擎V8(在浏览器之外也经常使用)实际上是将JavaScript代码实时编译为机器代码,而不是解释它。(实际上,V8是一个优化的两阶段编译器。)
Also note that whether a language is a "scripting" language or not can be more about the environment than the language. There's no reason you can't write a C interpreter and use it as a scripting language (and people have). There's also no reason you can't compile JavaScript to machine code and store that in an executable file (and people have). The language Ruby is a good example of this: The original implementation was entirely interpreted (a "scripting" language), but there are now multiple compilers for it.
一些“脚本”语言的例子(例如,传统上使用的语言没有显式的编译步骤):
Lua JavaScript VBScript和VBA Perl
还有一小部分传统上用于显式编译步骤的代码:
C c++ D Java(但请注意Java被编译为字节码,然后在运行时解释和/或重新编译) 帕斯卡
...然后你就有了像Python这样的东西,它们在两个阵营中都有:Python被广泛使用,没有编译步骤,但主要实现(CPython)是通过动态编译字节码,然后在VM中运行字节码来实现的,它可以将字节码写入文件(。Pyc, .pyo),无需重新编译即可使用。
这只是极少数,如果你做一些研究,你会发现更多。
我认为你所说的“差异”实际上是真实差异的结果。
实际的区别在于所编写代码的目标。谁来运行这段代码。
脚本语言用于编写针对软件系统的代码。它将对软件系统进行自动化操作。脚本将是目标软件系统的指令序列。
编程语言的目标是计算系统,可以是真实的也可以是虚拟机。指令是由机器执行的。
当然,真正的机器只理解二进制代码,因此您需要编译编程语言的代码。但这是针对机器而不是程序的结果。
另一方面,脚本的目标软件系统可以编译代码或解释它。由软件系统决定。
如果我们说真正的区别是它是否被编译,那么我们就有一个问题,因为Javascript在V8中运行时是编译的,而在Rhino中运行时不是。
由于脚本语言已经进化得非常强大,所以它变得更加令人困惑。因此,它们不局限于创建小脚本来自动化另一个软件系统上的操作,您可以使用它们创建任何丰富的应用程序。
Python代码以解释器为目标,因此我们可以说它“脚本化”了解释器上的操作。但是,当你编写Python代码时,你不会将其视为编写解释器脚本,而是将其视为创建应用程序。解释器只是用于在更高级别上编写代码。所以对我来说,Python更像是一种编程语言,而不是脚本语言。
编程语言: 编译为机器码并在底层操作系统的硬件上运行。
脚本语言: 是编程语言的非结构子集。这是一般的解释。 它基本上是“脚本”其他事情来做事情。主要的重点不是构建你自己的应用程序,而是让现有的应用程序以你想要的方式运行,例如浏览器的JavaScript, TCL等。
***但也有编程语言被转换为解释器的情况,反之亦然,比如使用C解释器,你可以使用C脚本。 脚本通常用于控制应用程序的行为,而编程语言则用于构建应用程序。 但要注意的是,这种界限正在日益模糊——作为Python的一个例子,它取决于你如何使用这种语言。
在脚本语言(JavaScript和旧的PHP版本)中,我们使用现有的基本函数和方法来执行我们的工作。 让我们以JavaScript为例,我们可以使用ajax或web-sockets,只有当它们被浏览器支持或方法存在或它们在浏览器中。但在C或c++、Java等语言中,我们可以从头开始编写该功能,即使该功能的任何库都不可用,但在JavaScript中我们不能这样做。
你能在ie8或之前版本的浏览器中使用JavaScript支持web-socket吗 但是你可以用C或c++或Java编写一个插件,它可以为Internet Explorer 8添加web-socket的功能。
基本上,在脚本语言中,我们按顺序编写代码,以执行现有的方法来完成我们的工作。在数字计算器中输入数字和公式来进行运算也是脚本语言的一个很好的例子。我们应该注意到,每种脚本语言的编译器/运行时环境总是用编程语言编写的,我们可以在编程语言中添加更多的特性和方法,并可以编写新的库。
PHP 这是一种有点b/w编程和脚本的语言。我们可以通过添加用另一种高级语言编写的编译扩展来添加新方法。我们不能直接在PHP中添加网络的高级特性或创建图像处理库。
附:我真的很抱歉把我的答案围绕PHP JavaScript,但我使用这两个,因为我在这两个方面有相当丰富的经验。