[Lift] Re: Could Lift have been implemented in another language?

2009-06-01 Thread David Pollak
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
-~--~~~~--~~--~--~---



[Lift] Re: Could Lift have been implemented in another language?

2009-06-01 Thread Mark Lynn

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
-~--~~~~--~~--~--~---