是什么让一个语脚本语言?我听到有人说"时,它得到的解释,而不是编纂".这将使PHP(例如)一个脚本语言。那是唯一的标准?或者是否还有其他标准?

参见:

有帮助吗?

解决方案

一个脚本语言是一种语言,"脚本"其他事情要做的东西。主要的重点不是主要建设自己的应用程序这么多,因为越来越现有的应用程序采取行动你想要的方式,例如JavaScript浏览器,VBA为MS办公室。

其他提示

简单的。当我使用它,这是一个现代化的动态的语言,使用它时,它仅仅是一个脚本语言!

传统上,在谈论该差异有关脚本和编程、脚本是解释和方案编制。语言可以执行不同的方式解释或汇编(以码或机器码)。这不会让一个 语言 一个或另一个。

在一些眼睛,你的方式 使用 语言使这个脚本语言(例如,游戏开发人员发展主要是用C++会 脚本 对象在卢).再次,线都是模糊的语言可以使用一种编程由一个人和同样的语言,可用于脚本语言以通过另一个。

这是从 维基百科 条约脚本语言:

一个脚本语言、脚本语言或扩展的语言是一种编程语言,允许控制的一个或多个应用软件。"脚本"是不同的核心代码的应用程序,因为他们通常写在一个不同的语言,往往是创建或至少修改最终用户。脚本经常解释的源代码或字节,而应用程序的控制是传统上编译为当地机器码。脚本语言几乎总是嵌入的应用程序的控制。

你会通知使用"通常","经常","传统的"和"几乎总是"-所有这些都告诉你没有 没有 设定独特的属性,使一个具体的语言有"编写脚本语言"。

"一剧本是什么你得到行为者。一程序是什么你给的 观众。" --拉里墙上

我真的不觉得有多大的差别。所谓"脚本"的语言往往是汇编--只是很迅速,并且在运行时间。和一些"程序"语言是进一步编制在运行时,以及(认为JIT)和第一阶段的"编"是检查语法和资源的决议。

不要挂了它,它是很不重要的。

我的定义会是一种语言,通常分布为源,而不是作为二进制的。

有很多可能的答案。

第一:它不是一个真正的问题 之间的一个脚本语言和一种编程语言,因为一个脚本语言 一种编程语言。它更是一个问题什么特征作一些编程语言中的一个脚本语言,而另一种编程语言 是不是 一个脚本语言。

第二:这真的很难说什么一个XYZ语言,是否XYZ是"脚本","编程功能","面向对象编程"或者你有什么。定义什么是"编程功能"是的,是很清楚的,但是没有人知道什么是"编程语言功能"。

编程功能或目标为导向的方案编制编程 风格;你可以写在一个功能性或面向对象的风格在几乎任何一种语言。例如,在Linux虚拟文件系统开关和Linux驱动的模式是大量的面向对象尽管有C编写的,而大量的Java或C#代码你看到在网络上是非常的程序并不是面向对象 在所有.另一方面,我已经看到了一些严重的功能Java代码。

因此,如果编程功能以及面向对象编程只是风格,可以做的 任何 语言,那么你怎么定义"面向对象编程语言"?你可以说一个面向对象编程语言是一种语言,允许面向对象的节目。但是这是不太多的一个定义: 所有 语言允许的面向对象的节目,因此 所有 语言是面向对象?所以,你说,好一语言是面向对象的,如果它 部队 你的编程在一个面向对象的风格。但是这是不太多的一个定义,无论是: 所有 语言允许编程功能,因此 没有 语言是面向对象?

因此,对于我,我已经找到了以下定义:

语言是一个脚本语言(面向对象的语言/语言功能),如果它

  • 促进 scripting(面向对象编程和功能编),即它不仅仅 允许 但它使得它 容易的自然的 并包含的功能, 帮助 有了它,
  • 鼓励指南 你对scripting(面向对象编程和功能编程)。

因此,在五个段落,我已经到了:"脚本语言是一种语言编写脚本".什么是伟大的定义。不。

显然,我们现在需要看看所定义的"脚本".

这是第三个问题涉及:而术语"编程功能"是很好的定义,它是唯一的术语"编程语言功能",这是有问题的,不幸的是与编写脚本, 术语"脚本"和"脚本语言"被虐待的定义。

嗯,首先脚本 编程。这只是一种特殊的程序。IOW:每一剧本是一个程序,但并不是每一个程序是一个剧本;集中所有的剧本是一个适当的子集的所有程序。

在我个人的意见,使脚本脚本,并区别于其他类型的节目,是...

脚本很大程度上操纵的对象

  • 不是通过剧本,
  • 有一辈子的独立的脚本
  • 生活之外的领域的剧本。

此外,该数据类型和算法的使用一般不定义的脚本,但是由外部环境。

想想一个shell script:脚本通常操作文件、目录和进程。大多数文件、目录和进程对您的系统都可能没有创建的,目前运行的脚本。他们不会消失的时候脚本退出:他们的一生是完全独立的脚本。他们是不是真的脚本的一部分,无论是,他们是一个系统的一部分。你才开始你的剧本写作 FileDirectory 课程,这些数据类型不关你的问题:你只是假设他们在那里,并且你甚至不知道(也不是你 需要 知道)他们是如何工作的。和你不执行自己的算法,例如目录穿越你只使用 find 而不是实现自己的广度优先。

在短:一个脚本本身重视的一个更大的系统中,存在独立的脚本,操纵一些小型系统的一部分,然后退出。

较大的系统的可操作系统的情况下一个脚本,浏览器DOM的情况下浏览器的剧本,一个游戏(例如魔兽世界的与Lua或第二次生命的Linden的脚本语言),一个应用程序(例如该AutoLisp语言AutoCAD或Excel/Word/办公室的宏)、网络服务器、一包机器人或完全不同的东西。

注意脚本方面是完全正交的所有其他方面编程语言:一个脚本语言可以强或弱类型,严格或松散的类型,静态或动态的类型、名义上的,在结构上或鸭类型,哎呀它甚至可以无类型.它可能是必要的或功能性的、面向对象的、程序性或功能性的、严格的或者懒惰。其实现方式可以解释,编制了或混合。

例如,蒙德里安是一个严格的强烈静态类型的懒惰的功能脚本语言编制执行情况。

然而,所有这一切都是没有实际意义,因为该术语的方式 脚本语言真的 用在现实世界中,没有任何与任何上述内容。这是最常用的,只是作为一个侮辱,并且该定义是相当简单,即使是简单:

  • 真的 编程语言:我的编程语言
  • 脚本语言:你的编程语言

这似乎是这样,该词是最常用的。

这就像色情,你知道,当你看到它。唯一可能的定义的一个脚本语言是:

A language which is described as a scripting language.

一位的圆形的,不是吗?(通过的方式,我不是开玩笑的).

基本上,没有什么使得一语脚本语言除了它被称为例,尤其是通过它的创造者。主要的一套现代化的脚本语言是PHP,Perl,JavaScript,Python,Ruby和Lua。Tcl是第一个重大现代化的脚本语言(它不是第一次脚本语言,虽然,我忘记了,它是什么,但我很惊讶地了解到,它早Tcl).

我描述的特征的重大脚本语言 我的纸:

 A Practical Solution for Scripting Language Compilers
 Paul Biggar, Edsko de Vries and David Gregg
 SAC '09: ACM Symposium on Applied Computing (2009), (March 2009)

大多数动态输入和解释,多数都没有定义的语义之外的其参考执行情况。然而,即使他们的主要实施变编制或JITed,这并不改变"性质"的用语。

他们仅剩下的问题是如何你能告诉我们,如果一种新的语言是脚本语言。好吧,如果这就是所谓脚本语言,它是一个。所以 因子 是脚本语言(或者至少是当是书面的),但说,Java不是。

"脚本语言"是一个模糊的概念,这可能意味着很多事情。通常是指这样的事实,即那里存在的一个步骤的过程把你从源代码,以执行。

例如在Perl你这样做: perl my_source.pl

鉴于上述标准PHP是一个脚本语言(即使可以有一个"汇编"进程,例如,当使用Zend编码"保护"源代码)。

PS。通常(但不是总是)脚本语言解释。还经常(但不是总是)脚本语言是动态的类型。

所有脚本语言编程语言。所以严格来讲,没有区别。

该词不是指任何根本性的语言,它指的是典型的 使用 的语言。如果将典型的使用是编写简短的程序,主要做呼吁的预现有的编码,以及一些简单的处理结果(也就是说,如果将典型的使用是编写 脚本)然后这是一个脚本语言。

我认为先生罗伯特*Ierusalimschy有一个非常好的答案,或者问题'的编程在Lua':

然而,区别特征 解释性语言的不是他们 不是编的,但是,任何 编译是一部分的语言 运行时,因此,它是 可能的(和易)的执行代码 所产生的飞行

一个司

  • 脚本=动态解释
  • 正常=编制

一个动态解释的语言解释在运行时而编制语言编制之前执行。

我应该补充的是,作为Jörg已经指出的,解释的/编制的区别不是语言,但执行发动机。

你也可能有兴趣在这个解释的 类型的系统, ,这是相关和更侧重于语言方面,而不是执行引擎。最脚本语言是动态型的,而"正常的"语言多是静态的类型。

在一般司的静态vs动态类型的语言是更好的定义,并有更多的影响问题上可用性的语言。

一个脚本语言 通常:

  1. 动态类型
  2. 解释的,很少对业绩的重视,但是良好的可携带性
  3. 需要少了很多 样本代码, ,导致非常快速原型
  4. 用于小型任务,适合于编写一个单一的文件,以运行的一些有用的"脚本"。

而非脚本语言 通常:1.静态类型 2.编制,重点放在性能 3.需要更多样的代码,导致较慢的原型但更多的可读性和长期可维修性 4.用于大型项目,适应多设计模式

这是一个历史差异的今天,在我的意见。Javascript and Perl编写的与小型、简单的脚本中心,而C++编写与复杂的应用中心;但既可以用两种方式。和许多编程语言中,现代和老一样,模糊无论如何(以及它是模糊的第一个地方!).

悲哀的是,我知道几个开发者们讨厌他们认为"脚本语言",以为他们能够简单而不是作为强大。我的意见是陈词滥调使用的合适的工具的工作。

脚本语言原本认为是一个控制机制编写的应用程序在一个硬的程序语言。编译程序不可能在运行时修改的,所以脚本给了人们的灵活性。

最值得注意的是,脚本是自动化程序在操作系统内核的(传统上,AppleScript在Mac);一个作用,越来越多的通过成为Perl的手中,然后推到蟒蛇最近。我已经看到方案(特别在它的诡计的执行情况)用于声明光线跟踪的场景;最近,Lua是非常受欢迎,因为编程语言编写的游戏-到的一点,唯一的硬编码的事,在许多新游戏的图形/物理动机,而整个游戏的逻辑进行编码Lua。以同样的方式,JavaScript被认为脚本的行为的网络浏览器。

语言获得解放;没有一个人现在认为有关的操作系统的应用程序(或认为它所有),并且许多以前开始脚本语言以用来编写充分应用他们自己。这个名字本身变得毫无意义,并蔓延到许多解释的语言在使用今天,无论他们是设计来加以解释,从内的另一系统,或没有。

然而,"脚本语言"是多数肯定不是同义词与"解释性语言"--例如,基本解释,对于大多数其生命(即之前,它失去了它的acronimicity,并成为Visual Basic),但没有人真正认为它作为脚本。

更新: 阅读材料,作为提供通常的 在维基百科.

第一点,一种编程语言不是一个"脚本语言"或别的东西。它可以是一个"脚本语言"和别的东西。

第二点,实施者的语言会告诉你如果这是一个脚本语言。

你的问题应改为"在什么样的实现将一种编程语言被认为一脚本语言?", 没有"之间的区别是什么脚本语言和一种编程语言?".没有之间。

然而,我会考虑一语脚本语言,如果它是用来提供某种类型的中间商品。例如,我会考虑大多数实现的JavaScript一个脚本语言。如果JavaScript进行在操作系统,不浏览器,那么它不会是一个脚本语言。如果PHP内运行的阿帕奇,这是一个脚本语言。如果它运行从命令行,不是这样的。

我看到一个脚本语言作为任何不需要一个公开的重量感受到编纂'的步骤。主要功能,从程序的角度来看是:你编码和运行它的时候了。

因此,我将认JavaScript and PHP作脚本语言,而 ActionScript3/Flex 是不是真的。

我的朋友和我只是有这个说法:之间的区别是什么一种编程语言和脚本语言。

一个受欢迎的论点是,编程语言编制和脚本语言以解释的-但是我相信这一论点是完全错误的,为什么?

  1. 轮&V8(微软和谷歌的JavaScript引擎)编写代码之前执行
  2. QBasic解释-这不会使Qbasic一个"脚本"的语言?

在这个基础上,这是我的参数之间的差异一种编程语言和脚本语言:

一种编程语言在运行的机器水平,并有权访问该机器本身(存储器、图像、声音等等)。

一个脚本语言是砂盒装和只有访问的对象,暴露于沙框。它没有直接访问的潜在机。

在我看来,我会说动态解释的语言,如PHP,红宝石,等等...仍然是"正常"的语言.我要说的是,例的"脚本"的语言都像砸(或股或tcsh会或任何)或sqlplus.这些语言常常被用来串起来的现有方案上的一个系统,为一系列连贯的和相关的命令,例如:

  1. 复制A.txt to/tmp/工作/
  2. 运行的晚间清理过程在数据库服务器上
  3. 日志的结果,并把他们送到sysdamin

所以我想说的差别(对于我来说,无论如何)是更多的你如何 使用 语言。语言,如PHP,Perl,红宝石可以被用作"脚本语言",但是我通常看到他们作为"正常的语言"(除Perl这似乎这两种方法。

我只是继续前进和迁移我的答案重复的问题


名为"脚本语言"适用于一个非常具体的作用:语言编写的命令发送到现有的软件应用程序。(像一个传统的电视或电影"脚本")

例如,曾几何时,HTML网页是无聊。他们总是静态的。然后有一天,Netscape认为,"嘿,如果我们让浏览器读和行动上的小命令的页面?" 和那样的,Javascript是形成。

一个简单的javascript的命令是 alert() 命令,该命令指示/命令的浏览器(a软件应用程序),是读取的网页显示出警报。

现在,不 alert() 相关的,以任何方式,向C++或什么代码语言的实际上的浏览器 使用 以显示该警报?当然不是。有人谁写的"警报()"上。html网页没有理解如何浏览器实际上显示该警报。他只是书面的命令,浏览器将解释。

让我们看看这简单javascript code

<script>
var x = 4
alert(x)
</script>

这些指示是要向浏览器发送的,用于浏览器来解释的本身。编程语言,浏览器进通过实际设置一个可变的4个,并将它放在一个警告...这是完全不相关javascript。

我们呼,最后一个系列的命令"脚本"(这就是为什么它在被封闭 <script> 标签)。只是定义的"脚本",在传统意义: 一系列的指令和命令发送给演员.大家都知道,一个电影剧本(一个电影剧本),例如,是一个剧本。

这编剧(剧本)是 演员,或照相机、或特别效果。剧本只是告诉他们该怎么做。

现在,什么是脚本 语言, ,到底是什么?

有很多编程语言,都喜欢不同的工具,在一个工具箱;某些语言的设计 具体地说 被用作脚本。

Javasript是一个明显的例子;有很少几个应用程序的Javascript不属于该领域的脚本。

ActionScript(语言闪动画)及其衍生物的脚本语言,在他们只是发出命令Flash player/口译员。当然,还有抽象,诸如面向对象的节目,但是,所有这一切都只是一种手段来结束:发送命令。

蟒蛇和红宝石是通常也用作脚本语言。例如,我曾经为公司使用红宝石到脚本命令发送给浏览器这是沿着线的,"去这个网站,点击这一链接..."做一些基本的自动化测试。我 一个"软件开发的"通过任何手段,在这一工作。我刚写的脚本发送命令的计算机发送命令。

由于其性质、脚本语言很少'汇编'-那就是,翻译成机器码,直接由计算机。

甚至GUI创建的应用程序从Python和红宝石是脚本发送给API用C++编写或C。它告诉C程序要做什么。

有一个线含糊不清,当然。为什么你不能说这机器语言/C脚本语言,因为他们是脚本的计算机使用接口的基本主板/绘图卡片?

有一些线路我们可以得到澄清:

  1. 当你可以写脚本语言和运行它无"汇编",它更直接的脚本之类的事情。例如,你不需要做任何事情有一个剧本,以便告诉演员怎么做。它已经存在、使用。由于这个原因,我们会 排除编制语言 被称为脚本语言,即使他们可以被用于编写脚本目的在某些场合。

  2. 脚本语言暗示的命令发送给一个 复杂的 软件应用程序;这就是全部的原因,我们编写脚本,在第一位-所以您不需要知道的复杂性软件是如何工作发送命令到它。因此,脚本语言往往是语言 发送(相对)简单的命令,复杂的应用软件...在这种情况下,计算机语言和大会的代码不切。

我可以建议脚本语言已经一术语很多人是搬走。我会说这主要是归结到编制语言和动态语言的今天。

我的意思是,你真的不能这样说蟒蛇,或红宝石是"脚本"的语言,在这一天和年龄(你甚至有这样的东西 IronPythonJIT-你最喜欢的语言, ,差别已经模糊不清甚至更多)。

说实话,我个人感觉不PHP是一个脚本语言了。我不会期望人们像进行分类PHP不同的方式说Java在他们的简历。

脚本语言往往在一个脚本的引擎是一部分的更大的应用程序。例如,JavaScript内运行你的浏览器scripting engine.

一个脚本语言是一种语言,是解释每一次脚本是运行,它意味着有一个口译员和大多数都是非常人可读的,是有用的一个脚本语言易于了解和使用。

每可编译的语言可以做成一个脚本语言,反之亦然这一切都取决于实施一个口译员或以一个编译器,作为一个例子C++有译员,所以它可以被称为一个脚本语言,如果使用(不是很实际的一般C++是一个非常复杂的语言),最有用的一个脚本语言在本是蟒蛇...

所以回答你的问题的定义是在使用口译运行的快速和容易的脚本化程序,处理简单的任务或原型应用的最强大的使用一个可以让的脚本语言以包括可能为每一个用于扩展一种编制应用程序。

我更喜欢的人不使用术语"脚本语言",因为我认为它削弱努力。采取一种语言如Perl,通常被称为"脚本语言"。

  • Perl是一种编程语言!
  • Perl编制Java和C++。这只是汇编了很多更快!
  • Perl有目的和名称空间和关闭。
  • Perl有IDEs和调试器和廓线仪。
  • Perl有培训和支持和社区。
  • Perl不仅仅是网络。Perl是不是只是系统管理员。Perl不是的管道胶带互联网。

为什么我们甚至需要之间的区分的语言Java这样的,是编制和红宝石,是不是?有什么价值标签?

欲了解更多有关这一点,请参阅 http://xoa.petdance.com/Stop_saying_script.

一个重要的区别是 强打字 (对 弱打字). 脚本语言常常是弱类型, ,使其能够编写的小程序更为迅速。对于大型项目,这是一个缺点,因为它抑制编译/口译员以发现某些错误的自主,使它很难"重构"的代码。

脚本语言编程语言中的程序通常传递给最终用户在一个可读文本形式和在哪里有一个程序,可以 显然 执行该计划。(程序可能编写脚本内部;那不是有关在这里,因为这是不可见的用户。)

这是较常见脚本语言能够支持一个交互式的会议,用户可以在自己的程序并立即执行。这是因为这是一个微不足道的扩展的基本要求从第一段;主要的额外要求的是另外一个机制,以找出当一个类型中的声明是完成,以便它可以被送到执行引擎。

用一个略有不同的看问题。一个脚本语言是一种编程语言,但一种编程语言,不一定是一个脚本语言。一个脚本语言被用来控制或脚本系统。这系统可能是一个操作系统里的脚本语言,将是痛击。该系统可能是一个web server PHP脚本语言。脚本语言的设计,以填补一个特定的适当位置;他们域特定的语言。交互式系统解释脚本语言的概念,脚本语言解释;然而,这是一个后果的系统,而不是脚本语言本身。

一个脚本语言是一种语言,用于配置或扩展一个现有程序。
一个脚本语言是一种编程语言。

定义中的"脚本语言"是非常模糊。我想它基于以下考虑:

  1. 脚本语言通常没有用户可见的汇编的步骤。通常,用户可以运行程序在一个简单的命令。

  2. 节目脚本语言通常是通过在来源形式。

  3. 脚本语言的正常运行时,都存在大量的系统,与运行时,可以很容易安装在大多数系统。

  4. 脚本语言往往是跨平台和机不具体的。

  5. 脚本语言,使它容易调用其他程序和界面,与操作系统。

  6. 脚本语言通常是很容易地嵌入成较大的系统编写更传统的编程语言。

  7. 脚本语言通常是设计为便于编程,并与如下方面对执行速度。(如果你想快速的执行,通常建议的是代码的耗时的零部件喜欢的东西的C和嵌入的语言进C或呼C位的语言。)

一些特征,我以上所列都是真的实现,在这种情况下,我指的是更为常见的方式实现的。已经有C的口译员,(据我所知)没有明显的编制步骤,但那不是真实的最C的实现。你当然可以编制一Perl程序原代码,但是这不是它的正常使用。一些其他特点是社会性质的。一些上述标准的重叠。正如我所说,该定义模糊。

我会说脚本语言是一个严重的操作实体,它没有本身的定义。例如,JavaScript操纵的对象DOM浏览器提供的,PHP工作的巨大图书馆的C-基于功能等等。当然不是一个准确的定义,更多的方式去思考,如果它。

如果它不/不会 在CPU上运行的,这是一个脚本给我。如果一名翻译的需求的运行上的CPU下的程序,然后这是一个剧本,一个脚本语言。

没有理由让它的任何更复杂的比这个吗?

当然,在大多数(99%)的情况下,很明显是否语脚本语言。但考虑一个虚拟机可以效仿的x86指示设定的为例。这不会使x86码脚本语言上运行时虚拟机?什么如果有人要写一个编译器,把perl码进入一个司机可执行的?在这种情况下,我不知道该怎么称呼语言本身的了。它就输出那会问题,不是语言。

再说,我不知道这样的事已经完成,所以现在我仍然舒适的调解释的语言编写脚本语言。

一个 脚本 是一个相对较 程序。一个 系统 是一个相对较 程序,或者 集合 比较大的节目。

一些编程语言的设计与特征,语言设计和编程的社会考虑到可用时写入相对较小的程序。这些编程语言中被称为 脚本语言, 如PHP.

同样,其他的编程语言的设计与功能的语言设计和编程的社会考虑到可用时写入相对较大的节目。这些编程语言中被称为 系统语言, 如Java。

现在,大大小小的程序可以写任何一种语言。一个小Java程序是一个剧本。例如,一个Java"hello World"计划是一个剧本,不是一个系统。一个大型的程序,或者收集的程序、PHP编写是一个系统。例如,Facebook,PHP编写的,是一个系统,没有一个脚本。

考虑到一个单一的语言功能作为一个"试金石"的决定语言是否是最适合于编写脚本或系统编程是值得怀疑的。例如,脚本 将编译字节的代码或机器码,或者他们 可以通过执行直接抽象的法树(AST)的解释。

所以, 语言是一个脚本语言,如果它通常用于编写脚本.一个脚本语言可能会被用于编写系统,但此类应用程序都可能被认为是可疑的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top