有人能解释一下脚本语言和程序设计语言的区别吗? 你也可以举一些例子。我谷歌了很多,但我总是从Stack Overflow找到最好的答案。
当前回答
我认为你所说的“差异”实际上是真实差异的结果。
实际的区别在于所编写代码的目标。谁来运行这段代码。
脚本语言用于编写针对软件系统的代码。它将对软件系统进行自动化操作。脚本将是目标软件系统的指令序列。
编程语言的目标是计算系统,可以是真实的也可以是虚拟机。指令是由机器执行的。
当然,真正的机器只理解二进制代码,因此您需要编译编程语言的代码。但这是针对机器而不是程序的结果。
另一方面,脚本的目标软件系统可以编译代码或解释它。由软件系统决定。
如果我们说真正的区别是它是否被编译,那么我们就有一个问题,因为Javascript在V8中运行时是编译的,而在Rhino中运行时不是。
由于脚本语言已经进化得非常强大,所以它变得更加令人困惑。因此,它们不局限于创建小脚本来自动化另一个软件系统上的操作,您可以使用它们创建任何丰富的应用程序。
Python代码以解释器为目标,因此我们可以说它“脚本化”了解释器上的操作。但是,当你编写Python代码时,你不会将其视为编写解释器脚本,而是将其视为创建应用程序。解释器只是用于在更高级别上编写代码。所以对我来说,Python更像是一种编程语言,而不是脚本语言。
其他回答
在世界还很年轻的时候,在PC世界中,你可以从。exe或。bat中选择,描述很简单。Unix系统一直都有shell脚本(/bin/sh, /bin/csh, /bin/ksh等)和编译语言(C/ c++ /Fortran)。
To differentiate roles and responsibilities, the compiled languages (often referred to as 3rd Generation Languages) were seen a 'programming' languages and 'scripting' languages were seen as those that invoked an interpreter (often referred to as 4th Generation Languages). Scripting languages were often used as 'glue' to connect between multiple commands/compiled programs so that the user didn't have to worry about a set of steps in order to carry out their task - they developed a single file, that delineated what steps they wanted to accomplish, and this became a 'script' for anyone to follow.
Various people/groups wrote new interpreters to solve a specific problem domain. awk is one of the better-known ones, and it was used mostly for pattern matching and applying a series of data transforms on input. It worked well, but had a limited problem domain. The expansion of that domain was all but impossible because the source code was unavailable. Perl (Larry Wall, principle author/architect) tool scripting to the next level - and developed an interpreter that not only allowed the user to run system commands, manipulate input and output data, supported typeless variables, but also to access Unix system level APIs as functions from within the scripts themselves. It was probably one of the first widely used high-level scripting languages. It is with Perl (IMHO) that scripting languages crossed the arbitrary line and added the capabilities of programming languages.
你的问题是关于Python的。因为python解释器是针对包含python代码的文本文件运行的,而且python代码可以在任何有python解释器的地方运行,所以我认为它是一种脚本语言(与Perl相同)。您不需要为每个不同的OS/CPU架构重新编译用户python命令文件(就像使用C/ c++ /Fortran一样),这使得它更易于移植和使用。
这个答案要归功于杰罗德·海曼(Jerrold Heyman)。 原帖:https://www.researchgate.net/post/Is_Python_a_Programming_language_or_Scripting_Language
除了脚本语言是解释性的,而编程语言是编译性的,还有一个不同之处,如下所示,我想这一点已经被忽略了。
脚本语言是一种编程语言,用于操作、定制和自动化现有系统的设施。在这样的系统中,通过用户界面已经可以获得有用的功能,而脚本语言是一种将该功能暴露给程序控制的机制。
而编程语言通常用于从头开始编写系统代码。
src ECMA
在脚本语言(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,但我使用这两个,因为我在这两个方面有相当丰富的经验。
我认为你所说的“差异”实际上是真实差异的结果。
实际的区别在于所编写代码的目标。谁来运行这段代码。
脚本语言用于编写针对软件系统的代码。它将对软件系统进行自动化操作。脚本将是目标软件系统的指令序列。
编程语言的目标是计算系统,可以是真实的也可以是虚拟机。指令是由机器执行的。
当然,真正的机器只理解二进制代码,因此您需要编译编程语言的代码。但这是针对机器而不是程序的结果。
另一方面,脚本的目标软件系统可以编译代码或解释它。由软件系统决定。
如果我们说真正的区别是它是否被编译,那么我们就有一个问题,因为Javascript在V8中运行时是编译的,而在Rhino中运行时不是。
由于脚本语言已经进化得非常强大,所以它变得更加令人困惑。因此,它们不局限于创建小脚本来自动化另一个软件系统上的操作,您可以使用它们创建任何丰富的应用程序。
Python代码以解释器为目标,因此我们可以说它“脚本化”了解释器上的操作。但是,当你编写Python代码时,你不会将其视为编写解释器脚本,而是将其视为创建应用程序。解释器只是用于在更高级别上编写代码。所以对我来说,Python更像是一种编程语言,而不是脚本语言。
如果我们从逻辑上看编程语言和脚本语言,这是99.09%相同的。因为我们使用相同的概念,如循环、控制条件、变量等等,所以我们可以说两者都是相同的,但它们之间只有一件事是不同的,那就是在C/ c++和其他编程语言中,我们在执行前编译代码。但在PHP, JavaScript和其他脚本语言中,我们不需要编译,我们直接在浏览器中执行。
谢谢 Nitish K. Jha
推荐文章
- 在Bash中测试非零长度字符串:[-n "$var"]或["$var"]
- 流行语言的语言书籍/教程
- 如何解决shell脚本中的符号链接
- 如何将PowerShell的输出重定向到执行期间的文件
- Bash脚本中范围内的随机数
- 按返回类型重载函数?
- 如何运行一个shell脚本在OS X双击?
- 如何模拟环境cron执行脚本?
- 正确Bash和shell脚本变量大写
- Bash中的错误处理
- 从bash模拟“group by”的最佳方法?
- 我如何写一个bash脚本重新启动一个进程,如果它死了?
- $?(美元问号)的shell脚本
- 如果arguments等于这个字符串,定义一个类似于这个字符串的变量
- 如何通过ssh直接访问特定目录?