views:

332

answers:

8

I'm confused by the concept of scripts.

Can I say that makefile is a kind of script?

Are there scripts written in C or Java?

+1  A: 

It depends on your definition of script. For me, a script could be any small program you write for a small purpose. They are usually written in interpreted languages. However, there's nothing stopping you from writing a small program in a compiled language.

Kibbee
+6  A: 

I'd refer to Wikipedia for a detailed explanation.

"Scripts" usually refer to a piece of code or set of instructions that run in the context of another program. They usually aren't a standalone executable piece of software.

Makefiles are a script that is run by "make", or MSBuild, etc.

C needs to be compiled into an executable or a library, so programs written in (standard) C would typically not be considered scripts. (There are exceptions, but this isn't the normal way of working with C.)

Java (and especially .net) is a bit different. A typical java program is compiled and run as an executable, but this is a grey area. It is possible to do runtime compilation of a "script" written in java and execute it.

Reed Copsey
There are some ANSI C interpreters , unfortunately they are proprietary.
Tim Post
True - good point. I was more trying to point out that it's not the standard way of working with C, but there are exceptions. I'll edit to correct.
Reed Copsey
There is also TCC, a library that can compile C source text (aiming for C99 compliance) and return pointers to the functions suitable for calling. See http://bellard.org/tcc/ if you dare ;-) There's even a Lua binding!
RBerteig
+3  A: 

In a very general sense the term "Scripts" relates to code that is deployed and expected to run from the lexical representation. As soon as you compile the code and distribute the resulting output instead of the code it ceases to be a "Script".

Minification and obsfication of a script is not consided a compile and the result is still consider a script.

AnthonyWJones
A: 

A script is basically a non-compilable text file in almost any language, or shell, with an interpreter that is used to automate some process, or list of commands, that you perform repeatedly. Scripts are often used for backing up files, compiling routines, svn commits, shell initialization, etc., ad infinitum. There are a million and one things you can do with a script that an executable (complete with installation, etc.) would simply be overkill for.

hmcclungiii
There are scripting languages that do compile, such as Python. Given foo.py, you can compile to foo.pyc, although there's nothing to stop you from just using foo.py and not bothering with the .pyc.
David Thornley
Agreed, although compiling it would be a bit on the pointless side ;)
hmcclungiii
+1  A: 

For me a script has to consist of a single file. And that file must be able to perform the task for which the script was written with no intermediate steps.

So these would be OK:

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

But this wouldn't qualify, even if the file is small:

javac HandyUtility.java
java HandyUtility
Dave Webb
+1  A: 

The term 'scripting' can cover a fairly broad spectrum of activities. Examples being programming in imperative interpreted languages such as VBScript, Python, or shell scripts such as csh or bash, or expressing a task in declaritive languages such as XSL, SQL or Erlang.

Some scripting languages fall into a category referred to as Domain Specific Languages (DSL's). Good examples of DSL's are 'makefile's, many other types of configuration files, SQL, XSL and so on.

What you're asking is fairly subjective, one man's script is another man's application. If your interpretation of scripting means that using scripting languages should not force a user to follow the traditional compile -> link -> run cycle, then you could form the opinion that you can't write 'scripts' in C or Java.

HTH
Kev

Kev
A: 

I write scripts in F#. A recent one is a small data loader to take in some set of data, do a bit of processing to it, and dump it in a DB. ~40 lines. No separate compilation step needed; I can just make F# Interactive run it directly.

Benefit is that I get a fully powered language with a great IDE and all the safety static checking provides, while inference makes it not get verbose like say, Java or C#.

So, that's one language that offers a reasonably decent type system, compilation and checking, isn't interpreteded, but works fine for scripting.

MichaelGG
A: 

Yes it's possible to do scripting in Java. I've seen it many times :)
(this was sarcasm for bad spaghetti code)

cherouvim