FORTH is a token-based programming language that involves explicit stack-based programming with (at least) two stacks; beyond that, arguments tend to break out concerning whether or not people should use:
Text files or 1K disk "blocks" to store programs;
An explicit "virtual machine definition" or make it entirely platform-independent;
Run FORTH on bare hardware, or atop a featureful OS;
Should there be "local variables"? Or should all words be defined to manipulate the stack directly?
It has been quite popular for use in real time applications, as many implementations provide tiny memory footprints and are well suited for burning ROMs. In addition, the programming model involves building up programs "bottom up" generally using an interactive interpreter, which eases debugging.
Amazon Thinking Forth; Leo Brodie; Paperback
This is Mitch Bradley's company that produces the likely most-used Open Firmware implementation.
A programming language vaguely based on Forth with a 1K long compiler on the 68K architecture.
A Public-domain portable ANSI Forth implemented in ANSI C .
Native code x86 Forth for Linux
This language was promoted by IBM as a combined successor to both COBOL and FORTRAN . It parallels Ada , C++ , and Common Lisp in being a rather complex language the point of which people who truly understood it have been rare commodities. Like them, it offers a perhaps-too-rich set of data structures and control structures.
Note that the pared-down PL/M variant was used to implement the CP/M operating system. And much of Multics was implemented in PL/1.
The Multics PL/1 Compiler
REXX is an interpreted scripting language created at IBM based on PL/1.
A SNOBOL4 implemented using C , that should run on many Linux -like systems.
match - SNOBOL Style Pattern Matching for C
This is a library for use with C or C++ which takes a SNOBOL style pattern matching approach to parsing. The documentation for the library represents excellent documentation as to the "SNOBOL way" of things.
A discussion list on SNOBOL.
The developers of the long-popular SNOBOL text processing language created Icon . It seems to be a better language than SNOBOL; likely a lot better than a lot of string processing languages, and infinitely better suited to the purpose than either C or BASIC. It's quite portable, running under most flavors of Unix, M$-platforms, and relatively obsolescent platforms like the Atari ST, Amiga, and rather a lot of others.
It is almost certainly underused, as it's quite a nice language. While obscure in "commercial" circles, it has certainly been widely used from a "conceptual" perspective by those familiar with academic literature; the Common Lisp SERIES package implements something conspicuously similar to Icon generators, and the makers of Python have recently implemented generators as part of that language.
Here is a simple example of an Icon generator; watch
how i iterates across individual values as well as
across sets that are generated. In effect, each component of the
expression is a generator that is put together into a "grand
generator" that the every control structure
requests to produce all of its values.
procedure main() every i := 1 | 2 | 3 | (5 to 15 by 3) | (20 to 100 by 5) | (7.5 to 47.4 by 11.35) do { write (i) } end
Generators may be combined with "goal directed evaluation," where what is generated is "eaten" by an expression that evaluates the generated result, typically eating generated elements until it actually succeeds. This provides similar functionality to the way Prolog programs bind database values to variables until the predicates succeed. The ideas are certainly not identical, but represent parallel ways to solve some of the same sorts of problems. The fact that Icon provides an imperative programming model that is more familiar to programmers may make it easier to work with than Prolog.
Noweb A Simple, Extensible Tool for Literate Programming
The newest version of Noweb is being implemented using Lua ; it was previously implemented using Icon.
Google search for +sather progamming language
An interpreted object oriented language, originally patterned after Eiffel.
The language designed to be Turing-complete but as fundamentally unlike any existing language as possible. Expressions that look like line noise. Control constracts that will make you gasp, make you laugh, and possibly make you hurl. Data structures? We don't need no steenking data structures!
INTERCAL CGI Script for "Mastermind"
See inscgi.i.txt for the gory truth...
The Ring of Esoteric Programming Languages
Esoteric Programming Languages (EPLs) are languages designed to be perverse - and fun.
Libero - Visual State Machine Programming Tool for C, Perl, Lisp
Tachyon 390 Cross Assembler So you want to do MVS Assembler work under Linux...
This language is billed as an artificial language that would be useful for humans to use; they have a grammar, spoken syntax, YACC parser, and dictionaries.
HDF5 - The Next Generation of the HDF library & tools (for complex data representation)
Pliant language and PDEE documentation
Pliant claims to be "the first truly extendable programming language."
It seems to me that Lisp systems that include pattern-based macro systems provide equivalent sorts of extendability, and that Forth systems have offered extendable compilers for upwards of 15 years now.
The code looks rather a lot like "a Lisp that provides the option to remove parenthesis"
Data structures include booleans, integers, FP, strings, arrays, lists, dictionaries, relations, streams. It validates types at compile time, thus paralleling more type-sensitive languages like the Algol family, and functional languages like ML, Haskell.
Interprets, compiles; written in C; can generate compilable C output...
The Pliant accounting mechanism is a security scheme based on matching patterns against path names, which is certainly not the worst scheme ever devised.
Parsing Techniques - A Practical Guide - Formerly published by Prentice Hall, now available in PDF form
The formal specification notation Z (pronounced "zed") is based on Zermelo-Fraenkel set theory and first order predicate logic.
Z is a (non-executable in general) specification language, so there is no such thing as a Z compiler/linker/etc. as you would expect for a programming language. Some people have looked at animating subsets of Z for rapid prototyping purposes, using logic and functional programming for example, but this is not really the major point of Z, which is to increase human understandability of the specified system and allow the possibility of formal reasoning and development. However, Prolog seems to be the main favoured language for Z prototyping.
The Tunes language, a reflective OO language based on ideas from Self and Beta.
Mithril - a dynamic programming language reminiscent of Scheme and Smalltalk intended as an integration tool for IronDOC and Bolide.
TRAC Programming Language: The TRAC Foundation
An ultimately macro-oriented programming language...
EASEL: An Application-Building Language
The End-User Application System Encoding Language (EASEL) is a language and system for writing end-user applications based on interactive constructs such as windows, forms, menus and hypertexts.
An EASEL application is constructed in a network of frames. Each frame focuses on a high level task and is defined in a frame block.
Jfs - Programming environment for Jfl, a language for transforming fuzzy logic programs into C and back.
Sendmail configuration language used as a Turing Machine
From a Scheme designer comes an essay on how to program in the Sendmail configuration language.
You never, never, never want to use this in real life...
The TXL programming language is a hybrid functional / rule-based language with unification, implied iteration and deep pattern match. In effect, it is something of a cross between Prolog , YACC , and ML .
Not available (yet) as free software, it seems most commonly used for transforming code from some computer language into forms amenable to software analysis, reengineering, code factoring, and other such things.
Modula-3 implementation of the TXL Programming Language
FlowDesigner is a free (GPL/LGPL) data flow oriented development environment. It can be used to build complex applications by combining small, reusable building blocks. In some ways, it is similar to both Simulink and LabView, but is hardly a clone of either.
FlowDesigner features a RAD GUI with a visual debugger. Although FlowDesigner can be used as a rapid prototyping tool, it can still be used for building real-time applications such as audio effects processing. Since FlowDesigner is not really an interpreted language, it can be quite fast.
CLIPS is an expert system construction set originally written in Common Lisp but later rewritten in C . It is intended to be embedded into applications.
Regular expressions are used to do 'pattern matching.' They are a less general form of "language" than any of the others here, not being able to express the full expressivity of looping, storage, and such, of 'real languages.'
They are fundamentally less powerful than typical languages that are "Turing equivalent;" regular expressions essentially describe (or are described by) finite state automata. They are nonetheless plenty useful, and are what is typically used in compiler tools like yacc to describe the "tokens" in computer languages.