Wandering Thoughts archives

2007-12-17

What is a script language on Unix

There's a lot of argument in general about what is (merely) a 'scripting language' and what is a fully fledged programming language, deserving to hold its head up high besides grown up languages like C, Java, and Pascal.

Unix is a simpler place, because it has a simple and very clear definition of what is a script versus what is a program. To wit: if the kernel can directly exec() you in place as is, you are a program. If not, you are a script (sometimes called an 'interpreter script') and actually get processed by your interpreter, not the kernel.

(Note that in-place execution doesn't preclude the use of a helper; almost every program you run on a modern Unix requires the help of the dynamic loader, which is not part of each executable.)

While technical and somewhat picky, this distinction is important. Among other issues, there are a number of places where a program can be used that a script cannot be.

As an immediate corollary, on Unix a language that cannot be used to make programs is a script language, and there are some things that programs written in that language will never be able to do directly. Note that this says nothing about their suitability for serious jobs.

(While scripts usually start with '#! <interpreter>', some Unixes have ways to run scripts without that; Linux has binfmt_misc, for example.)

unix/UnixScriptLanguages written at 23:48:37; Add Comment


Page tools: See As Normal.
Search:
Login: Password:
Atom Syndication: Recent Pages, Recent Comments.

This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.