[quote]Anyone care to review them all ?
[/quote]
Sure. No problem. I’ll give it a try.
First section, precompilers, not suitable for scripting, -6.
Second section, tcl, a scripting language famous for its UI toolkit “tk”. Both links refer to the same implementation, -1. Quite usable, if you like tcl (I don’t). +1
Third section, functional programming, all implementation not suitable, -5.
Next section, Lisp and co, contains some (IMHO) interesting candidates - if you like Lisp (I do). I don’t know Jatha which seems to be quite new. Documentation link on SF page gives a 404 though. The big four are Bigloo, SISC, Kawa and JScheme - most other links are unfinished or experimental, -11. Bigloo just generates Java (or .NET) bytecode but isn’t written in Java so it’s not really suitable as a scripting language. JScheme once started as SILK (Scheme in less than 50k) and is still small and therefore probably an interesting candidate. But it’s slow. Kawa compiled Scheme source dynamically to class files. SISC is still an interpreter, but a more sophisticated one and faster than JScheme (but kawa is still faster) - and it come with a large lib. However, IMHO for a good integration into a Java application, not the completeness of the Scheme implementation is important but size, performance and extensebility. As I’d always prefer a true OO languages, I’d choose neither implementation. +3
Basic, next section, boring. One link is a converter, another link gives a 404, I know of no Basic suitable to embed into Java Application. Something VBA/VBScript compatible would be an interesting project, though. -8.
Starlogo is really nice and a powerful language, but not embeddable. I never really tried the other 4 implementations but checked them out before I tried to create a tiny logo for fun. So I don’t think, that one of the links is suitable as an embedable scripting language. -5. And, there’re better languages than logo. As you might know, logo has much in common with Lisp/Scheme - just a different syntax. A very interesting language with a similar syntax is Rebol - not available for Java though - I once tried to create a Rebol interpreter but lost interest when I eventually started to dislike aspects of that language.
Next section, logic progamming. Postly prolog. Very suitable for embedding (at least a few implementations listed here, I once tried W-prolog) but not really what you’d call a scripting langague - too strange, too different is the declarative paradigm from the imperative paradigm. Quite a few links point languages not written in Java, JESS is an expert system shell, -16.
I can’t say anything to Eiffel. But both projects look like they’re compilers not embeddable into a Java app. -2.
Smalltalk: Perhaps because that’s my favorite language, I put the bar very high here, but simply forget the first. Talk2 tried to rebuid a Smalltalk environment and the project never took off and it seems they try to hide it. Bistro is a bastard with IMHO got all the bad features from Smalltalk combined the even worse features from Java
That’s not Smalltalk anymore. No project is embedable. -3
Various OO languages, only a few comments: Self is a really cool language (the Self research project took place from 1987 to 1995) and its VM was the base for the Java-Hotspot-VM. Some guys of the Self project continued to work on its (IMHO) ground breaking ideas and created Cecil - an even cooler language
Self is a condensed, class-less, prototyp-based Smalltalk variant. Cecil combines the prototype-based approach with a tiny bit of functional programming and the powerful OO model of CLOS/Dylan. BTW, JavaScript a child of Self. As is NewtonScript, the scripting language for the Apple Newton computer, the first PDA. dSelf is a Self system created in Java as a Master Thesis (or PHD, I don’t remember) with remote - distributed - objects.
If you haven’t checked it out, give Nice a look. Created by some French guys (related to the OCaml project I think) this languages combines Java with much needed functional and OO features. Basically, it’s a crossbreed of Cecil and Java which lost the prototype though. They added a real static typsystem, multimethods and some other nice featues, keeping compatibility with Java.
But nothing to embed. -13. Let’s not talk about Ada or Cobol. -3.
Finally, section Scripting. Creating a scripting language based on XML is a violation of mind. A scripting language shall be easy to real for humans, but XML isn’t. It’s easily parsable for computers. A scripting language should also IMHO be at a hight abstraction level than the languages used to create the base components - otherwise you wouldn’t need an additional language. The only excuse might be that the base language isn’t dynamic. But’s that’s a problem of that language… JRuby would be my favorite but it seems that project is dying or died already. Otherwise, Ruby combines the best features of Smalltalk and (gasp) Perl with in a syntax which is IMHO very readable and even better than Python. It allows very high level abstractions thanks for blocks (aka closures), allows meta programming (everything is an object you can programm in the language) and still looks like the familiar Basic for the casual programmer. BSF, BTW, isn’t a scripting language at all but an API you can use in your application to make the scripting language plugable - similar to the Microsoft Scripting Host. I dislike C-like languages (it’s enough to have Java C-like) and I don’t think that a Forth-like are easy enough to use (although they’re interlectual fun to use and to create). Forget FESI.
From that most important section, the usable alternatives IMHO are: DynamicJava, Rhino, BeanShell, Jython and Pnuts.
Use the first, I you think, that using the same Java syntax as a scripting language is a good idea. Use Rhino if you think that JavaScript is a kind of standard (actually it is: ECMA262
and people might know this from Webbrowsers, Flash, etc. Use Jython if you like Python. And you Pnuts or BeanShell if you want a java-like, but slightly more dynamic language a lot of other people also use… Or use JScheme or Kawa.
I already used Pnuts and Rhino as embedded language and both work great. I don’t really like neither language. Pnuts is somehow boring and I used it mainly because it’s a very compact system, less than 100k and I couldn’t convince the customer to use Jscheme
Rhino would be my favorite because of the standard-argument but I dislike that this language does this: “1” - “1” = 0, “1” + “1” = “11”. Overloading the “+” for strings in combination with JavaScripts automatic type conversion was IMHO a very bad idea. Jython is too big for my taste to embed and the language might be too powerful. I’d probably talk different here if Ruby - which I prefer over Python - would be available.
The remaining sections doesn’t list scripting/embedable languages. So there aren’t 173 languages but only 8.
For a long time now I’m on a quest for the (at least my) perfect scripting language. I checked out quite a few languages and tried to implemented interpreter for a few of them. The language needs a tiny core and must be extentable. It should be human reable (otherwise, I’d pick Scheme), should feature true OO, higher order functions and it would be nice especially for games if you could embed a tiny rules engine, oops, again Lisp). Besides Scheme, Smalltalk is a good candidate but still, Ruby has a more familar Syntax. I’d pick Dylan because of its more advanced OO, but I like neither the original Scheme-like Syntax nor the Pascal-like language Apple gave that language later. And I’d like to have an optional static type system for that language and this isn’t available (perhaps even possible) for Dylan. I’ve seen the static type systems for Haskell or Cecil and, well, I feel that no average programmer can ever learn this. I experimented also with clones or Rebol and Curl, with Self and Lua but every time, I found something I didn’t like and abandoned that language. Therefore I’ve half-finished implementations of Java-Interpreters for most languages I mentioned
I wanted to recreate existing language to not have to create documentation/tutorials…
So if anybody wants to discuss pros and cons of languages or create one or two, I’m happy to help, advance, discuss this matter.
My goal for the scripting (besides usage in “commercial” programs) would be the game logic of a turn-based (web based) strategy game engine, think of PB(E)M games for exmple.
PS: It’s Smalltalk with a lowercase t. You don’t write JaVa, do you? 