Christopher B. Browne's Home Page
cbbrowne@acm.org

Scripting Languages

Christopher Browne


Table of Contents
1. Scripting Languages
2. Perl
3. Python
4. TCL and Tk
5. REXX
6. Ruby: A Gem of a Language
7. AWK
8. Lua
9. ECMAScript
10. Other Scripting Languages
11. Miscellaneous Shell Stuff

1. Scripting Languages

In the beginning, computers were ferociously expensive devices, to which programs were submitted as sets of punched cards or tapes. This would require having some sort of "control program" to control combining the different components of the process, including such things as:

In the beginning this generally involved having a few extra punched cards attached to the start of each job in the "hopper." When multitasking systems emerged, more sophisticated "job scheduling" systems emerged. On IBM's systems, this grew into JCL, "Job Control Language." It is worth noting that arguments to the Unix dd(1) command copy from common JCL parameters. More recently, REXX provides a full scale programming language with syntax similar to PL/1 , though JCL is still in widespread use for the purpose.

The Multics innovated the notion of separating the command shell from the operating system kernel, offering the option of having replacement command processors.

On Unix , the Bourne shell has long been used to control basic system functions; the more recent Bash adds in rather more sophisticated data structures.

Between "way back then" and now, developments on such systems as ITS , TOPS-10, and such added sophistication to the "shell languages" with regard to things like job control.

The emergence of Perl added a different kind of sophistication. The original point of Perl was to provide a "reporting language" that would be faster and more maintainable than sets of awk scripts controlled by Bourne shell scripts. From there, things have pretty much just grown: languages like Perl and Python are now full-featured programming languages as opposed to just being the "glue" to connect together programs in "real languages."

Google
Contact me at cbbrowne@acm.org