Thursday, August 31, 2006
Free Compilers and Interpreters for Miscellaneous Programming Languages
XPL0
XPL0 is a block structured programming language that supports recursion, integers, double-precision floating-point (with or without a math coprocessor), generalized I/O for the console, printers, files and serial ports, unlimited-dimensional arrays, complex data structures using pointers, procedure and function nesting (up to 8 levels), built-in graphics and transcendental routines, peek, poke, port I/O, etc. According to its creator, the language is similar to Pascal although less restrictive, less cryptic than C and more powerful than BASIC. It can generate interpreted as well as native code. The compiler runs under DOS. To use the native and optimizing compilers, you will need an assembler. You can get many free assemblers from the Free Assemblers, Linkers and Object Module Librarians page.
The Harbour Project
Harbour is a free compiler that handles the Clipper superset of the xBase language (the language that originated with dBase). It can compile and run on Windows, MS-DOS, OS/2 and Linux. It is currently under development.
REBOL
REBOL, or the Relative Expression-Based Object Language, is an interpreted language for distributed Internet applications that runs on a variety of devices. The core interpreter is free for all uses, while the version that supports graphics is free only for non-commercial use. REBOL runs on Windows XP/CE/NT/2K/9x, Linux, FreeBSD, OpenBSD, Mac OS and OS X, Solaris Sparc, BeOS, NetBSD, HP-UX, AIX, etc.
Lua Programming Language
Lua is an interpreted procedural language with "data description constructs based on associative arrays and extensible semantics". It has dynamic typing, automatic garbage collection, etc. It is free, open source, and supports Windows, Windows CE, Linux, OS/2, BEOS, etc.
RapidBATCH Freeware Edition
RapidBATCH is a scripting language for Windows. The language appears to be somewhat of a cross between BASIC and typical scripting/batch file languages. It features control instructions like GOSUB and GOTO, the ability to create message boxes from within your script, built-in functions for system related functions, etc.
Erlang
To quote from the FAQ, "Erlang is a general-purpose programming language and runtime environment", with "built-in support for concurrency, distribution and fault tolerance." It is suitable for distributed, reliable, soft real-time concurrent systems like servers for Internet applications (eg, web servers, mail servers), telecommunications systems, database applications that require soft realtime behaviour, etc. Erlang is released free with source code, libraries of code, and documentation.
FBSL: Free Basic Scripting Language
This is a simple scripting language for Windows systems. You can create script files that run in GUI or console mode for use with this interpreter.
Regina Rexx Interpreter
Regina is a Rexx interpreter. The developers intend to make it 100% compliant with the ANSI Rexx standard. It has been ported to OS/2, MSDOS, Windows 95, Windows 98, Windows NT, Amiga, QNX, BeOS, OpenVMS, etc.
Ruby Programming Language
This is an interpreted scripting language designed for "quick and easy object-oriented programming." It has facilities to process text files and do system management tasks. Its syntax was partially inspired by Eiffel and Ada. Supported operating systems include Windows, Unix, DOS, Mac, BeOS, OS/2 etc. It even does OS independent threading.
D++ Scripting Language
D++ is a scripting language that supports I/O, expressions, loops, functions, etc. It comes with an IDE, and compiles your code to EXE for execution on a Windows machine. It is an open source (Visual Basic?) application. The compiler and language was created by a 13 year old child.
Euphoria
From their website, Euphoria is "a simple, flexible, and easy-to-learn programming language" that allows you to develop programs for DOS, Windows and Linux. It provides things like subscript checking, uninitialized variable checking and other runtime checks. It has apparently even been used to develop 32 bit games for DOS.
Icon
To quote from the FAQ, "Icon is a very high level general-purpose programming language with extensive features for processing strings (text) and data structures." It runs on MSDOS, Unix, Windows 3.1, Windows 95, Windows NT, Macintosh, VAX/VMS, Amiga, and the Acorn Archimedes. Older versions are available for the Atari ST, IBM CMS and MVS and OS/2. There is also a Java implementation called JCON that generates Java classes which can be executed in a Java virtual machine.
JAL
JAL, or Just Another Language, is a high level language for Microchip PIC 16x84 (16c68 and 16f84) and Scenix SX (SX18 and SX28) microcontrollers. It is Pascal like, and its libraries are released under the GNU LGPL licence. Versions are available for Linux, Windows and Mac OS X.
POW! Programmers Open Workbench
This integrated software development environment for Windows allows you to generate native Windows applications using Oberon-2, and it includes an Oberon-2 compiler. The IDE also supports Java and C/C++. The Oberon-2 compiler is a full implementation of the language and comes with the Oberon-2 library OPAL which allows you to create Windows programs without having to directly access Windows API.
R
R (a.k.a. GNU S) is a language and environment for statistical computing and graphics. R's implementation of the S language "provides a wide variety of statistical and graphical techniques (linear and non-linear modelling, statistical tests, time series analysis, classification, clustering...)". It is a true computer language and it has support for control flow, facility for adding new functions, and the ability to call C or Fortran code.
SmallEiffel: The GNU Eiffel Compiler
This is the GNU Eiffel compiler, which can compile to C or Java bytecode. For those not familiar with Eiffel, it is an object-oriented programming language. This implementation supports Linux, GNU HURD, BSD, HP-UX, IRIX, XENIX, Solaris, DOS, OS/2, Windows NT/95, Macintosh, NeXT, Amiga, VMS, BeOS and possibly other Unices. You can get more information on Eiffel from the Eiffel FAQ.
JFS
JFS comprises a compiler, a "runner" (runtime component?), "converters" (translates to C and HTML/JavaScript), learning tools (using evolutionary algorithms, Id3, and the Wang-Mendel method), "inverse compiler" (decompiler?) and source code for writing programs in the programming language Jfl, which is a "special-purpose language for function-writing" that "combines traditional features with fuzzy logic and machine learning".
MZScheme
MzScheme is an implementation of the Scheme programming language. Supported platforms include Windows 95, 98, NT, MacOS, Unix, and BeOS. The website notes that it is R4RS compliant and nearly R5RS compliant and provides support for pre-emptive threads (all platforms), generative structures (record data types), built-in exceptions, compilation units, object oriented system, regular expression matching, simple TCP communication, portable filesystem access, platform specific process control (including AppleEvent support), etc. You can compile your source code to either intermediate byte code or C source (which can be used to generate a native code binary or executable).
Mercury
A logic/functional programming language that "combines the clarity and expressiveness of declarative programming with advanced static analysis and error detection features." The compiler generates C code.
Kiev
This compiler is able to generate Java bytecode from extended Java source code with embedded Prolog source code. Extensions to the Java language include a Prolog-like engine, multimethods, parameterized types, closures, multiple inheritance by interfaces and delegation, arithmetic types, type states and cases, overloaded and user-defined operators, foreach statement, switch statements for types, goto, global method and variables, enum, virtual fields, variable number of arguments, packed fields, bit-fields, etc. It is now open source.
Xscompiler
This MSDOS compiler generates 32-bit protected mode programs from a language that is C compatible, but includes classes and multiple inheritance. It comes with the standard C library, graphics, sound, multitasking, compression, animation, GIF, PCX, FLI/FLC, and other libraries. The compiler itself is compiled using this language.