I currently program in Perl, Python, C#, C, C++, Java, and a few other languages, and I'm looking for a new language to use as a primary when doing personal projects.
My current criteria are:
- can be run as an interpreted language (i.e., run without having to wait to compile it);
- can be compiled to native code;
- are strongly typed (even if optionally);
- support macros/templating/code morphing/wtf you want to call it;
- has a decent number of libraries for it, or easily accessible to it;
Ideas? Suggestions?
Scala? It does run scripts, although they are compiled (transparently) first. I'm not sure what you mean by code morphing etc, but it's pretty good for DSLs. It meets all your other requirements - compiled as much as Java is, strongly typed, and has a reasonable number of its own libraries as well as all of Java's. I'm still a beginner with it, but I like it so far.