David,

I think your response was well measured and appropriate. The analogy  
of linguistics is a good one :-)

Without wanting to diverge this thread, can I ask why it is your  
unhappy with Record? Its been fairly fun to use so far and appears to  
work well.

Cheers, Tim

On 22 Oct 2009, at 17:04, David Pollak wrote:

> I've drafted a couple of different versions of a response to this  
> message and they all seem somewhat mean and/or condescending... that  
> is not at all my intent... here's another draft and please read it  
> as acknowledging the challenges you are articulating, but suggesting  
> a different perspective on the issue.
>
> Lisp/Scheme/Clojure is syntactically the simplest language around.   
> Yet, when I look at Clojure code, it to a great degree seems complex  
> to me, even though I know it's not.  I believe this is because the  
> patterns are different than those I've rehearsed through my journey  
> of asm, Basic, C, ObjC, C++, Java, Ruby, and Scala.  Rehearsing a  
> different paradigm is part of making that paradigm part of you.
>
> When I studied French in grade school and high school, I was  
> flummoxed and quite angered by gendered nouns.  As a native English  
> speaker, a table is an it, not a she (or he.)  But fluent French  
> speakers make gendered nouns a normal part of the language, and once  
> skilled can use these subtleties with great skill.
>
> My 2 year learning curve for Scala can be summed up in the first 4  
> (or maybe 5) chapters of Beginning Scala.  I sought to present my  
> painful learning curve in < 150 pages that could be reasonably  
> consumed by a Java or Ruby or Python coder in a week or two.  Yeah,  
> it still takes a fair amount of practice, rehearsal, to be  
> proficient, but if someone had led me down the path that I led my  
> readers down, I think my pain-curve would have been 3-4 months, not  
> two years.
>
> Put a different way, the Programming in Scala folks passed a couple  
> of drafts of the first chapters of their book by me early on.  I  
> think PinS is a tredmendously awesome work, but I objected strongly  
> to the "show imperative first and gently migrate to functional"  
> approach they took.  I thought it did a significant disservice to  
> their readers.  I took the opposite approach in BegSca... the second  
> substantive example covers a broad spectrum of functional programming.
>
> So, getting to some of the substance of your post, as Tim pointed  
> out, the "_" is a running joke in Scala-land.  Yep, it's way  
> overloaded.  Every time (and this happened at both Scala Lift Offs)  
> Martin tries to justify the "_"'s use, people roll their eyes.
>
> On the other hand, the example that you gave is one of my proudest  
> moments in Lift.  Specifically, I think Mapper is a steaming pile of  
> something.  I am really dissatisfied with it (although we followed  
> the same paradigm with Record and I'm unhappy with that as well...  
> mostly from the mutability standpoint).  On the other hand, the  
> graceful way that Mapper deals with validators (they are functions  
> and they are declared as a List that can be dynamically generated)  
> is something that I look at and remember it being the first time I  
> really felt like I "got" the power of Scala.  When I developed that  
> paradigm, I genuinely felt like Lift was going to be something  
> different and better.
>
> So, I am truly sorry that you and others are struggling with Scala  
> (yeah, everyone other than Martin and Adriaan and a few others  
> struggle with Scala's type system, but most people didn't get  
> General Relativity early on either) and I hope that we can present  
> materials to you in a way that helps minimize the struggle.
>
> Thanks for sharing your thoughts and I hope this message has struck  
> the tone I intend it to.
>
> David
>
> On Wed, Oct 21, 2009 at 10:13 PM, jlist9 <jli...@gmail.com> wrote:
>
> override def validations = validPriority _ :: super.validations
>
> This is a more of a comment about Scala than one about Lift - this  
> does
> look cryptic to me. And this is just one of the simpler syntax that  
> confuses
> people, who are new to the language. And I'm one of them.
>
> Interesting... this is one of the constructs in Lift that I find  
> simple (and almost always have found simple).  It's adding a  
> validator to a list of validators.  Having validators as functions  
> was an early (while my mind was still mostly Java/Ruby) construct  
> that, when I look at it says, "this was something that still  
> works."  Mapper's general use of mutability, on the other hand, is  
> something that very much does not work (although the syntactic cost  
> of doing something else is still too high.)
>
>
> I understand that you don't have to learn all the tricks/syntax to  
> start
> coding in Scala but you do have to understand it when you read
> source code of libraries written by someone with much more advanced
> language skills.
>
>
> In this particular case, building an immutable list of of a new  
> element and a prior element and the syntax for turning a method into  
> a function are both very core concepts in Scala (and pretty core in  
> Ruby as well, although the syntax is different).  I do not view  
> these as any more advanced than overriding methods in Java.
>
> The Scala skills needed to understand and consume most of Lift's  
> APIs should not be part of the advanced piece of Scala.  The  
> advanced piece of Scala has to do with the type system and its  
> interaction with OO.  You can see the challenges that these advanced  
> pieces of Scala pose to folks in the way the new collections are  
> being re-written.  This is the hard stuff in Scala.  Cons cells,  
> immutable lists, and promoting methods to functions are not tough  
> concepts.
>
> In David's book he says "After more than two years of coding  
> Scala, ...
> My brain has finally stopped hurting." This sounds like a very high
> barrier to entry.
>
> Yeah... that was more of a statement about the change in thought  
> processes.  I distilled most of the painful concepts into the first  
> 4 chapters of the book.  It took a very, very long time to unlearn  
> beans/getters/setter (this was my default way of programming from  
> age 12 to age 42).  If the first 4 chapters of the book resonate  
> with you, if you can practice them comfortably, then you are over  
> the part where my brain hurt a lot.
>
> To be fair, my brain started hurting when I started coding in Ruby  
> and I discovered closures.  Ruby's syntax for dealing with closures  
> sucks (a max of one per method call, it may or may not be a method  
> parameter, etc.)  But it was a sea change in the way I approached  
> programming.  But if you're already a Ruby coder, you're familiar  
> with passing functions... much of my painful switch-over is  
> something you've already experienced.
>
>
> I'm just wondering why Scala has to be so complicated.
>
> There are two Scalas.  The Library Consumer part of Scala which is  
> less complex conceptually an syntactically than either Ruby or  
> Java.  The Library Producer (types, type bounds, path dependent  
> types, implicits, view bounds) that are complex, but I've tried to  
> shield most of that from the casual users of Lift.  From a syntax  
> perspective, Scala is less complex that Java and far, far less  
> complex than Ruby (just talk to Charlie Nutter who re-implemented  
> Ruby's parser in JRuby.)
>
> I'm sure a lot
> of things in Scala have their reasons but at the mean time I also
> suspect that many of the odd things are there to reduce
> typing, which is advertised as one of the advantages of this  
> language -
> conciseness. (I could be very wrong due to my lack of understanding.)
>
> It depends on what strikes you as odd.  Please see my next comment.
>
> If the latter is true, I feel that I'd rather type a little more to  
> make the
> code easier to read.
>
> Interesting... I find Clojure hard to read.  It's mostly because I  
> don't have a Lisp/Scheme background and I don't know the common  
> function names ("my other car is a cdr").  To me, that's not  
> complexity, that's rehearsal.  I had the same problems going from  
> Java to Ruby.  The syntax, common method names, etc. were different  
> and needed to be learned (I can't tell you how many times I was  
> bitten by not being able to do: "Hello " + 33 (TypeError: can't  
> convert Fixnum into String)... for a dynamic language that ain't so  
> dynamic).  Ruby's terrifically complex syntax requires year and  
> years to master, although most of it is simple enough to pick up in  
> a few weeks.  Ruby's meta-programming
>
>
> Just feeling a little frustrated learning Scala. I think it's much
> easier learning
> Java. Not much surprise. Not sure if anyone shares my experience
> (and opinion, if there is one.)
>
> On Wed, Oct 21, 2009 at 3:56 PM, Randinn <rand...@gmail.com> wrote:
> >
> > http://localhost3000.de/2009/10/a-quick-glance-at-lift/
> >
> > The site above is a blog post from a Rails developer, he had some  
> good
> > and bad things to say about Lift and since I do not know enough to
> > debate with him I thought I'd post it here.
>
>
>
>
>
> -- 
> Lift, the simply functional web framework http://liftweb.net
> Beginning Scala http://www.apress.com/book/view/1430219890
> Follow me: http://twitter.com/dpp
> Surf the harmonics
>
> >


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