David, I'm not much of a Scala expert - I've read thru the docs and played around with it, but haven't written any real projects with it. So I'm not too qualified to compare Fan to Scala, but I'll given it a whack:
A primary goal of Fan is enable writing software which is portable between the JVM and CLR. To give you an example, we bit off writing our our own DateTime and TimeZone handling to ensure exact portability b/w the two platforms (because .NET doesn't use Olsen timezones). Another example is we wrote our own build system, so that build scripts aren't dependent on a Java tool like Ant. I know Scala runs on .NET - but is that one of the goals of Scala? I'd be really interested in hearing more about how Scala is tackling some of these problems. Fan is really about the libraries, not the syntax - the syntax only exists to aid the libraries. We tried to basically stick with Java/C# syntax and just fix a few warts. So I would say Fan is really a much closer descendant of Java/C# than Scala which has a syntax somewhere between Java and Haskell. One of Scala's most interesting features is it type system, where as Fan's type system is pretty boring. Scala is trying to provide an elegant solution to static typing. Fan's approach is to just drop down to use dynamic typing whenever the type system gets in the way. So I think Fan sits on the static/dynamic spectrum somewhere between Java and Ruby/Python. I think any new language on the JVM will probably be multi-paradigm - both OO and functional. In fact even Java and C# seem to be moving that way. So I don't think that will end up being a distinguishing feature. Rather key differences will be in features like the type system and libraries. I'm a framework guy, so over the next few years you'll see most of my effort in the libraries versus the language syntax (which we hope to keep relatively simple and stable). For example, my experience has been that maintaining an indexed database of installed types effects how you design libraries (such as a webapp framework) even more than language syntax does. So I think the divergence really happens in the upper layers of the stack. What is awesome is the ability to build languages like Fan and Scala to leverage the JVM and HotSpot. One thing I really wish Java would solve is the keyword problem - for example if a Fan class declared a method called "import", then it wouldn't be usable in Java. C# solves with the @ symbol. But other than that minor annoyance, I personally think the JVM is a much better platform for alternate languages than .NET. Some of the new stuff should be really exciting. Brian --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "JVM Languages" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/jvm-languages?hl=en -~----------~----~----~----~------~----~------~--~---
