Scala: a new language for rapid development?
scala-lang.orgAlso check out the lift web framework, written in Scala
Highlights (from link):
Advanced Framework
Lift has a number of great features for web developers. Many inspired from existing frameworks like Seaside, Rails, Django, TurboGears, and Wicket:
* Comet support is easy to add and scalable
* Mapping between databases and code is easy (Rails)
* Content and code are well separated (Wicket, TurboGears)
* Forms are secure by default (Seaside)
* Convention over configuration is emphasized, no xml hell (Rails)
* Component model makes pages elements easier to create and maintain (Wicket)
* Prebuilt classes are provided for standard functions, e.g. User (Django)
* Semantic information carries from model to enable smart display. e.g. postal code, social security number, email address
* State machine support for model objects, including timeouts. e.g. after 3 days w/o confirmation, delete this new account
* Site Map provides site wide navigation and access control support For a while, they called Scala the ocaml-killer. Because it is fully interoperable with Java, it enjoys a huge standard library, which is one of the main pitfalls when writing ocaml code. I'm not sure it ever really caught on, though. Scala is a nice functional language with a rich type system built on java byte code, and is similar in concept to Microsoft's offering on the .NET platform: F#
Scala also compiles down to CLR (.NET) bytecode, though granted the support for CLR is not nearly as good as the support for JVM.
I think the comparison to F#/ocaml is only skin-deep. Scala does have type inference, which saves a lot of typing compared to Java. For example, in Java one might write:
In Scala one can get away with:IWidgetClassFactory factory = new WidgetClassFactory();
The parens are optional. There as no type declaration for "factory", yet the language is still strongly typed, so the type of "factory" is inferred at compile-time. In many ways Scala code "feels" like Ruby (in the brevity and expressivity of its syntax), but strong type-checking means you avoid bugs (at compile-time) that in Ruby you'd have to catch with extensive unit tests or total system failure every now and then.val factory = new WidgetClassFactoryScala also has a sophisticated Actor library based on Erlang's actors. Scala's extensible syntax means that the following is valid Scala code (and was implemented as a -library-, it's not part of the language specification).
Actors are lightweight, so you can spawn hundreds of thousands of them on a single JVM, yet (unlike Ruby) they run on top of system threads, so you get real concurrency. This is unbelievably awesome for web development. Imagine keeping an actor thread alive for every logged in user to your site. Combine this with Ajax/Comet and you can "push" any updates out to the user as they become available.val response = myActor !? requestAnyway, I'll stop raving, but check out Scala by Example (link elsewhere in the comments) and the lift web framework written in Scala (link elsewhere in the comments).
I think you mean statically strongly typed. I think python is strongly typed, but dynamic.
Yes, my bad.
Boo, that's just a link to the website. I want my vote back! :/
See how far you can get through this:
i prefer lol-code on monorails for my prototypes