On Sat, Apr 19, 2008 at 1:30 PM, Brian Frank <[EMAIL PROTECTED]> wrote:
> > 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. Thanks for the deep discussion. I don't speak for the Scala team, but I understand that CLR support is very important and is part of the current 2.7.0 release and is planned for future releases (there exist some Scala CLR based projects in the wild.) It might be worthwhile for you to chat with the Scala folks (who are very welcoming) about writing a unified library layer under Scala for both JVM and CLR... that'd save you the effort of writing and maintaining a language (which is what the Scala guys are very good at.) If you're in the Bay Area or are going to be at JavaOne, maybe we can talk as well. There may be interesting things to be done with your work and the work we're doing with lift. Thanks, David > > > Brian > > > -- Scala lift off unconference, May 10th 2008, San Francisco http://scalaliftoff.com lift, the secure, simple, powerful web framework http://liftweb.net Collaborative Task Management http://much4.us --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
