The SMUSHcode project is a Java-based interpreter for a functional scripting language that is designed to be more flexible than procedural languages.
Currently, SMUSHcode exists as a functional solution that is not necessarily needed for anything. However, the software works exceptionally well and is highly extendable. People learning the programming language can only rely on the examples and the EBNF to learn it. That being said, the API documentation is remarkably detailed and a great way to learn javadoc. One thing to note is that the API documentation refers to the language as SMUSHcode75 for reasons that are no longer clear.
SMUSHcode is designed to be a functional scripting language. If you're familiar with LISP or Scheme, you'll find it easy to pick up. However, newer and self-taught programmers may have difficulty with it since the language is based on the idea that everything is a function and every function returns a value. This approach is different from procedural programming, where you might do A, then B (unrelated to A), then C (unrelated to A and B). Instead, functional programming uses a model where you do A, then use A's result to do B, and then use B's result to do C.
For example, in a procedural language, you might evaluate the Pythagorean theorem using four steps. However, a functional language would evaluate it in a single step. The author had never studied functional programming but later learned Scheme and found it oddly familiar.
One interesting aspect of SMUSHcode is its GNUmakefile. This was created before the Ant project was available, and it dynamically explores a package structure, rebuilds class files as necessary, runs javadoc, and creates JAR files. The GNUmakefile is fully documented and easy to customize. The software requires Java JDK 1.2.0 or better to run.
Version 20030211: N/A