Thanks David. Your response was thoughtful and thorough which was
exactly what I was hoping for. I did not want to start a language war.
I have read good chunks of your Scala book and also Programming in
Scala. I really like the language so far - just struggling to get it
all through my thick skull and wanted to confirm that the investment
was worth it. As I said, I really like the ideas in the Lift framework
and am seriously considering using it for an upcoming project instead
of Rails (the client does not care, and life might be easier using
some Java libaries). For now, a new framework in Clojure will have to
wait. :)
- Mark
On Jun 1, 2009, at 12:15 PM, David Pollak wrote:
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
-~--~~~~--~~--~--~---