所有脚本都是用脚本语言编写的吗?

时间:2009-03-13 16:10:12

标签: scripting programming-languages

我对脚本的概念感到困惑。

我可以说makefile是一种脚本吗?

是否有用C或Java编写的脚本?

8 个答案:

答案 0 :(得分:7)

我会参考Wikipedia进行详细解释。

“脚本”通常是指在另一个程序的上下文中运行的一段代码或一组指令。它们通常不是独立的可执行软件。

Makefile是由“make”或MSBuild等运行的脚本

C需要编译成可执行文件或库,因此用(标准)C编写的程序通常不会被视为脚本。 (有exceptions,但这不是使用C的正常方式。)

Java(特别是.net)有点不同。典型的java程序是作为可执行文件编译和运行的,但这是一个灰色区域。可以对用java编写的“脚本”进行运行时编译并执行它。

答案 1 :(得分:3)

在一般意义上,术语“脚本”涉及部署并期望从词法表示运行的代码。一旦编译代码并分发结果输出而不是代码,它就不再是“脚本”。

编译时不考虑脚本的缩小和晦涩,结果仍然是一个脚本。

答案 2 :(得分:1)

这取决于您对脚本的定义。对我来说,脚本可以是您为了一个小目的而编写的任何小程序。它们通常用解释语言编写。但是,没有什么能阻止你用编译语言编写一个小程序。

答案 3 :(得分:1)

对我来说,脚本必须包含单个文件。并且该文件必须能够执行编写脚本的任务,而无需中间步骤。

所以这些都可以:

bash backup_my_home_dir.sh
perl munge_some_text.pl
python download_url.py

但即使文件很小,这也不符合条件:

javac HandyUtility.java
java HandyUtility

答案 4 :(得分:1)

术语“脚本”可以涵盖相当广泛的活动。示例是使用imperative解释语言(如VBScript,Python或shell脚本(如csh或bash)编程,或在declaritive languages中表示任务(如XSL,SQL或Erlang)。

某些脚本语言属于称为 Domain Specific Languages (DSL)的类别。 DSL的好例子是'makefile',许多其他类型的配置文件,SQL,XSL等等。

你所要求的是相当主观的,一个人的剧本是另一个人的应用。如果您对脚本的解释意味着使用脚本语言不应强迫用户遵循传统的编译 - >链接 - >运行周期,然后你可以形成你不能用C或Java编写'脚本'的观点。

答案 5 :(得分:1)

是的,可以用Java编写脚本。我见过很多次了:) (这是糟糕的意大利面条代码的讽刺)

答案 6 :(得分:0)

脚本基本上是几乎所有语言或shell中的不可编译文本文件,带有一个解释器,用于自动执行重复执行的某些进程或命令列表。脚本通常用于备份文件,编译例程,svn提交,shell初始化等,无限制。使用脚本可以完成一百万件事,可执行文件(包括安装等)只会过度使用。

答案 7 :(得分:0)

我用F#编写脚本。最近的一个是一个小型数据加载器,用于接收某些数据集,对其进行一些处理,并将其转储到数据库中。 ~40行。无需单独的编译步骤;我可以让F#Interactive直接运行它。

好处是我得到了一个完全驱动的语言,有一个很好的IDE和所有安全静态检查提供,而推理使得它不会像Java,C#那样冗长。

因此,这种语言提供了一个相当不错的类型系统,编译和检查,不会被解释,但适用于脚本编写。