On Mon, Jun 1, 2009 at 8:47 AM, Mark Lynn <m...@sabado.com> wrote:

>
>
> This question is not intended to be inflammatory in any way. I have
> been developing web applications in Ruby on Rails for the last two
> years, and have recently been exploring Scala and Lift because of a
> growing dissatisfaction with Rails. I very much enjoy Ruby and
> appreciate the influence that Rails has had on other frameworks, but I
> have been increasingly frustrated with the Rails approach to MVC as my
> views have become more complex (which is the norm now). Anyway, this
> concern is what attracted me to Lift and its view-first approach which
> I think is superior.
>
> Having said that, I have been impressed with Scala, but find it
> somewhat difficult to grok compared to Ruby which always felt very
> natural to me. I'm not sure, but suspect this is because Scala
> attempts to do so much (object oriented, functional, type system,
> etc.). In what seems like a lifetime ago, I used to program in Lisp
> and say what you will about the parentheses, but you could go a long
> way with a relatively small number of concepts and a simple syntax.
> So, my question is whether something comparable to the Lift framework
> could be conveniently written in another language or is there
> something fundamental about Scala that makes Lift uniquely possible?
> By the way, I realize that the arguments against Ruby are generally
> performance and lack of support for concurrency, but what about other
> languages? In what way does the Lift approach uniquely benefit from
> Scala?


Lift could be implemented in another language, but Lift does make heavy use
of Scala.

Lift makes use of Scala's pattern matching and extractors for a lot of
customization.  This is type-safe, performant, declarative, and generally
works very, very well.  There are no other languages that have Scala's
flexible pattern matching and extractors, so one would lose this important
set of constructs in porting Lift to another language.

Lift binds functions to GUIDs on the HTML page.  This could be done in any
language that has concise functions (e.g., Ruby, Python, Lisp, etc.)

Lift uses Actors for long-running server-side components.  Actors could be
built in other languages, but without Scala's flexible pattern matching, the
Actors would not be as clean.  Lisp (and I presume Clojure) have similar
concepts and could these Actor things could be used in a similar way.

XML literals and immutable XML support.  This is pretty much library-level
stuff, but the Scala libraries have gotten XML more right than any other
language I've seen (notably OCaml which I looked at for a while before
coming to Scala.)

Monadic stuff like Option and Box are an important part of Lift's concepts
as are the for comprehensions.  These are available (or could be written) in
a fair number of languages.

The J/EE infrastructure is a key part of Lift... being able to use large
swaths of the Java/JVM tool chain is very important to performance and
manageability.

So, I'm guessing a Lift-like framework could be built best in Clojure.
Personally, I like the type-safety of Scala.  I find that my Ruby idioms
translated nicely to Scala idioms.  I've done a fair amount of dynamic
language coding and well-typed language coding and I find that a good type
system is worth its weight in gold to me.

So, if you're a Lisp guy, how about writing a Lift-like framework in
Clojure... I bet it can be done.

Thanks,

David


>
>
>  - Mark
>
>
>
> >
>


-- 
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Git some: http://github.com/dpp

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to