Tcl

[9] Tcl casts everything into the mold of a command, even programming constructs like variable assignment and procedure definition.

[10] Tcl supports multiple programming paradigms, including object-oriented, imperative, functional, and procedural styles.

Because Tcl is a very compact language, it is used on embedded systems platforms, both in its full form and in several other small-footprint versions.

The Tcl programming language was created in the spring of 1988 by John Ousterhout while he was working at the University of California, Berkeley.

It was designed by Nathaniel Borenstein and Marshall Rose to include active messages in e-mail.

A command invocation is a list of words separated by whitespace and terminated by a newline or semicolon.

The first word is the name of a command, which may be built into the language, found in an available library, or defined in the script itself.

Inside curly braces all forms of substitution are suppressed except the previously mentioned backslash-newline elimination.

Note that, unlike in Unix command shells, Tcl does not reparse any string unless explicitly directed to do so, which makes interactive use more cumbersome, but scripted use more predictable (e.g., the presence of spaces in filenames does not cause difficulties).

[38] It was originally implemented to permit Tcl procedures to reimplement built-in commands (like for, if or while) and still have the ability to manipulate local variables.

[31] It includes features such as: Tcl did not have object oriented (OO) syntax until 2012,[31] so various extension packages emerged to enable object-oriented programming.

Rivet was primarily developed by Damon Courtney, David Welton, Massimo Manghi, Harald Oehlmann and Karl Lehenbauer.

Rivet can use any of the thousands of publicly available Tcl packages that offer countless features such as database interaction (Oracle, PostgreSQL, MySQL, SQLite, etc.

Tools exist (e.g. SWIG, Ffidl) to automatically generate the necessary code to connect arbitrary C functions and the Tcl runtime, and Critcl does the reverse, allowing embedding of arbitrary C code inside a Tcl script and compiling it at runtime into a DLL.

The Tcl language has always allowed for extension packages, which provide additional functionality, such as a GUI, terminal-based application automation, database access, and so on.

A Tcl file being edited in the Eclipse IDE