This page is no longer maintained — Please continue to the home page at www.scala-lang.org

Is Scala an expert language?

74 replies
De Gao
Joined: 2009-08-10,
User offline. Last seen 42 years 45 weeks ago.

Hi List:
I'm a Java programmer. I've been study Scala language for more than a
year. I have interesting on it because I believe it is a 'future
language'. It has amazing features like both OO and functional,
powerfull static typing, etc.
But after a years study. I found out that I still can hardly write
some program in Scala fluently. Neither take the advantage of this
language. I'm thinking if I was wrong.
More language features will always make the language powerful but
make it hard to read as well. Especially for beginner. He have to deal
with quite a lot of those features at the beginning. Like the type
system, quite a lot of new keywords, you have to bump into it if you try
to use some Scala APIs. And the more you go deep into it, the more
complex it looks like. And eventually got frustrated.
I still believe Scala is an amazing language. But how could call it a
future language if there is few programmer start to use it?

Thanks
De Gao

H-star Development
Joined: 2010-04-14,
User offline. Last seen 2 years 26 weeks ago.
Re: Is Scala an expert language?

when i switched from java to scala, it was as if there was a clairvoiant
language designer which read my mind the past few years. almost every
language-incapable-of-doing-what-i-want problem i had in java was
suddenly solved. basically, i just had to learn a new but similar syntax
- many ideas were already there, and know i have an elegant way of using
them.

Am 05.12.2010 17:42, schrieb De Gao:
> Hi List:
> I'm a Java programmer. I've been study Scala language for more than
> a year. I have interesting on it because I believe it is a 'future
> language'. It has amazing features like both OO and functional,
> powerfull static typing, etc.
> But after a years study. I found out that I still can hardly write
> some program in Scala fluently. Neither take the advantage of this
> language. I'm thinking if I was wrong.
> More language features will always make the language powerful but
> make it hard to read as well. Especially for beginner. He have to deal
> with quite a lot of those features at the beginning. Like the type
> system, quite a lot of new keywords, you have to bump into it if you
> try to use some Scala APIs. And the more you go deep into it, the more
> complex it looks like. And eventually got frustrated.
> I still believe Scala is an amazing language. But how could call it
> a future language if there is few programmer start to use it?
>
> Thanks
> De Gao
>

Justin du coeur
Joined: 2009-03-04,
User offline. Last seen 42 years 45 weeks ago.
Re: Is Scala an expert language?
Honestly, I think this kind of misses the point.  I do think that trying to learn *all* of Scala is a bit challenging, and I wouldn't advise it for all programmers.  But it shouldn't be *necessary* to do so.
Scala is a very nicely layered language in many ways, and different features are appropriate for different people.  A good example is the more powerful aspects of the generics system.  Those are hugely useful to somebody writing libraries, and should be used by them -- but someone just turning out application code can, more often than not, ignore a lot of the fine details and it will Just Work.
Really, I think Scala's biggest problem right now is mostly pedagogical -- coming up with the right set of courses/books so that programmers can learn Just Enough of Scala to be productive, and only slowly layer on the more fun and interesting bits as they want or need to.  But emphasizing that you don't *have* to know the entire language in order to be productive with it.
(The point about more features making the language harder to read is well-taken, but only semi-true.  It's not that they usually make it harder to read, it's that they more often make it harder to 100% understand.  Well-written Scala tends to be very intuitive, but grasping *how* a program does what it does can be subtle if it's using a lot of the power features.  That's a tricky teaching problem, and I'm not sure what the best approach is...)

On Sun, Dec 5, 2010 at 11:42 AM, De Gao <gaode.ml@gmail.com> wrote:
Hi List:
 I'm a Java programmer. I've been study Scala language for more than a year. I have interesting on it because I believe it is a 'future language'. It has amazing features like both OO and functional, powerfull static typing, etc.
 But after a years study. I found out that I still can hardly write some program in Scala fluently. Neither take the advantage of this language. I'm thinking if I was wrong.
 More language features will always make the language powerful but make it hard to read as well. Especially for beginner. He have to deal with quite a lot of those features at the beginning. Like the type system, quite a lot of new keywords, you have to bump into it if you try to use some Scala APIs. And the more you go deep into it, the more complex it looks like. And eventually got frustrated.
 I still believe Scala is an amazing language. But how could call it a future language if there is few programmer start to use it?

 Thanks
 De Gao

De Gao
Joined: 2009-08-10,
User offline. Last seen 42 years 45 weeks ago.
Re: Is Scala an expert language?
I agreed that Scala is nicely layered language -- you can totally ignore the functional programing part and write full functioned program. But the problem is: how a beginner know that which part he should use at the beginning and which not when he almost know nothing about this language?
I don't think the courses/books make too much sense. Unless the getting start document state clearly that 'Do not use Scala until you read this document' and in the document says 'Do not try to use <some features> until you learn it for xx hours'.  I think the try and err is the only way to learn a new language. In this case Scala is very likely to make beginner disappoint.

On 05/12/2010 17:03, Justin du coeur wrote:
AANLkTin1_rb+rUToZ29GXRnOC0_TVnf0nANEG499tFjp [at] mail [dot] gmail [dot] com" type="cite">Honestly, I think this kind of misses the point.  I do think that trying to learn *all* of Scala is a bit challenging, and I wouldn't advise it for all programmers.  But it shouldn't be *necessary* to do so.
Scala is a very nicely layered language in many ways, and different features are appropriate for different people.  A good example is the more powerful aspects of the generics system.  Those are hugely useful to somebody writing libraries, and should be used by them -- but someone just turning out application code can, more often than not, ignore a lot of the fine details and it will Just Work.
Really, I think Scala's biggest problem right now is mostly pedagogical -- coming up with the right set of courses/books so that programmers can learn Just Enough of Scala to be productive, and only slowly layer on the more fun and interesting bits as they want or need to.  But emphasizing that you don't *have* to know the entire language in order to be productive with it.
(The point about more features making the language harder to read is well-taken, but only semi-true.  It's not that they usually make it harder to read, it's that they more often make it harder to 100% understand.  Well-written Scala tends to be very intuitive, but grasping *how* a program does what it does can be subtle if it's using a lot of the power features.  That's a tricky teaching problem, and I'm not sure what the best approach is...)

On Sun, Dec 5, 2010 at 11:42 AM, De Gao <gaode.ml@gmail.com> wrote:
Hi List:
 I'm a Java programmer. I've been study Scala language for more than a year. I have interesting on it because I believe it is a 'future language'. It has amazing features like both OO and functional, powerfull static typing, etc.
 But after a years study. I found out that I still can hardly write some program in Scala fluently. Neither take the advantage of this language. I'm thinking if I was wrong.
 More language features will always make the language powerful but make it hard to read as well. Especially for beginner. He have to deal with quite a lot of those features at the beginning. Like the type system, quite a lot of new keywords, you have to bump into it if you try to use some Scala APIs. And the more you go deep into it, the more complex it looks like. And eventually got frustrated.
 I still believe Scala is an amazing language. But how could call it a future language if there is few programmer start to use it?

 Thanks
 De Gao


Alec Zorab
Joined: 2010-05-18,
User offline. Last seen 42 years 45 weeks ago.
Re: Is Scala an expert language?

I think how you start with scala is very much personal - I came to it
from a physics background, having worked with c# 3 for about 6 months
on a different project (long enough that LINQ was second nature). For
me, Scala echoed a lot of the stuff I knew from F#, OCaml etc and so
the functional aspects made loads of sense to me.

I have colleagues from a java background who screw their faces up in
confusion when I start talking about nested monads, but they love the
power of the type system from an OO perspective.

I don't think there'll ever be a perfect way to teach, but I think a
pair of books "Scala for functional programmers" and "Scala for
imperative programmers" would be a good start!

On Sun, Dec 5, 2010 at 12:20 PM, De Gao wrote:
> I agreed that Scala is nicely layered language -- you can totally ignore the
> functional programing part and write full functioned program. But the
> problem is: how a beginner know that which part he should use at the
> beginning and which not when he almost know nothing about this language?
> I don't think the courses/books make too much sense. Unless the getting
> start document state clearly that 'Do not use Scala until you read this
> document' and in the document says 'Do not try to use until
> you learn it for xx hours'.  I think the try and err is the only way to
> learn a new language. In this case Scala is very likely to make beginner
> disappoint.
>
> On 05/12/2010 17:03, Justin du coeur wrote:
>
> Honestly, I think this kind of misses the point.  I do think that trying to
> learn *all* of Scala is a bit challenging, and I wouldn't advise it for all
> programmers.  But it shouldn't be *necessary* to do so.
> Scala is a very nicely layered language in many ways, and different features
> are appropriate for different people.  A good example is the more powerful
> aspects of the generics system.  Those are hugely useful to somebody writing
> libraries, and should be used by them -- but someone just turning out
> application code can, more often than not, ignore a lot of the fine details
> and it will Just Work.
> Really, I think Scala's biggest problem right now is mostly pedagogical --
> coming up with the right set of courses/books so that programmers can learn
> Just Enough of Scala to be productive, and only slowly layer on the more fun
> and interesting bits as they want or need to.  But emphasizing that you
> don't *have* to know the entire language in order to be productive with it.
> (The point about more features making the language harder to read is
> well-taken, but only semi-true.  It's not that they usually make it harder
> to read, it's that they more often make it harder to 100% understand.
>  Well-written Scala tends to be very intuitive, but grasping *how* a program
> does what it does can be subtle if it's using a lot of the power features.
>  That's a tricky teaching problem, and I'm not sure what the best approach
> is...)
>
> On Sun, Dec 5, 2010 at 11:42 AM, De Gao wrote:
>>
>> Hi List:
>>  I'm a Java programmer. I've been study Scala language for more than a
>> year. I have interesting on it because I believe it is a 'future language'.
>> It has amazing features like both OO and functional, powerfull static
>> typing, etc.
>>  But after a years study. I found out that I still can hardly write some
>> program in Scala fluently. Neither take the advantage of this language. I'm
>> thinking if I was wrong.
>>  More language features will always make the language powerful but make it
>> hard to read as well. Especially for beginner. He have to deal with quite a
>> lot of those features at the beginning. Like the type system, quite a lot of
>> new keywords, you have to bump into it if you try to use some Scala APIs.
>> And the more you go deep into it, the more complex it looks like. And
>> eventually got frustrated.
>>  I still believe Scala is an amazing language. But how could call it a
>> future language if there is few programmer start to use it?
>>
>>  Thanks
>>  De Gao
>
>
>

Erik Engbrecht
Joined: 2008-12-19,
User offline. Last seen 3 years 18 weeks ago.
Re: Is Scala an expert language?
De Gao,Search the list archives for posts by Russ Paielli.  He's an aerospace engineer using Scala.  It's not exactly representative of the experiences an experienced Java programmer would have, but I think both his struggles and successes are illuminating.
One thing about the evolution of Scala that I find interesting is that over the few years I've been following I think there has been a distinct shift in the community from an "OO with some functional" style to a "functional with a dash of OO" style, and I think the shift has been largely independent of changes in the Scala language or its standard library.  It's just people discovering what seems to work best, a process that I think is far from over.
So there isn't anything about Scala that prevents it from being used as a more elegant version of Java.  It's just that most of the more vocal members of the community have stopped using it that way.
-Erik
On Sun, Dec 5, 2010 at 11:42 AM, De Gao <gaode.ml@gmail.com> wrote:
Hi List:
 I'm a Java programmer. I've been study Scala language for more than a year. I have interesting on it because I believe it is a 'future language'. It has amazing features like both OO and functional, powerfull static typing, etc.
 But after a years study. I found out that I still can hardly write some program in Scala fluently. Neither take the advantage of this language. I'm thinking if I was wrong.
 More language features will always make the language powerful but make it hard to read as well. Especially for beginner. He have to deal with quite a lot of those features at the beginning. Like the type system, quite a lot of new keywords, you have to bump into it if you try to use some Scala APIs. And the more you go deep into it, the more complex it looks like. And eventually got frustrated.
 I still believe Scala is an amazing language. But how could call it a future language if there is few programmer start to use it?

 Thanks
 De Gao



--
http://erikengbrecht.blogspot.com/
Kevin Wright 2
Joined: 2010-05-30,
User offline. Last seen 26 weeks 4 days ago.
Re: Is Scala an expert language?



I don't think there'll ever be a perfect way to teach, but I think a
pair of books "Scala for functional programmers" and "Scala for
imperative programmers" would be a good start!



The question is... Which one gets the black-on-white cover, and which one is white-on-black?
--
Kevin Wright

mail / gtalk / msn : kev [dot] lee [dot] wright [at] gmail [dot] com
pulse / skype: kev.lee.wright
twitter: @thecoda

Randall R Schulz
Joined: 2008-12-16,
User offline. Last seen 1 year 29 weeks ago.
Re: Is Scala an expert language?

On Sunday December 5 2010, De Gao wrote:
> "Is Scala an expert language?"

Programming is an expert activity. All its tools are for experts.

Dilettantes (or hobbyists, if you prefer) are not, in my opinion,
the concern of people creating or using Scala.

Randall Schulz

Erik Engbrecht
Joined: 2008-12-19,
User offline. Last seen 3 years 18 weeks ago.
Re: Is Scala an expert language?
>Programming is an expert activity. All its tools are for experts.
Experts in what?  A lot of people who write programs are experts in some field other than programming.  Many (most?) scientists and engineers need to know how to write small (and sometimes not-so-small) programs to do their jobs.  I think there are lots of fields where this is true.
This is not to say that they are professional software developers or software engineers.  For them programming is more a means of being able to pose a question to a computer, or instruct the computer on performing a repetitive task, than it is a matter of building a robust application that is useful to other people.
Programming is like reading and writing.  Most people can derive significant benefit from knowing the basics of how to do it, but very few will ever be skilled enough to do it professionally much less become great novelists.
On Sun, Dec 5, 2010 at 12:57 PM, Randall R Schulz <rschulz [at] sonic [dot] net> wrote:
On Sunday December 5 2010, De Gao wrote:
> "Is Scala an expert language?"

Programming is an expert activity. All its tools are for experts.

Dilettantes (or hobbyists, if you prefer) are not, in my opinion,
the concern of people creating or using Scala.


Randall Schulz





--
http://erikengbrecht.blogspot.com/
odersky
Joined: 2008-07-29,
User offline. Last seen 45 weeks 6 days ago.
Re: Is Scala an expert language?


On Sun, Dec 5, 2010 at 5:42 PM, De Gao <gaode.ml@gmail.com> wrote:
Hi List:
 I'm a Java programmer. I've been study Scala language for more than a year. I have interesting on it because I believe it is a 'future language'. It has amazing features like both OO and functional, powerfull static typing, etc.
 But after a years study. I found out that I still can hardly write some program in Scala fluently. Neither take the advantage of this language. I'm thinking if I was wrong.

If I may ask, what materials did you use to study Scala? There's a lot out there, but many of the more recent blog posts are oriented towards Scala experts, so a newcomer has many ways to get lost.

Thanks

 -- Martin

Alec Zorab
Joined: 2010-05-18,
User offline. Last seen 42 years 45 weeks ago.
Re: Is Scala an expert language?

It would also be interesting to know what languages you already knew
when you first started looking at scala, too. I have a personal belief
(for which I offer no supporting evidence) that scala has, in some
ways, more in common with c# 3 than it does with java 6 (eg lambdas,
limited type inference, a real collections system, extension methods).

On Sun, Dec 5, 2010 at 1:51 PM, martin odersky wrote:
>
>
> On Sun, Dec 5, 2010 at 5:42 PM, De Gao wrote:
>>
>> Hi List:
>>  I'm a Java programmer. I've been study Scala language for more than a
>> year. I have interesting on it because I believe it is a 'future language'.
>> It has amazing features like both OO and functional, powerfull static
>> typing, etc.
>>  But after a years study. I found out that I still can hardly write some
>> program in Scala fluently. Neither take the advantage of this language. I'm
>> thinking if I was wrong.
>
> If I may ask, what materials did you use to study Scala? There's a lot out
> there, but many of the more recent blog posts are oriented towards Scala
> experts, so a newcomer has many ways to get lost.
>
> Thanks
>
>  -- Martin
>
>

Seth Tisue
Joined: 2008-12-16,
User offline. Last seen 34 weeks 3 days ago.
Re: Is Scala an expert language?

>>>>> "Erik" == Erik Engbrecht writes:

>> Programming is an expert activity. All its tools are for experts.

Erik> Experts in what? A lot of people who write programs are experts
Erik> in some field other than programming. Many (most?) scientists
Erik> and engineers need to know how to write small (and sometimes
Erik> not-so-small) programs to do their jobs. I think there are lots
Erik> of fields where this is true.

Erik> This is not to say that they are professional software developers
Erik> or software engineers. For them programming is more a means of
Erik> being able to pose a question to a computer, or instruct the
Erik> computer on performing a repetitive task, than it is a matter of
Erik> building a robust application that is useful to other people.

Erik> Programming is like reading and writing. Most people can derive
Erik> significant benefit from knowing the basics of how to do it, [...]

Amen, brother.

Randall R Schulz
Joined: 2008-12-16,
User offline. Last seen 1 year 29 weeks ago.
Re: Is Scala an expert language?

On Sunday December 5 2010, Seth Tisue wrote:
> >>>>> "Erik" == Erik Engbrecht writes:
> >>
> >> Programming is an expert activity. All its tools are for experts.
>
> ...
>
> Erik> Programming is like reading and writing. Most people can
> derive Erik> significant benefit from knowing the basics of how to do
> it, [...]
>
> Amen, brother.

And what does that have to do with Scala? Is every programming language
to be designed with readability and understandability by members of the
general public in mind?

Sorry, I don't buy it. First things first here means what professionals
need takes strong precedence over what any other audience would like.

Randall Schulz

Kevin Wright 2
Joined: 2010-05-30,
User offline. Last seen 26 weeks 4 days ago.
Re: Is Scala an expert language?


On 5 December 2010 20:16, Randall R Schulz <rschulz [at] sonic [dot] net> wrote:
On Sunday December 5 2010, Seth Tisue wrote:
> >>>>> "Erik" == Erik Engbrecht <erik [dot] engbrecht [at] gmail [dot] com> writes:
>  >>
>  >> Programming is an expert activity. All its tools are for experts.
>
> ...
>
>  Erik> Programming is like reading and writing.  Most people can
> derive Erik> significant benefit from knowing the basics of how to do
> it, [...]
>
> Amen, brother.

And what does that have to do with Scala? Is every programming language
to be designed with readability and understandability by members of the
general public in mind?

Sorry, I don't buy it. First things first here means what professionals
need takes strong precedence over what any other audience would like.


Clearly there *is* a distinction to be made here.
After all, approaching the question from the other direction, BASIC, Pascal and LOGO were all consciously created with the primary goal of teaching programming (so not aimed at established expert practicioners)
Then again, so was Kojo, but Scala also supports the Scalaz library, which requires some pretty advanced understanding of category theory in order to understand.
Perhaps the only thing that can be stated with absolute certainty is that Scala is scalable - it's every bit as "expert" as you care to make it...

 --
Kevin Wright

mail / gtalk / msn : kev [dot] lee [dot] wright [at] gmail [dot] com
pulse / skype: kev.lee.wright
twitter: @thecoda

Erik Engbrecht
Joined: 2008-12-19,
User offline. Last seen 3 years 18 weeks ago.
Re: Is Scala an expert language?
By "professionals" I assume you mean "professional software developers/engineers who meet a certain threshold in their understanding of computer science and software systems and spend enough time actually writing software so that an investment in learning a complex new language and setting up a development environment can ultimately pay dividends in terms of productivity."
As opposed to "professionals" as in "people who earn their living programming" or "people who program as part of their job."
I don't think I have any problem with your assertion that "professionals" or "experts" need to take precedence.  But I think you need to define the types of "experts" and "professionals" that take precedence.  Otherwise too many people will self-identify as experts, have trouble with Scala, post about how Scala is too complex, and then be offended when someone says Scala is for experts or professionals.

On Sun, Dec 5, 2010 at 3:16 PM, Randall R Schulz <rschulz [at] sonic [dot] net> wrote:
On Sunday December 5 2010, Seth Tisue wrote:
> >>>>> "Erik" == Erik Engbrecht <erik [dot] engbrecht [at] gmail [dot] com> writes:
>  >>
>  >> Programming is an expert activity. All its tools are for experts.
>
> ...
>
>  Erik> Programming is like reading and writing.  Most people can
> derive Erik> significant benefit from knowing the basics of how to do
> it, [...]
>
> Amen, brother.

And what does that have to do with Scala? Is every programming language
to be designed with readability and understandability by members of the
general public in mind?

Sorry, I don't buy it. First things first here means what professionals
need takes strong precedence over what any other audience would like.


Randall Schulz



--
http://erikengbrecht.blogspot.com/
Roland Kuhn
Joined: 2008-12-26,
User offline. Last seen 3 years 14 weeks ago.
Re: Is Scala an expert language?

On Dec 5, 2010, at 21:16 , Randall R Schulz wrote:
> On Sunday December 5 2010, Seth Tisue wrote:
>>>>>>> "Erik" == Erik Engbrecht writes:
>>>>
>>>> Programming is an expert activity. All its tools are for experts.
>>
>> ...
>>
>> Erik> Programming is like reading and writing. Most people can
>> derive Erik> significant benefit from knowing the basics of how to do
>> it, [...]
>>
>> Amen, brother.
>
> And what does that have to do with Scala? Is every programming language
> to be designed with readability and understandability by members of the
> general public in mind?
>
> Sorry, I don't buy it. First things first here means what professionals
> need takes strong precedence over what any other audience would like.

Yes, and there are two kinds of “professionals”: computer scientists (I mean the real ones, which is imperfectly correlated with a university faculty of the same name) and all others who need to do programming in order to get their jobs done (e.g. high energy particle physics community). While the latter have to write code which produces the right result for a specific input set while being just clean enough to allow debugging, the former are capable of producing libraries and frameworks to be used by others. In a sense these groups are in a producer–consumer relationship. Can we agree that both are important?

Note how the “general public” does not appear in my previous paragraph. From my own experience I must conclude that any programming activity which is entirely private (meaning not motivated by business or contributions to other—sizable—projects) does not reach a significant level.

Now, what was the original question again: Is Scala only suited for “experts”? (I take this to mean the antonym to “beginners”.) I don’t think so, since it is possible to write beautiful libraries which are easy to use, albeit hard to understand internally (e.g. the Scala collections). What may be lacking are more resources like tutorials, blogs, etc. geared towards beginners, so that they can use the language without having to look under the hood. But my knowledge here is a bit outdated since I did no surveys wrt. this in the recent past.

Regards,

Roland

--
[scala-debate on 2009/10/2]
Viktor Klang: When will the days of numerical overflow be gone?
Ricky Clarkson: One second after 03:14:07 UTC on Tuesday, 19 January 2038

Russ P.
Joined: 2009-01-31,
User offline. Last seen 1 year 26 weeks ago.
Re: Is Scala an expert language?
I agree that some of the more advanced functional syntax in Scala can look rather cryptic to a non-expert. However, I personally have not yet been in a situation where I really need to understand that stuff, so I have not yet made a strong effort to learn it in depth. I would like to understand it, but I just have higher priorities at the current time.

Here's a suggestion for people who are trying to promote functional programming. I'd like to see more rationale for preferring the advanced functional syntax, particularly in tutorials. When you show how to solve a problem with advanced functional syntax, show the more pedestrian procedural or object-oriented equivalent, and explain the advantage of the functional form. Otherwise, you may just be showing off your cleverness but not your wisdom. If you can ride a unicycle, that may be impressive, but it doesn't necessarily mean that unicycles should replace bicycles.

As for when and where to use functional programming methods, that's the $64,000 question. I certainly don't claim to know the answer in general, but I suspect that functional programming is the best choice for some problems and not for others. That's why Scala supports object-oriented programming too. If Scala were purely functional, I doubt it would ever be more than a academic language. If functional programming were the best choice in all cases, then Haskell would be more popular and Scala would not be needed.

One of the things that has always bothered me about Java is that it forces everything to be object-oriented whether that makes sense in a particular context or not. As far as I am concerned, programming everything in functional form just for the sake of doing it is just as silly.

Russ P.


On Sun, Dec 5, 2010 at 9:20 AM, De Gao <gaode.ml@gmail.com> wrote:
I agreed that Scala is nicely layered language -- you can totally ignore the functional programing part and write full functioned program. But the problem is: how a beginner know that which part he should use at the beginning and which not when he almost know nothing about this language?
I don't think the courses/books make too much sense. Unless the getting start document state clearly that 'Do not use Scala until you read this document' and in the document says 'Do not try to use <some features> until you learn it for xx hours'.  I think the try and err is the only way to learn a new language. In this case Scala is very likely to make beginner disappoint.

On 05/12/2010 17:03, Justin du coeur wrote:
Honestly, I think this kind of misses the point.  I do think that trying to learn *all* of Scala is a bit challenging, and I wouldn't advise it for all programmers.  But it shouldn't be *necessary* to do so.
Scala is a very nicely layered language in many ways, and different features are appropriate for different people.  A good example is the more powerful aspects of the generics system.  Those are hugely useful to somebody writing libraries, and should be used by them -- but someone just turning out application code can, more often than not, ignore a lot of the fine details and it will Just Work.
Really, I think Scala's biggest problem right now is mostly pedagogical -- coming up with the right set of courses/books so that programmers can learn Just Enough of Scala to be productive, and only slowly layer on the more fun and interesting bits as they want or need to.  But emphasizing that you don't *have* to know the entire language in order to be productive with it.
(The point about more features making the language harder to read is well-taken, but only semi-true.  It's not that they usually make it harder to read, it's that they more often make it harder to 100% understand.  Well-written Scala tends to be very intuitive, but grasping *how* a program does what it does can be subtle if it's using a lot of the power features.  That's a tricky teaching problem, and I'm not sure what the best approach is...)

On Sun, Dec 5, 2010 at 11:42 AM, De Gao <gaode.ml@gmail.com> wrote:
Hi List:
 I'm a Java programmer. I've been study Scala language for more than a year. I have interesting on it because I believe it is a 'future language'. It has amazing features like both OO and functional, powerfull static typing, etc.
 But after a years study. I found out that I still can hardly write some program in Scala fluently. Neither take the advantage of this language. I'm thinking if I was wrong.
 More language features will always make the language powerful but make it hard to read as well. Especially for beginner. He have to deal with quite a lot of those features at the beginning. Like the type system, quite a lot of new keywords, you have to bump into it if you try to use some Scala APIs. And the more you go deep into it, the more complex it looks like. And eventually got frustrated.
 I still believe Scala is an amazing language. But how could call it a future language if there is few programmer start to use it?

 Thanks
 De Gao





--
http://RussP.us
De Gao
Joined: 2009-08-10,
User offline. Last seen 42 years 45 weeks ago.
Re: Is Scala an expert language?

On 05/12/2010 20:49, Roland Kuhn wrote:
> On Dec 5, 2010, at 21:16 , Randall R Schulz wrote:
>> On Sunday December 5 2010, Seth Tisue wrote:
>>>>>>>> "Erik" == Erik Engbrecht writes:
>>>>> Programming is an expert activity. All its tools are for experts.
>>> ...
>>>
>>> Erik> Programming is like reading and writing. Most people can
>>> derive Erik> significant benefit from knowing the basics of how to do
>>> it, [...]
>>>
>>> Amen, brother.
>> And what does that have to do with Scala? Is every programming language
>> to be designed with readability and understandability by members of the
>> general public in mind?
>>
>> Sorry, I don't buy it. First things first here means what professionals
>> need takes strong precedence over what any other audience would like.
>
> Yes, and there are two kinds of “professionals”: computer scientists (I mean the real ones, which is imperfectly correlated with a university faculty of the same name) and all others who need to do programming in order to get their jobs done (e.g. high energy particle physics community). While the latter have to write code which produces the right result for a specific input set while being just clean enough to allow debugging, the former are capable of producing libraries and frameworks to be used by others. In a sense these groups are in a producer–consumer relationship. Can we agree that both are important?
>
> Note how the “general public” does not appear in my previous paragraph. From my own experience I must conclude that any programming activity which is entirely private (meaning not motivated by business or contributions to other—sizable—projects) does not reach a significant level.
>
> Now, what was the original question again: Is Scala only suited for “experts”? (I take this to mean the antonym to “beginners”.) I don’t think so, since it is possible to write beautiful libraries which are easy to use, albeit hard to understand internally (e.g. the Scala collections). What may be lacking are more resources like tutorials, blogs, etc. geared towards beginners, so that they can use the language without having to look under the hood. But my knowledge here is a bit outdated since I did no surveys wrt. this in the recent past.
>
> Regards,
>
> Roland
>
> --
> [scala-debate on 2009/10/2]
> Viktor Klang: When will the days of numerical overflow be gone?
> Ricky Clarkson: One second after 03:14:07 UTC on Tuesday, 19 January 2038
>
Can we call some stuff is for 'expert' that you need to read quite a lot
of document to use it, like the Airebus A380, but some don't need to
read any document (or not so much document) to use it, like a dish washer?

Kevin Wright 2
Joined: 2010-05-30,
User offline. Last seen 26 weeks 4 days ago.
Re: Is Scala an expert language?


One of the things that has always bothered me about Java is that it forces everything to be object-oriented whether that makes sense in a particular context or not. As far as I am concerned, programming everything in functional form just for the sake of doing it is just as silly.

Russ P.

Enjoy: http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html  
--
Kevin Wright

mail / gtalk / msn : kev [dot] lee [dot] wright [at] gmail [dot] com
pulse / skype: kev.lee.wright
twitter: @thecoda

odersky
Joined: 2008-07-29,
User offline. Last seen 45 weeks 6 days ago.
Re: Is Scala an expert language?


On Sun, Dec 5, 2010 at 9:57 PM, Russ Paielli <russ [dot] paielli [at] gmail [dot] com> wrote:
I agree that some of the more advanced functional syntax in Scala can look rather cryptic to a non-expert. However, I personally have not yet been in a situation where I really need to understand that stuff, so I have not yet made a strong effort to learn it in depth. I would like to understand it, but I just have higher priorities at the current time.

Here's a suggestion for people who are trying to promote functional programming. I'd like to see more rationale for preferring the advanced functional syntax, particularly in tutorials. When you show how to solve a problem with advanced functional syntax, show the more pedestrian procedural or object-oriented equivalent, and explain the advantage of the functional form. Otherwise, you may just be showing off your cleverness but not your wisdom. If you can ride a unicycle, that may be impressive, but it doesn't necessarily mean that unicycles should replace bicycles.

As for when and where to use functional programming methods, that's the $64,000 question. I certainly don't claim to know the answer in general, but I suspect that functional programming is the best choice for some problems and not for others. That's why Scala supports object-oriented programming too. If Scala were purely functional, I doubt it would ever be more than a academic language. If functional programming were the best choice in all cases, then Haskell would be more popular and Scala would not be needed.

One of the things that has always bothered me about Java is that it forces everything to be object-oriented whether that makes sense in a particular context or not. As far as I am concerned, programming everything in functional form just for the sake of doing it is just as silly.

I wholeheartedly agree.

 -- Martin

Philippe Lhoste
Joined: 2010-09-02,
User offline. Last seen 42 years 45 weeks ago.
Re: Is Scala an expert language?

On 05/12/2010 18:03, Justin du coeur wrote:
> Scala is a very nicely layered language in many ways, and different
> features are appropriate for different people. A good example is the
> more powerful aspects of the generics system. Those are hugely useful
> to somebody writing libraries, and should be used by them -- but someone
> just turning out application code can, more often than not, ignore a lot
> of the fine details and it will Just Work.

I too have yet to write some real application with Scala, so far, I only
wrote small experiments.

Twitter #Scala is currently full of RT of:

> James Gosling on #Scala: "The most depressing thing on scala is [...]
> most people pick up scala as #java with more concise syntax"

I don't see why it is depressing. For me, it is perfectly OK to see
Scala as a Java with a nicer and more concise syntax...
I think I mostly use it this way so far (no wonder as the most ambitious
things I wrote so far are adaptation of Piccolo2D and Pivot Java code to
Scala...). And hey, if that's all it brings to me, that's already a very
good thing!

But I have some vague notions of functional programming (I am happy to
use closures when they make sense) and I sure started to use the
(simplest) functional side of Scala collections (filter, map and
friends). It feels quite natural to manipulates collections this way
instead of iterating on them, and I am sure I will continue to dig this
way to improve my knowledge and fluency.

But hey, I might still create good old classes, with, gasp!, mutable
fields, if I feel it just fits my needs.
Perhaps I will see in the future such code in horror... or perhaps not.
Indeed, the mailing list shows a strong trend toward functional
programming, but I don't forget that Scala is multi-paradigm, and I will
do imperative (C-like) programming if I want! (eg. in a small "shell
script, why not?).

I still believe Scala isn't complicated (like Java can be) but it can be
complex (high level concepts, powerfulness): lot of threads in the other
mailing lists just escape my current knowledge, and I still find
expressions like

def mconcat[A](as: List[A])(implicit m: Monoid[A]): A =
as.foldRight(m.empty)(m.append(_, _))

(to take a post almost at random) quite hard to fully understand.

But I like the way the language is designed, and I still think I can use
in a simple way, learning new stuff on the road and integrating them
progressively in my future works.

So, to answer the question in the subject, Scala might need some
expertise to understand code of other people or to design good libraries
or frameworks, but is probably quite simple to use if you just go your
way or use well made libraries or frameworks.

Russ P.
Joined: 2009-01-31,
User offline. Last seen 1 year 26 weeks ago.
Re: Is Scala an expert language?
On Sun, Dec 5, 2010 at 9:21 AM, Erik Engbrecht <erik [dot] engbrecht [at] gmail [dot] com> wrote:
De Gao,Search the list archives for posts by Russ Paielli.


Please don't do that. 8^)

Kevin Wright 2
Joined: 2010-05-30,
User offline. Last seen 26 weeks 4 days ago.
Re: Re: Is Scala an expert language?


I still believe Scala isn't complicated (like Java can be) but it can be complex (high level concepts, powerfulness): lot of threads in the other mailing lists just escape my current knowledge, and I still find expressions like

def mconcat[A](as: List[A])(implicit m: Monoid[A]): A =
 as.foldRight(m.empty)(m.append(_, _))

(to take a post almost at random) quite hard to fully understand.

That's quite a good one for showing some of the power of a functional approach.  So start with an abstract Monoid:
    trait Monoid[T] {      def empty: T \\ returns a `T`      def append(a: T, b: T) : T \\ takes two `T`s, joins them together and returns a `T`    }  We can now define the concepts of "empty" and "add together" for different types:
    implicit object StringMonoid extends Monoid[String] {      val empty = ""       def append(a: String, b: String) = a + b    }
    implicit object IntAddMonoid extends Monoid[Int] {      val empty = 0      def append(a: Int, b: Int) = a + b     }
Going back to mconcat:
    def mconcat[A](xs: List[A])(implicit m: Monoid[A]): A =
      xs.foldRight(m.empty)(m.append(_, _))

If called with a List[String], then m will be resolved as StringMonoid, so m.empty will be "" and m.append will be string concatenation.  foldRight will recurse over the list, concatenating the final value with "", then concatenating the next-to-final value with *that*, then... etc.
called with List[Int], it'll use IntAddMonoid, and so start with 0. then proceeding to add the ints.
Where things get interesting is if we had a WaveformMonoid, with empty and append defined as required,
Or an IntMultMonoid:
    object IntMultMonoid extends Monoid[Int] {      val empty = 1      def append(a: Int, b: Int) = a * b    }
This starts with 1 and multiplies the elements, yielding a product.
It allows the essential differences to be isolated within the Monoid classes, and kept separate from the structure of the algorithm (mconcat).  Even more interestingly, I could define another concat algorithm that uses fork/join to divide & conquer the problem across multiple cores, and I could use this with the same monoids, and an end user could safely use either algorithm with their own monoids, being confident that the result would be the same.
So, this approach offers a lot of potential for modularity and producing easily-reused code fragments (the long-time failed promise of object oriented development).

Erik Engbrecht
Joined: 2008-12-19,
User offline. Last seen 3 years 18 weeks ago.
Re: Is Scala an expert language?
I think you also have to consider how much background knowledge is assumed by the documentation.  A couple years ago I think most Scala learning materials tended to assume either a Java developer or a Ruby developer.  I think that's changed now that people have started developing Scala-specific styles that lean towards being more functional than OO, and updates to the language and standard libraries have made much of the older material rather out-of-date.


Can we call some stuff is for 'expert' that you need to read quite a lot of document to use it, like the Airebus A380, but some don't need to read any document (or not so much document) to use it, like a dish washer?




Viktor Klang
Joined: 2008-12-17,
User offline. Last seen 1 year 27 weeks ago.
Re: Re: Is Scala an expert language?


On Sun, Dec 5, 2010 at 10:35 PM, Kevin Wright <kev [dot] lee [dot] wright [at] gmail [dot] com> wrote:


I still believe Scala isn't complicated (like Java can be) but it can be complex (high level concepts, powerfulness): lot of threads in the other mailing lists just escape my current knowledge, and I still find expressions like

def mconcat[A](as: List[A])(implicit m: Monoid[A]): A =
 as.foldRight(m.empty)(m.append(_, _))

(to take a post almost at random) quite hard to fully understand.

That's quite a good one for showing some of the power of a functional approach.  So start with an abstract Monoid:
    trait Monoid[T] {      def empty: T \\ returns a `T`      def append(a: T, b: T) : T \\ takes two `T`s, joins them together and returns a `T`    }  We can now define the concepts of "empty" and "add together" for different types:
    implicit object StringMonoid extends Monoid[String] {      val empty = ""       def append(a: String, b: String) = a + b    }
    implicit object IntAddMonoid extends Monoid[Int] {      val empty = 0      def append(a: Int, b: Int) = a + b     }
Going back to mconcat:
    def mconcat[A](xs: List[A])(implicit m: Monoid[A]): A =
      xs.foldRight(m.empty)(m.append(_, _))

If called with a List[String], then m will be resolved as StringMonoid, so m.empty will be "" and m.append will be string concatenation.  foldRight will recurse over the list, concatenating the final value with "", then concatenating the next-to-final value with *that*, then... etc.
called with List[Int], it'll use IntAddMonoid, and so start with 0. then proceeding to add the ints.
Where things get interesting is if we had a WaveformMonoid, with empty and append defined as required,
Or an IntMultMonoid:
    object IntMultMonoid extends Monoid[Int] {      val empty = 1      def append(a: Int, b: Int) = a * b    }
This starts with 1 and multiplies the elements, yielding a product.
It allows the essential differences to be isolated within the Monoid classes, and kept separate from the structure of the algorithm (mconcat).  Even more interestingly, I could define another concat algorithm that uses fork/join to divide & conquer the problem across multiple cores, and I could use this with the same monoids, and an end user could safely use either algorithm with their own monoids, being confident that the result would be the same.
So, this approach offers a lot of potential for modularity and producing easily-reused code fragments (the long-time failed promise of object oriented development).

Interesting.
How do I generate the report that marketing want me to generate for them?
 


Joshua.Suereth
Joined: 2008-09-02,
User offline. Last seen 32 weeks 5 days ago.
Re: Re: Is Scala an expert language?
There's a monoid for that...

On Sun, Dec 5, 2010 at 4:38 PM, √iktor Klang <viktor [dot] klang [at] gmail [dot] com> wrote:


On Sun, Dec 5, 2010 at 10:35 PM, Kevin Wright <kev [dot] lee [dot] wright [at] gmail [dot] com> wrote:


I still believe Scala isn't complicated (like Java can be) but it can be complex (high level concepts, powerfulness): lot of threads in the other mailing lists just escape my current knowledge, and I still find expressions like

def mconcat[A](as: List[A])(implicit m: Monoid[A]): A =
 as.foldRight(m.empty)(m.append(_, _))

(to take a post almost at random) quite hard to fully understand.

That's quite a good one for showing some of the power of a functional approach.  So start with an abstract Monoid:
    trait Monoid[T] {      def empty: T \\ returns a `T`      def append(a: T, b: T) : T \\ takes two `T`s, joins them together and returns a `T`    }  We can now define the concepts of "empty" and "add together" for different types:
    implicit object StringMonoid extends Monoid[String] {      val empty = ""       def append(a: String, b: String) = a + b    }
    implicit object IntAddMonoid extends Monoid[Int] {      val empty = 0      def append(a: Int, b: Int) = a + b     }
Going back to mconcat:
    def mconcat[A](xs: List[A])(implicit m: Monoid[A]): A =
      xs.foldRight(m.empty)(m.append(_, _))

If called with a List[String], then m will be resolved as StringMonoid, so m.empty will be "" and m.append will be string concatenation.  foldRight will recurse over the list, concatenating the final value with "", then concatenating the next-to-final value with *that*, then... etc.
called with List[Int], it'll use IntAddMonoid, and so start with 0. then proceeding to add the ints.
Where things get interesting is if we had a WaveformMonoid, with empty and append defined as required,
Or an IntMultMonoid:
    object IntMultMonoid extends Monoid[Int] {      val empty = 1      def append(a: Int, b: Int) = a * b    }
This starts with 1 and multiplies the elements, yielding a product.
It allows the essential differences to be isolated within the Monoid classes, and kept separate from the structure of the algorithm (mconcat).  Even more interestingly, I could define another concat algorithm that uses fork/join to divide & conquer the problem across multiple cores, and I could use this with the same monoids, and an end user could safely use either algorithm with their own monoids, being confident that the result would be the same.
So, this approach offers a lot of potential for modularity and producing easily-reused code fragments (the long-time failed promise of object oriented development).

Interesting.
How do I generate the report that marketing want me to generate for them?
 


Randall R Schulz
Joined: 2008-12-16,
User offline. Last seen 1 year 29 weeks ago.
Re: Re: Is Scala an expert language?

On Sunday December 5 2010, √iktor Klang wrote:
> ...
> >
> > So, this approach offers a lot of potential for modularity and
> > producing easily-reused code fragments (the long-time failed
> > promise of object oriented development).
>
> Interesting.
> How do I generate the report that marketing want me to generate for
> them?

Give them the source code and tell them to write their own damned report
generator.

> > --
> > Kevin Wright

RRS

Viktor Klang
Joined: 2008-12-17,
User offline. Last seen 1 year 27 weeks ago.
Re: Re: Is Scala an expert language?


On Sun, Dec 5, 2010 at 10:52 PM, Josh Suereth <joshua [dot] suereth [at] gmail [dot] com> wrote:
There's a monoid for that...

If you work with functional programming for too long you can get hemonoids.
 


On Sun, Dec 5, 2010 at 4:38 PM, √iktor Klang <viktor [dot] klang [at] gmail [dot] com> wrote:


On Sun, Dec 5, 2010 at 10:35 PM, Kevin Wright <kev [dot] lee [dot] wright [at] gmail [dot] com> wrote:


I still believe Scala isn't complicated (like Java can be) but it can be complex (high level concepts, powerfulness): lot of threads in the other mailing lists just escape my current knowledge, and I still find expressions like

def mconcat[A](as: List[A])(implicit m: Monoid[A]): A =
 as.foldRight(m.empty)(m.append(_, _))

(to take a post almost at random) quite hard to fully understand.

That's quite a good one for showing some of the power of a functional approach.  So start with an abstract Monoid:
    trait Monoid[T] {      def empty: T \\ returns a `T`      def append(a: T, b: T) : T \\ takes two `T`s, joins them together and returns a `T`    }  We can now define the concepts of "empty" and "add together" for different types:
    implicit object StringMonoid extends Monoid[String] {      val empty = ""       def append(a: String, b: String) = a + b    }
    implicit object IntAddMonoid extends Monoid[Int] {      val empty = 0      def append(a: Int, b: Int) = a + b     }
Going back to mconcat:
    def mconcat[A](xs: List[A])(implicit m: Monoid[A]): A =
      xs.foldRight(m.empty)(m.append(_, _))

If called with a List[String], then m will be resolved as StringMonoid, so m.empty will be "" and m.append will be string concatenation.  foldRight will recurse over the list, concatenating the final value with "", then concatenating the next-to-final value with *that*, then... etc.
called with List[Int], it'll use IntAddMonoid, and so start with 0. then proceeding to add the ints.
Where things get interesting is if we had a WaveformMonoid, with empty and append defined as required,
Or an IntMultMonoid:
    object IntMultMonoid extends Monoid[Int] {      val empty = 1      def append(a: Int, b: Int) = a * b    }
This starts with 1 and multiplies the elements, yielding a product.
It allows the essential differences to be isolated within the Monoid classes, and kept separate from the structure of the algorithm (mconcat).  Even more interestingly, I could define another concat algorithm that uses fork/join to divide & conquer the problem across multiple cores, and I could use this with the same monoids, and an end user could safely use either algorithm with their own monoids, being confident that the result would be the same.
So, this approach offers a lot of potential for modularity and producing easily-reused code fragments (the long-time failed promise of object oriented development).

Interesting.
How do I generate the report that marketing want me to generate for them?
 


Kevin Wright 2
Joined: 2010-05-30,
User offline. Last seen 26 weeks 4 days ago.
Re: Re: Is Scala an expert language?

Nothing that can't be cured with a short course of applicative functors :)

I'm happy to say that the article is almost finished (maybe a couple of days at most), and doesn't require any foreknowledge of either Haskell or category theory! Coming soon to a computer near you...

On 5 Dec 2010 21:55, "√iktor Klang" <viktor [dot] klang [at] gmail [dot] com> wrote:
> On Sun, Dec 5, 2010 at 10:52 PM, Josh Suereth <joshua [dot] suereth [at] gmail [dot] com>wrote:
>
>> There's a monoid for that...
>
>
> If you work with functional programming for too long you can get hemonoids.
>
>
>>
>>
>> On Sun, Dec 5, 2010 at 4:38 PM, √iktor Klang <viktor [dot] klang [at] gmail [dot] com>wrote:
>>
>>>
>>>
>>> On Sun, Dec 5, 2010 at 10:35 PM, Kevin Wright <kev [dot] lee [dot] wright [at] gmail [dot] com>wrote:
>>>
>>>>
>>>>
>>>> I still believe Scala isn't complicated (like Java can be) but it can be
>>>>> complex (high level concepts, powerfulness): lot of threads in the other
>>>>> mailing lists just escape my current knowledge, and I still find expressions
>>>>> like
>>>>>
>>>>> def mconcat[A](as: List[A])(implicit m: Monoid[A]): A =
>>>>> as.foldRight(m.empty)(m.append(_, _))
>>>>>
>>>>> (to take a post almost at random) quite hard to fully understand.
>>>>>
>>>>
>>>> That's quite a good one for showing some of the power of a functional
>>>> approach. So start with an abstract Monoid:
>>>>
>>>> trait Monoid[T] {
>>>> def empty: T \\ returns a `T`
>>>> def append(a: T, b: T) : T \\ takes two `T`s, joins them together
>>>> and returns a `T`
>>>> }
>>>>
>>>> We can now define the concepts of "empty" and "add together" for
>>>> different types:
>>>>
>>>> implicit object StringMonoid extends Monoid[String] {
>>>> val empty = ""
>>>> def append(a: String, b: String) = a + b
>>>> }
>>>>
>>>> implicit object IntAddMonoid extends Monoid[Int] {
>>>> val empty = 0
>>>> def append(a: Int, b: Int) = a + b
>>>> }
>>>>
>>>> Going back to mconcat:
>>>>
>>>> def mconcat[A](xs: List[A])(implicit m: Monoid[A]): A =
>>>>
>>>> xs.foldRight(m.empty)(m.append(_, _))
>>>>
>>>> If called with a List[String], then m will be resolved as StringMonoid,
>>>> so m.empty will be "" and m.append will be string concatenation. foldRight
>>>> will recurse over the list, concatenating the final value with "", then
>>>> concatenating the next-to-final value with *that*, then... etc.
>>>>
>>>> called with List[Int], it'll use IntAddMonoid, and so start with 0. then
>>>> proceeding to add the ints.
>>>>
>>>> Where things get interesting is if we had a WaveformMonoid, with empty
>>>> and append defined as required,
>>>>
>>>> Or an IntMultMonoid:
>>>>
>>>> object IntMultMonoid extends Monoid[Int] {
>>>> val empty = 1
>>>> def append(a: Int, b: Int) = a * b
>>>> }
>>>>
>>>> This starts with 1 and multiplies the elements, yielding a product.
>>>>
>>>> It allows the essential differences to be isolated within the Monoid
>>>> classes, and kept separate from the structure of the algorithm (mconcat).
>>>> Even more interestingly, I could define another concat algorithm that uses
>>>> fork/join to divide & conquer the problem across multiple cores, and I could
>>>> use this with the same monoids, and an end user could safely use either
>>>> algorithm with their own monoids, being confident that the result would be
>>>> the same.
>>>>
>>>> So, this approach offers a lot of potential for modularity and producing
>>>> easily-reused code fragments (the long-time failed promise of object
>>>> oriented development).
>>>>
>>>
>>> Interesting.
>>> How do I generate the report that marketing want me to generate for them?
>>>
>>>
>>>>
>>>>
>>>> --
>>>> Kevin Wright
>>>>
>>>> mail / gtalk / msn : kev [dot] lee [dot] wright [at] gmail [dot] com
>>>> pulse / skype: kev.lee.wright
>>>> twitter: @thecoda
>>>>
>>>>
>>>
>>>
>>> --
>>> Viktor Klang,
>>> Code Connoisseur
>>> Work: Scalable Solutions <http://www.scalablesolutions.se>
>>> Code: github.com/viktorklang
>>> Follow: twitter.com/viktorklang
>>> Read: klangism.tumblr.com
>>>
>>>
>>
>
>
> --
> Viktor Klang,
> Code Connoisseur
> Work: Scalable Solutions <http://www.scalablesolutions.se>
> Code: github.com/viktorklang
> Follow: twitter.com/viktorklang
> Read: klangism.tumblr.com
odersky
Joined: 2008-07-29,
User offline. Last seen 45 weeks 6 days ago.
Re: Is Scala an expert language?


On Sun, Dec 5, 2010 at 10:00 PM, De Gao <gaode.ml@gmail.com> wrote:
On 05/12/2010 20:49, Roland Kuhn wrote:
On Dec 5, 2010, at 21:16 , Randall R Schulz wrote:
On Sunday December 5 2010, Seth Tisue wrote:
"Erik" == Erik Engbrecht<erik [dot] engbrecht [at] gmail [dot] com>  writes:
Programming is an expert activity. All its tools are for experts.
...

Erik>  Programming is like reading and writing.  Most people can
derive Erik>  significant benefit from knowing the basics of how to do
it, [...]

Amen, brother.
And what does that have to do with Scala? Is every programming language
to be designed with readability and understandability by members of the
general public in mind?

Sorry, I don't buy it. First things first here means what professionals
need takes strong precedence over what any other audience would like.

Yes, and there are two kinds of “professionals”: computer scientists (I mean the real ones, which is imperfectly correlated with a university faculty of the same name) and all others who need to do programming in order to get their jobs done (e.g. high energy particle physics community). While the latter have to write code which produces the right result for a specific input set while being just clean enough to allow debugging, the former are capable of producing libraries and frameworks to be used by others. In a sense these groups are in a producer–consumer relationship. Can we agree that both are important?

Note how the “general public” does not appear in my previous paragraph. From my own experience I must conclude that any programming activity which is entirely private (meaning not motivated by business or contributions to other—sizable—projects) does not reach a significant level.

Now, what was the original question again: Is Scala only suited for “experts”? (I take this to mean the antonym to “beginners”.) I don’t think so, since it is possible to write beautiful libraries which are easy to use, albeit hard to understand internally (e.g. the Scala collections). What may be lacking are more resources like tutorials, blogs, etc. geared towards beginners, so that they can use the language without having to look under the hood. But my knowledge here is a bit outdated since I did no surveys wrt. this in the recent past.

Regards,

Roland

--
[scala-debate on 2009/10/2]
Viktor Klang: When will the days of numerical overflow be gone?
Ricky Clarkson: One second after 03:14:07 UTC on Tuesday, 19 January 2038

Can we call some stuff is for 'expert' that you need to read quite a lot of document to use it, like the Airebus A380, but some don't need to read any document (or not so much document) to use it, like a dish washer?

Let me ask again: What did you read? -- Martin

Archontophoenix
Joined: 2010-02-04,
User offline. Last seen 2 years 35 weeks ago.
RE: Is Scala an expert language?


> Date: Sun, 5 Dec 2010 21:00:30 +0000
> From: gaode [dot] ml [at] gmail [dot] com
> To: rk [at] rkuhn [dot] info
> CC: rschulz [at] sonic [dot] net; scala-debate [at] listes [dot] epfl [dot] ch
> Subject: Re: [scala-debate] Is Scala an expert language?
>
> Can we call some stuff is for 'expert' that you need to read quite a lot
> of document to use it, like the Airebus A380, but some don't need to
> read any document (or not so much document) to use it, like a dish washer?

There are many things, including Scala, that can be approached from either a casual or an expert point of view. The last time I needed to repair a dishwasher, I wound up calling a repairman. On the other hand, the last time I used an airplane (as a passenger), all I had to read was my gate number...

A
Kevin Wright 2
Joined: 2010-05-30,
User offline. Last seen 26 weeks 4 days ago.
Re: Is Scala an expert language?


On 6 December 2010 10:53, adriaN kinG <ceroxylon [at] hotmail [dot] com> wrote:


> Date: Sun, 5 Dec 2010 21:00:30 +0000
> From: gaode.ml@gmail.com
> To: rk [at] rkuhn [dot] info
> CC: rschulz [at] sonic [dot] net; scala-debate [at] listes [dot] epfl [dot] ch
> Subject: Re: [scala-debate] Is Scala an expert language?
>
> Can we call some stuff is for 'expert' that you need to read quite a lot
> of document to use it, like the Airebus A380, but some don't need to
> read any document (or not so much document) to use it, like a dish washer?

There are many things, including Scala, that can be approached from either a casual or an expert point of view. The last time I needed to repair a dishwasher, I wound up calling a repairman. On the other hand, the last time I used an airplane (as a passenger), all I had to read was my gate number...

A

Surely that's not *all* you read?http://designwar.net/datas/users/1-2flightcard_big.jpg


--
Kevin Wright

mail / gtalk / msn : kev [dot] lee [dot] wright [at] gmail [dot] com
pulse / skype: kev.lee.wright
twitter: @thecoda

Philippe Lhoste
Joined: 2010-09-02,
User offline. Last seen 42 years 45 weeks ago.
Re: Is Scala an expert language?

On 06/12/2010 11:53, adriaN kinG wrote:
> There are many things, including Scala, that can be approached from either a casual or an
> expert point of view. The last time I needed to repair a dishwasher, I wound up calling a
> repairman. On the other hand, the last time I used an airplane (as a passenger), all I had
> to read was my gate number...

I understood it was about to drive/fly an Airbus, not to ride it...
I would do the former casually! Well, I wouldn't do it, except if already in flight and if
there was no (valid) pilot in the plane...

But I agree with your main point, anyway. :-) You can write casual Scala code (so I
disagree with the opinion above that programming should be reserved to experts), either to
do a Kojo program or to write a little shell script, or even to do some simple drawing
with Piccolo2D.

Archontophoenix
Joined: 2010-02-04,
User offline. Last seen 2 years 35 weeks ago.
RE: Is Scala an expert language?
> From: kev [dot] lee [dot] wright [at] gmail [dot] com
>
>
>
>I don't think there'll ever be a perfect way to teach, but I think a
> pair of books "Scala for functional programmers" and "Scala for
> imperative programmers" would be a good start!



> The question is... Which one gets the black-on-white cover, and which one is white-on-black?>
> --
> Kevin Wright

I think the choice of covers doesn't matter so much, provided that you bind both books back-to-back in the same volume, so that they meet in the middle.

A

De Gao
Joined: 2009-08-10,
User offline. Last seen 42 years 45 weeks ago.
Re: Is Scala an expert language?
On 06/12/2010 09:18, martin odersky wrote:
AANLkTikPOKE5VhYW7G0YV0gHDiUg-k9f2ddRmUq1Qd-G [at] mail [dot] gmail [dot] com" type="cite">

On Sun, Dec 5, 2010 at 10:00 PM, De Gao <gaode.ml@gmail.com> wrote:
On 05/12/2010 20:49, Roland Kuhn wrote:
On Dec 5, 2010, at 21:16 , Randall R Schulz wrote:
On Sunday December 5 2010, Seth Tisue wrote:
"Erik" == Erik Engbrecht<erik [dot] engbrecht [at] gmail [dot] com" target="_blank" rel="nofollow">erik [dot] engbrecht [at] gmail [dot] com>  writes:
Programming is an expert activity. All its tools are for experts.
...

Erik>  Programming is like reading and writing.  Most people can
derive Erik>  significant benefit from knowing the basics of how to do
it, [...]

Amen, brother.
And what does that have to do with Scala? Is every programming language
to be designed with readability and understandability by members of the
general public in mind?

Sorry, I don't buy it. First things first here means what professionals
need takes strong precedence over what any other audience would like.

Yes, and there are two kinds of “professionals”: computer scientists (I mean the real ones, which is imperfectly correlated with a university faculty of the same name) and all others who need to do programming in order to get their jobs done (e.g. high energy particle physics community). While the latter have to write code which produces the right result for a specific input set while being just clean enough to allow debugging, the former are capable of producing libraries and frameworks to be used by others. In a sense these groups are in a producer–consumer relationship. Can we agree that both are important?

Note how the “general public” does not appear in my previous paragraph. From my own experience I must conclude that any programming activity which is entirely private (meaning not motivated by business or contributions to other—sizable—projects) does not reach a significant level.

Now, what was the original question again: Is Scala only suited for “experts”? (I take this to mean the antonym to “beginners”.) I don’t think so, since it is possible to write beautiful libraries which are easy to use, albeit hard to understand internally (e.g. the Scala collections). What may be lacking are more resources like tutorials, blogs, etc. geared towards beginners, so that they can use the language without having to look under the hood. But my knowledge here is a bit outdated since I did no surveys wrt. this in the recent past.

Regards,

Roland

--
[scala-debate on 2009/10/2]
Viktor Klang: When will the days of numerical overflow be gone?
Ricky Clarkson: One second after 03:14:07 UTC on Tuesday, 19 January 2038

Can we call some stuff is for 'expert' that you need to read quite a lot of document to use it, like the Airebus A380, but some don't need to read any document (or not so much document) to use it, like a dish washer?

Let me ask again: What did you read? -- Martin

What I'm reading is not a case for everyone. I'm reading the language specification.
Alec Zorab
Joined: 2010-05-18,
User offline. Last seen 42 years 45 weeks ago.
Re: Is Scala an expert language?

I'm not surprised you can't write programs fluently after a year if
all you're reading is the SLS. Unless you're an absolute genius, with
the insight of a dozen lesser men, you will not be able to imagine
every usage available / applicable to a situation purely from the
spec. By design, specifications are narrow, sterile things which nail
down as many details as possible. You need to look at how other people
have approached problems to gain any appreciation (this goes for any
language - anyone who could only read the c++ spec and then write
something of any significance that actually worked would have my
undying admiration)

On Mon, Dec 6, 2010 at 3:17 PM, De Gao wrote:
> On 06/12/2010 09:18, martin odersky wrote:
>
> On Sun, Dec 5, 2010 at 10:00 PM, De Gao wrote:
>>
>> On 05/12/2010 20:49, Roland Kuhn wrote:
>>>
>>> On Dec 5, 2010, at 21:16 , Randall R Schulz wrote:
>>>>
>>>> On Sunday December 5 2010, Seth Tisue wrote:
>>>>>>>>>>
>>>>>>>>>> "Erik" == Erik Engbrecht  writes:
>>>>>>>
>>>>>>> Programming is an expert activity. All its tools are for experts.
>>>>>
>>>>> ...
>>>>>
>>>>> Erik>  Programming is like reading and writing.  Most people can
>>>>> derive Erik>  significant benefit from knowing the basics of how to do
>>>>> it, [...]
>>>>>
>>>>> Amen, brother.
>>>>
>>>> And what does that have to do with Scala? Is every programming language
>>>> to be designed with readability and understandability by members of the
>>>> general public in mind?
>>>>
>>>> Sorry, I don't buy it. First things first here means what professionals
>>>> need takes strong precedence over what any other audience would like.
>>>
>>> Yes, and there are two kinds of “professionals”: computer scientists (I
>>> mean the real ones, which is imperfectly correlated with a university
>>> faculty of the same name) and all others who need to do programming in order
>>> to get their jobs done (e.g. high energy particle physics community). While
>>> the latter have to write code which produces the right result for a specific
>>> input set while being just clean enough to allow debugging, the former are
>>> capable of producing libraries and frameworks to be used by others. In a
>>> sense these groups are in a producer–consumer relationship. Can we agree
>>> that both are important?
>>>
>>> Note how the “general public” does not appear in my previous paragraph.
>>> From my own experience I must conclude that any programming activity which
>>> is entirely private (meaning not motivated by business or contributions to
>>> other—sizable—projects) does not reach a significant level.
>>>
>>> Now, what was the original question again: Is Scala only suited for
>>> “experts”? (I take this to mean the antonym to “beginners”.) I don’t think
>>> so, since it is possible to write beautiful libraries which are easy to use,
>>> albeit hard to understand internally (e.g. the Scala collections). What may
>>> be lacking are more resources like tutorials, blogs, etc. geared towards
>>> beginners, so that they can use the language without having to look under
>>> the hood. But my knowledge here is a bit outdated since I did no surveys
>>> wrt. this in the recent past.
>>>
>>> Regards,
>>>
>>> Roland
>>>
>>> --
>>> [scala-debate on 2009/10/2]
>>> Viktor Klang: When will the days of numerical overflow be gone?
>>> Ricky Clarkson: One second after 03:14:07 UTC on Tuesday, 19 January 2038
>>>
>> Can we call some stuff is for 'expert' that you need to read quite a lot
>> of document to use it, like the Airebus A380, but some don't need to read
>> any document (or not so much document) to use it, like a dish washer?
>
> Let me ask again: What did you read? -- Martin
>
> What I'm reading is not a case for everyone. I'm reading the language
> specification.
>

Kevin Wright 2
Joined: 2010-05-30,
User offline. Last seen 26 weeks 4 days ago.
Re: Is Scala an expert language?


On 6 December 2010 20:17, De Gao <gaode.ml@gmail.com> wrote:
On 06/12/2010 09:18, martin odersky wrote:


On Sun, Dec 5, 2010 at 10:00 PM, De Gao <gaode.ml@gmail.com> wrote:
On 05/12/2010 20:49, Roland Kuhn wrote:
On Dec 5, 2010, at 21:16 , Randall R Schulz wrote:
On Sunday December 5 2010, Seth Tisue wrote:
"Erik" == Erik Engbrecht<erik [dot] engbrecht [at] gmail [dot] com>  writes:
Programming is an expert activity. All its tools are for experts.
...

Erik>  Programming is like reading and writing.  Most people can
derive Erik>  significant benefit from knowing the basics of how to do
it, [...]

Amen, brother.
And what does that have to do with Scala? Is every programming language
to be designed with readability and understandability by members of the
general public in mind?

Sorry, I don't buy it. First things first here means what professionals
need takes strong precedence over what any other audience would like.

Yes, and there are two kinds of “professionals”: computer scientists (I mean the real ones, which is imperfectly correlated with a university faculty of the same name) and all others who need to do programming in order to get their jobs done (e.g. high energy particle physics community). While the latter have to write code which produces the right result for a specific input set while being just clean enough to allow debugging, the former are capable of producing libraries and frameworks to be used by others. In a sense these groups are in a producer–consumer relationship. Can we agree that both are important?

Note how the “general public” does not appear in my previous paragraph. From my own experience I must conclude that any programming activity which is entirely private (meaning not motivated by business or contributions to other—sizable—projects) does not reach a significant level.

Now, what was the original question again: Is Scala only suited for “experts”? (I take this to mean the antonym to “beginners”.) I don’t think so, since it is possible to write beautiful libraries which are easy to use, albeit hard to understand internally (e.g. the Scala collections). What may be lacking are more resources like tutorials, blogs, etc. geared towards beginners, so that they can use the language without having to look under the hood. But my knowledge here is a bit outdated since I did no surveys wrt. this in the recent past.

Regards,

Roland

--
[scala-debate on 2009/10/2]
Viktor Klang: When will the days of numerical overflow be gone?
Ricky Clarkson: One second after 03:14:07 UTC on Tuesday, 19 January 2038

Can we call some stuff is for 'expert' that you need to read quite a lot of document to use it, like the Airebus A380, but some don't need to read any document (or not so much document) to use it, like a dish washer?

Let me ask again: What did you read? -- Martin

What I'm reading is not a case for everyone. I'm reading the language specification.


and what other language specifications have you also read, by way of comparison?

--
Kevin Wright

mail / gtalk / msn : kev [dot] lee [dot] wright [at] gmail [dot] com
pulse / skype: kev.lee.wright
twitter: @thecoda

De Gao
Joined: 2009-08-10,
User offline. Last seen 42 years 45 weeks ago.
Re: Is Scala an expert language?

On 06/12/2010 20:34, Alec Zorab wrote:
> I'm not surprised you can't write programs fluently after a year if
> all you're reading is the SLS. Unless you're an absolute genius, with
> the insight of a dozen lesser men, you will not be able to imagine
> every usage available / applicable to a situation purely from the
> spec. By design, specifications are narrow, sterile things which nail
> down as many details as possible. You need to look at how other people
> have approached problems to gain any appreciation (this goes for any
> language - anyone who could only read the c++ spec and then write
> something of any significance that actually worked would have my
> undying admiration)
>
> On Mon, Dec 6, 2010 at 3:17 PM, De Gao wrote:
>> On 06/12/2010 09:18, martin odersky wrote:
>>
>> On Sun, Dec 5, 2010 at 10:00 PM, De Gao wrote:
>>> On 05/12/2010 20:49, Roland Kuhn wrote:
>>>> On Dec 5, 2010, at 21:16 , Randall R Schulz wrote:
>>>>> On Sunday December 5 2010, Seth Tisue wrote:
>>>>>>>>>>> "Erik" == Erik Engbrecht writes:
>>>>>>>> Programming is an expert activity. All its tools are for experts.
>>>>>> ...
>>>>>>
>>>>>> Erik> Programming is like reading and writing. Most people can
>>>>>> derive Erik> significant benefit from knowing the basics of how to do
>>>>>> it, [...]
>>>>>>
>>>>>> Amen, brother.
>>>>> And what does that have to do with Scala? Is every programming language
>>>>> to be designed with readability and understandability by members of the
>>>>> general public in mind?
>>>>>
>>>>> Sorry, I don't buy it. First things first here means what professionals
>>>>> need takes strong precedence over what any other audience would like.
>>>> Yes, and there are two kinds of “professionals”: computer scientists (I
>>>> mean the real ones, which is imperfectly correlated with a university
>>>> faculty of the same name) and all others who need to do programming in order
>>>> to get their jobs done (e.g. high energy particle physics community). While
>>>> the latter have to write code which produces the right result for a specific
>>>> input set while being just clean enough to allow debugging, the former are
>>>> capable of producing libraries and frameworks to be used by others. In a
>>>> sense these groups are in a producer–consumer relationship. Can we agree
>>>> that both are important?
>>>>
>>>> Note how the “general public” does not appear in my previous paragraph.
>>>> From my own experience I must conclude that any programming activity which
>>>> is entirely private (meaning not motivated by business or contributions to
>>>> other—sizable—projects) does not reach a significant level.
>>>>
>>>> Now, what was the original question again: Is Scala only suited for
>>>> “experts”? (I take this to mean the antonym to “beginners”.) I don’t think
>>>> so, since it is possible to write beautiful libraries which are easy to use,
>>>> albeit hard to understand internally (e.g. the Scala collections). What may
>>>> be lacking are more resources like tutorials, blogs, etc. geared towards
>>>> beginners, so that they can use the language without having to look under
>>>> the hood. But my knowledge here is a bit outdated since I did no surveys
>>>> wrt. this in the recent past.
>>>>
>>>> Regards,
>>>>
>>>> Roland
>>>>
>>>> --
>>>> [scala-debate on 2009/10/2]
>>>> Viktor Klang: When will the days of numerical overflow be gone?
>>>> Ricky Clarkson: One second after 03:14:07 UTC on Tuesday, 19 January 2038
>>>>
>>> Can we call some stuff is for 'expert' that you need to read quite a lot
>>> of document to use it, like the Airebus A380, but some don't need to read
>>> any document (or not so much document) to use it, like a dish washer?
>> Let me ask again: What did you read? -- Martin
>>
>> What I'm reading is not a case for everyone. I'm reading the language
>> specification.
>>
I said I'm not the case. And I'm not worry about my self. I'm just
thinking by what situation that Scala could become popular.

Erik Engbrecht
Joined: 2008-12-19,
User offline. Last seen 3 years 18 weeks ago.
Re: Is Scala an expert language?
I actually found the spec quite useful in learning - and still learning - Scala.  Of course I would never consider it as a singular source.  But it is an unquestionably valuable resource.

On Mon, Dec 6, 2010 at 3:34 PM, Alec Zorab <aleczorab [at] googlemail [dot] com> wrote:
I'm not surprised you can't write programs fluently after a year if
all you're reading is the SLS. Unless you're an absolute genius, with
the insight of a dozen lesser men, you will not be able to imagine
every usage available / applicable to a situation purely from the
spec. By design, specifications are narrow, sterile things which nail
down as many details as possible. You need to look at how other people
have approached problems to gain any appreciation (this goes for any
language - anyone who could only read the c++ spec and then write
something of any significance that actually worked would have my
undying admiration)

On Mon, Dec 6, 2010 at 3:17 PM, De Gao <gaode.ml@gmail.com> wrote:
> On 06/12/2010 09:18, martin odersky wrote:
>
> On Sun, Dec 5, 2010 at 10:00 PM, De Gao <gaode.ml@gmail.com> wrote:
>>
>> On 05/12/2010 20:49, Roland Kuhn wrote:
>>>
>>> On Dec 5, 2010, at 21:16 , Randall R Schulz wrote:
>>>>
>>>> On Sunday December 5 2010, Seth Tisue wrote:
>>>>>>>>>>
>>>>>>>>>> "Erik" == Erik Engbrecht<erik [dot] engbrecht [at] gmail [dot] com>  writes:
>>>>>>>
>>>>>>> Programming is an expert activity. All its tools are for experts.
>>>>>
>>>>> ...
>>>>>
>>>>> Erik>  Programming is like reading and writing.  Most people can
>>>>> derive Erik>  significant benefit from knowing the basics of how to do
>>>>> it, [...]
>>>>>
>>>>> Amen, brother.
>>>>
>>>> And what does that have to do with Scala? Is every programming language
>>>> to be designed with readability and understandability by members of the
>>>> general public in mind?
>>>>
>>>> Sorry, I don't buy it. First things first here means what professionals
>>>> need takes strong precedence over what any other audience would like.
>>>
>>> Yes, and there are two kinds of “professionals”: computer scientists (I
>>> mean the real ones, which is imperfectly correlated with a university
>>> faculty of the same name) and all others who need to do programming in order
>>> to get their jobs done (e.g. high energy particle physics community). While
>>> the latter have to write code which produces the right result for a specific
>>> input set while being just clean enough to allow debugging, the former are
>>> capable of producing libraries and frameworks to be used by others. In a
>>> sense these groups are in a producer–consumer relationship. Can we agree
>>> that both are important?
>>>
>>> Note how the “general public” does not appear in my previous paragraph.
>>> From my own experience I must conclude that any programming activity which
>>> is entirely private (meaning not motivated by business or contributions to
>>> other—sizable—projects) does not reach a significant level.
>>>
>>> Now, what was the original question again: Is Scala only suited for
>>> “experts”? (I take this to mean the antonym to “beginners”.) I don’t think
>>> so, since it is possible to write beautiful libraries which are easy to use,
>>> albeit hard to understand internally (e.g. the Scala collections). What may
>>> be lacking are more resources like tutorials, blogs, etc. geared towards
>>> beginners, so that they can use the language without having to look under
>>> the hood. But my knowledge here is a bit outdated since I did no surveys
>>> wrt. this in the recent past.
>>>
>>> Regards,
>>>
>>> Roland
>>>
>>> --
>>> [scala-debate on 2009/10/2]
>>> Viktor Klang: When will the days of numerical overflow be gone?
>>> Ricky Clarkson: One second after 03:14:07 UTC on Tuesday, 19 January 2038
>>>
>> Can we call some stuff is for 'expert' that you need to read quite a lot
>> of document to use it, like the Airebus A380, but some don't need to read
>> any document (or not so much document) to use it, like a dish washer?
>
> Let me ask again: What did you read? -- Martin
>
> What I'm reading is not a case for everyone. I'm reading the language
> specification.
>



--
http://erikengbrecht.blogspot.com/
Alec Zorab
Joined: 2010-05-18,
User offline. Last seen 42 years 45 weeks ago.
Re: Is Scala an expert language?

Undoubtedly, but I think the argument of "I've been studying the SLS
for a year and can't write fluent scala, so scala hasn't got a future"
is a bit like saying "I've been studying internal combustion engines
for a year, but I still can't drive properly, so cars are never going
to get popular".

On Mon, Dec 6, 2010 at 7:48 PM, Erik Engbrecht wrote:
> I actually found the spec quite useful in learning - and still learning -
> Scala.  Of course I would never consider it as a singular source.  But it is
> an unquestionably valuable resource.
>
> On Mon, Dec 6, 2010 at 3:34 PM, Alec Zorab wrote:
>>
>> I'm not surprised you can't write programs fluently after a year if
>> all you're reading is the SLS. Unless you're an absolute genius, with
>> the insight of a dozen lesser men, you will not be able to imagine
>> every usage available / applicable to a situation purely from the
>> spec. By design, specifications are narrow, sterile things which nail
>> down as many details as possible. You need to look at how other people
>> have approached problems to gain any appreciation (this goes for any
>> language - anyone who could only read the c++ spec and then write
>> something of any significance that actually worked would have my
>> undying admiration)
>>
>> On Mon, Dec 6, 2010 at 3:17 PM, De Gao wrote:
>> > On 06/12/2010 09:18, martin odersky wrote:
>> >
>> > On Sun, Dec 5, 2010 at 10:00 PM, De Gao wrote:
>> >>
>> >> On 05/12/2010 20:49, Roland Kuhn wrote:
>> >>>
>> >>> On Dec 5, 2010, at 21:16 , Randall R Schulz wrote:
>> >>>>
>> >>>> On Sunday December 5 2010, Seth Tisue wrote:
>> >>>>>>>>>>
>> >>>>>>>>>> "Erik" == Erik Engbrecht  writes:
>> >>>>>>>
>> >>>>>>> Programming is an expert activity. All its tools are for experts.
>> >>>>>
>> >>>>> ...
>> >>>>>
>> >>>>> Erik>  Programming is like reading and writing.  Most people can
>> >>>>> derive Erik>  significant benefit from knowing the basics of how to
>> >>>>> do
>> >>>>> it, [...]
>> >>>>>
>> >>>>> Amen, brother.
>> >>>>
>> >>>> And what does that have to do with Scala? Is every programming
>> >>>> language
>> >>>> to be designed with readability and understandability by members of
>> >>>> the
>> >>>> general public in mind?
>> >>>>
>> >>>> Sorry, I don't buy it. First things first here means what
>> >>>> professionals
>> >>>> need takes strong precedence over what any other audience would like.
>> >>>
>> >>> Yes, and there are two kinds of “professionals”: computer scientists
>> >>> (I
>> >>> mean the real ones, which is imperfectly correlated with a university
>> >>> faculty of the same name) and all others who need to do programming in
>> >>> order
>> >>> to get their jobs done (e.g. high energy particle physics community).
>> >>> While
>> >>> the latter have to write code which produces the right result for a
>> >>> specific
>> >>> input set while being just clean enough to allow debugging, the former
>> >>> are
>> >>> capable of producing libraries and frameworks to be used by others. In
>> >>> a
>> >>> sense these groups are in a producer–consumer relationship. Can we
>> >>> agree
>> >>> that both are important?
>> >>>
>> >>> Note how the “general public” does not appear in my previous
>> >>> paragraph.
>> >>> From my own experience I must conclude that any programming activity
>> >>> which
>> >>> is entirely private (meaning not motivated by business or
>> >>> contributions to
>> >>> other—sizable—projects) does not reach a significant level.
>> >>>
>> >>> Now, what was the original question again: Is Scala only suited for
>> >>> “experts”? (I take this to mean the antonym to “beginners”.) I don’t
>> >>> think
>> >>> so, since it is possible to write beautiful libraries which are easy
>> >>> to use,
>> >>> albeit hard to understand internally (e.g. the Scala collections).
>> >>> What may
>> >>> be lacking are more resources like tutorials, blogs, etc. geared
>> >>> towards
>> >>> beginners, so that they can use the language without having to look
>> >>> under
>> >>> the hood. But my knowledge here is a bit outdated since I did no
>> >>> surveys
>> >>> wrt. this in the recent past.
>> >>>
>> >>> Regards,
>> >>>
>> >>> Roland
>> >>>
>> >>> --
>> >>> [scala-debate on 2009/10/2]
>> >>> Viktor Klang: When will the days of numerical overflow be gone?
>> >>> Ricky Clarkson: One second after 03:14:07 UTC on Tuesday, 19 January
>> >>> 2038
>> >>>
>> >> Can we call some stuff is for 'expert' that you need to read quite a
>> >> lot
>> >> of document to use it, like the Airebus A380, but some don't need to
>> >> read
>> >> any document (or not so much document) to use it, like a dish washer?
>> >
>> > Let me ask again: What did you read? -- Martin
>> >
>> > What I'm reading is not a case for everyone. I'm reading the language
>> > specification.
>> >
>
>
>
> --
> http://erikengbrecht.blogspot.com/
>

De Gao
Joined: 2009-08-10,
User offline. Last seen 42 years 45 weeks ago.
Re: Is Scala an expert language?

On 07/12/2010 13:04, Alec Zorab wrote:
> Undoubtedly, but I think the argument of "I've been studying the SLS
> for a year and can't write fluent scala, so scala hasn't got a future"
> is a bit like saying "I've been studying internal combustion engines
> for a year, but I still can't drive properly, so cars are never going
> to get popular".
>
> On Mon, Dec 6, 2010 at 7:48 PM, Erik Engbrecht wrote:
>> I actually found the spec quite useful in learning - and still learning -
>> Scala. Of course I would never consider it as a singular source. But it is
>> an unquestionably valuable resource.
>>
>> On Mon, Dec 6, 2010 at 3:34 PM, Alec Zorab wrote:
>>> I'm not surprised you can't write programs fluently after a year if
>>> all you're reading is the SLS. Unless you're an absolute genius, with
>>> the insight of a dozen lesser men, you will not be able to imagine
>>> every usage available / applicable to a situation purely from the
>>> spec. By design, specifications are narrow, sterile things which nail
>>> down as many details as possible. You need to look at how other people
>>> have approached problems to gain any appreciation (this goes for any
>>> language - anyone who could only read the c++ spec and then write
>>> something of any significance that actually worked would have my
>>> undying admiration)
>>>
>>> On Mon, Dec 6, 2010 at 3:17 PM, De Gao wrote:
>>>> On 06/12/2010 09:18, martin odersky wrote:
>>>>
>>>> On Sun, Dec 5, 2010 at 10:00 PM, De Gao wrote:
>>>>> On 05/12/2010 20:49, Roland Kuhn wrote:
>>>>>> On Dec 5, 2010, at 21:16 , Randall R Schulz wrote:
>>>>>>> On Sunday December 5 2010, Seth Tisue wrote:
>>>>>>>>>>>>> "Erik" == Erik Engbrecht writes:
>>>>>>>>>> Programming is an expert activity. All its tools are for experts.
>>>>>>>> ...
>>>>>>>>
>>>>>>>> Erik> Programming is like reading and writing. Most people can
>>>>>>>> derive Erik> significant benefit from knowing the basics of how to
>>>>>>>> do
>>>>>>>> it, [...]
>>>>>>>>
>>>>>>>> Amen, brother.
>>>>>>> And what does that have to do with Scala? Is every programming
>>>>>>> language
>>>>>>> to be designed with readability and understandability by members of
>>>>>>> the
>>>>>>> general public in mind?
>>>>>>>
>>>>>>> Sorry, I don't buy it. First things first here means what
>>>>>>> professionals
>>>>>>> need takes strong precedence over what any other audience would like.
>>>>>> Yes, and there are two kinds of “professionals”: computer scientists
>>>>>> (I
>>>>>> mean the real ones, which is imperfectly correlated with a university
>>>>>> faculty of the same name) and all others who need to do programming in
>>>>>> order
>>>>>> to get their jobs done (e.g. high energy particle physics community).
>>>>>> While
>>>>>> the latter have to write code which produces the right result for a
>>>>>> specific
>>>>>> input set while being just clean enough to allow debugging, the former
>>>>>> are
>>>>>> capable of producing libraries and frameworks to be used by others. In
>>>>>> a
>>>>>> sense these groups are in a producer–consumer relationship. Can we
>>>>>> agree
>>>>>> that both are important?
>>>>>>
>>>>>> Note how the “general public” does not appear in my previous
>>>>>> paragraph.
>>>>>> From my own experience I must conclude that any programming activity
>>>>>> which
>>>>>> is entirely private (meaning not motivated by business or
>>>>>> contributions to
>>>>>> other—sizable—projects) does not reach a significant level.
>>>>>>
>>>>>> Now, what was the original question again: Is Scala only suited for
>>>>>> “experts”? (I take this to mean the antonym to “beginners”.) I don’t
>>>>>> think
>>>>>> so, since it is possible to write beautiful libraries which are easy
>>>>>> to use,
>>>>>> albeit hard to understand internally (e.g. the Scala collections).
>>>>>> What may
>>>>>> be lacking are more resources like tutorials, blogs, etc. geared
>>>>>> towards
>>>>>> beginners, so that they can use the language without having to look
>>>>>> under
>>>>>> the hood. But my knowledge here is a bit outdated since I did no
>>>>>> surveys
>>>>>> wrt. this in the recent past.
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>> Roland
>>>>>>
>>>>>> --
>>>>>> [scala-debate on 2009/10/2]
>>>>>> Viktor Klang: When will the days of numerical overflow be gone?
>>>>>> Ricky Clarkson: One second after 03:14:07 UTC on Tuesday, 19 January
>>>>>> 2038
>>>>>>
>>>>> Can we call some stuff is for 'expert' that you need to read quite a
>>>>> lot
>>>>> of document to use it, like the Airebus A380, but some don't need to
>>>>> read
>>>>> any document (or not so much document) to use it, like a dish washer?
>>>> Let me ask again: What did you read? -- Martin
>>>>
>>>> What I'm reading is not a case for everyone. I'm reading the language
>>>> specification.
>>>>
>>
>>
>> --
>> http://erikengbrecht.blogspot.com/
>>
Not really. I've read the Scala by Example and Program in Scala from
beginning to end. I just spend more time on the spec because I thought
that's the book that provide all of the information. But seems your guys
don't think so.
It seems that several people agreed that not all the features of Scala
needs to be involved in development. So to make this thread more
meaningful, could I beg those skilled Scala developers that make a brief
list of features that suit beginner, advanced user and expert of Scala?
Thank you very much.

ichoran
Joined: 2009-08-14,
User offline. Last seen 2 years 3 weeks ago.
Re: Is Scala an expert language?

On Wed, Dec 8, 2010 at 4:47 PM, De Gao <gaode.ml@gmail.com> wrote:

Not really. I've read the Scala by Example and Program in Scala from beginning to end. I just spend more time on the spec because I thought that's the book that provide all of the information. But seems your guys don't think so.
It seems that several people agreed that not all the features of Scala needs to be involved in development. So to make this thread more meaningful, could I beg those skilled Scala developers that make a brief list of features that suit beginner, advanced user and expert of Scala?

I don't like to learn languages this way because not all "beginners" need to create the same programs.  So, for example, if you're doing a lot of I/O work as a beginner you would want to know about Option (and exceptions) in some detail, in order to handle errors in input data.  In contrast, if you were doing numeric work, you would want to understand tail recursion and the differences between for loops and while loops and possibly a little about implicits.  If you had particularly intricate data, you might want to understand the type system better, including co- and contravariance.  If you wanted to make a responsive GUI app, you would want to know something about actors.  If you have programmed in Java, you probably want to leverage that when starting out ("this works almost like Java, except better!"), but if not, you might want to start out emphasizing the functional features ("If you have a list xs, xs.map(x => x*2) will multiply everything by two!").

Thus, when learning a new language, I try to read through at least one fairly comprehensive book (like Programming in Scala) so I am familiar with the kinds of things that are out there, but then I learn by doing--I try to write example programs, at least, and look up the information I need (in the book(s) I've read if I've forgotten, in the spec if necessary, or on a mailing list or site like StackOverflow).  This way, I can end up expert in some areas and barely a beginner in others, but in a way that _suits what I need to do_.

Anyway, those things that really do take considerable study to understand are:
  (1) Exactly how the types and builders in the collections library work
  (2) The intricacies of the type system (including aliases and this.type)
  (3) How to create a robust and informative parser from the given parser libraries
  (4) How to maximally leverage functional programming to solve problems
but in each case, you can get a lot done practically without understanding every detail.

  --Rex
Russ P.
Joined: 2009-01-31,
User offline. Last seen 1 year 26 weeks ago.
Re: Is Scala an expert language?
I could be wrong, but I don't think a formal language spec really has any place in learning to use a language -- unless perhaps you are talking about very advanced usage. A formal spec is more for language designers and implementors. Using a formal spec to learn the basics of a language seems to me a bit like reading official family law volumes to learn how to raise a family.

Russ P.


On Wed, Dec 8, 2010 at 1:47 PM, De Gao <gaode.ml@gmail.com> wrote:
On 07/12/2010 13:04, Alec Zorab wrote:
Undoubtedly, but I think the argument of "I've been studying the SLS
for a year and can't write fluent scala, so scala hasn't got a future"
is a bit like saying "I've been studying internal combustion engines
for a year, but I still can't drive properly, so cars are never going
to get popular".

On Mon, Dec 6, 2010 at 7:48 PM, Erik Engbrecht<erik [dot] engbrecht [at] gmail [dot] com>  wrote:
I actually found the spec quite useful in learning - and still learning -
Scala.  Of course I would never consider it as a singular source.  But it is
an unquestionably valuable resource.

On Mon, Dec 6, 2010 at 3:34 PM, Alec Zorab<aleczorab [at] googlemail [dot] com>  wrote:
I'm not surprised you can't write programs fluently after a year if
all you're reading is the SLS. Unless you're an absolute genius, with
the insight of a dozen lesser men, you will not be able to imagine
every usage available / applicable to a situation purely from the
spec. By design, specifications are narrow, sterile things which nail
down as many details as possible. You need to look at how other people
have approached problems to gain any appreciation (this goes for any
language - anyone who could only read the c++ spec and then write
something of any significance that actually worked would have my
undying admiration)

On Mon, Dec 6, 2010 at 3:17 PM, De Gao<gaode.ml@gmail.com>  wrote:
On 06/12/2010 09:18, martin odersky wrote:

On Sun, Dec 5, 2010 at 10:00 PM, De Gao<gaode.ml@gmail.com>  wrote:
On 05/12/2010 20:49, Roland Kuhn wrote:
On Dec 5, 2010, at 21:16 , Randall R Schulz wrote:
On Sunday December 5 2010, Seth Tisue wrote:
"Erik" == Erik Engbrecht<erik [dot] engbrecht [at] gmail [dot] com>    writes:
Programming is an expert activity. All its tools are for experts.
...

Erik>    Programming is like reading and writing.  Most people can
derive Erik>    significant benefit from knowing the basics of how to
do
it, [...]

Amen, brother.
And what does that have to do with Scala? Is every programming
language
to be designed with readability and understandability by members of
the
general public in mind?

Sorry, I don't buy it. First things first here means what
professionals
need takes strong precedence over what any other audience would like.
Yes, and there are two kinds of “professionals”: computer scientists
(I
mean the real ones, which is imperfectly correlated with a university
faculty of the same name) and all others who need to do programming in
order
to get their jobs done (e.g. high energy particle physics community).
While
the latter have to write code which produces the right result for a
specific
input set while being just clean enough to allow debugging, the former
are
capable of producing libraries and frameworks to be used by others. In
a
sense these groups are in a producer–consumer relationship. Can we
agree
that both are important?

Note how the “general public” does not appear in my previous
paragraph.
 From my own experience I must conclude that any programming activity
which
is entirely private (meaning not motivated by business or
contributions to
other—sizable—projects) does not reach a significant level.

Now, what was the original question again: Is Scala only suited for
“experts”? (I take this to mean the antonym to “beginners”.) I don’t
think
so, since it is possible to write beautiful libraries which are easy
to use,
albeit hard to understand internally (e.g. the Scala collections).
What may
be lacking are more resources like tutorials, blogs, etc. geared
towards
beginners, so that they can use the language without having to look
under
the hood. But my knowledge here is a bit outdated since I did no
surveys
wrt. this in the recent past.

Regards,

Roland

--
[scala-debate on 2009/10/2]
Viktor Klang: When will the days of numerical overflow be gone?
Ricky Clarkson: One second after 03:14:07 UTC on Tuesday, 19 January
2038

Can we call some stuff is for 'expert' that you need to read quite a
lot
of document to use it, like the Airebus A380, but some don't need to
read
any document (or not so much document) to use it, like a dish washer?
Let me ask again: What did you read? -- Martin

What I'm reading is not a case for everyone. I'm reading the language
specification.



--
http://erikengbrecht.blogspot.com/

Not really. I've read the Scala by Example and Program in Scala from beginning to end. I just spend more time on the spec because I thought that's the book that provide all of the information. But seems your guys don't think so.
It seems that several people agreed that not all the features of Scala needs to be involved in development. So to make this thread more meaningful, could I beg those skilled Scala developers that make a brief list of features that suit beginner, advanced user and expert of Scala?
Thank you very much.



--
http://RussP.us
Razvan Cojocaru 3
Joined: 2010-07-28,
User offline. Last seen 42 years 45 weeks ago.
RE: Is Scala an expert language?

>It seems that several people agreed that not all the features of Scala
needs to be involved in development. So to make this thread >more
meaningful, could I beg those skilled Scala developers that make a brief
list of features that suit beginner, advanced user and >expert of Scala?
>Thank you very much.

I don't think it's about NOT using some parts of the language, it's more
about not abusing them... I tried to gather some abuses that should be
avoided by the "average java Joe" here: https://gist.github.com/595556 and
it's really meant to go on top of the scala style guide linked to from
there.

Needless to say, it led to a revolt and heated discussions etc. Feel free to
ignore them "rules" :)

I don't believe the basic scala is complicated. You can use the advanced
type system... just enough, a lot or at all. In Pascal, there was no List
and you had to make your own and you couldn't type it. Here you're provided
a few and each can be typed with variance or not... you could use List[Any]
everywhere and not worry about it any more than a List. Most of the
time you probably don't need to worry about variance and can get away with
List[Student], which is simple enough...

So, unless you're building a library or advanced API and not just coding the
guts of a component hidden 3 layers deep... I wouldn't waste time to worry
about these things. Reading any of the scala books should be more than
enough.

Cheers,
Razvan

tolsen77
Joined: 2008-10-08,
User offline. Last seen 1 year 38 weeks ago.
Re: Is Scala an expert language?
Well, I'm not that skilled in Scala but I've been using it for a long time. I started with C++ which I learned in college. That language also got lots of complaints for being too advanced, which surprised me since I thought it was fairly straight forward to use if you exclude template programming. I think the type system in Scala's equivalent of C++ templates. I never learned any advanced C++ template programmming, though I did get the Modern C++ Design book and it's still sitting unread in my book shelf together with the Bjarne's bible :).

Now I'm pretty sure people new to programming shouldn't start with Scala so you'd have to assume experience with some other OO/general-purpose language. For beginners of Scala I think traits (interfaces with code) and basic usage of the collection library (map,reduce,filter,foreach) is fine. As you get more familiar you learn to use case classes/object in pattern matching. If you're coming for OO-programming it's going to take some time getting used to functional programming, so expect this to grow on you for 1-2 years.

For more intermediate level, I reckon usage of the type system with type parameters and type members. Partial functions. Function closures (if you're coming for OO). Some usage of implicits. Modelling with actors instead of object aggregation/members.

For advanced I don't know since I'm not there yet and maybe I'll never be, but I'm pretty sure it'll involve the type system with type classes.

In summary: Don't Panic!

On Wed, Dec 8, 2010 at 10:47 PM, De Gao <gaode.ml@gmail.com> wrote:
Not really. I've read the Scala by Example and Program in Scala from beginning to end. I just spend more time on the spec because I thought that's the book that provide all of the information. But seems your guys don't think so.
It seems that several people agreed that not all the features of Scala needs to be involved in development. So to make this thread more meaningful, could I beg those skilled Scala developers that make a brief list of features that suit beginner, advanced user and expert of Scala?
Thank you very much.

Jesper Nordenberg
Joined: 2008-12-27,
User offline. Last seen 42 years 45 weeks ago.
Re: Is Scala an expert language?

Trond Olsen skrev 2010-12-09 05:39:
> Well, I'm not that skilled in Scala but I've been using it for a long
> time. I started with C++ which I learned in college. That language also
> got lots of complaints for being too advanced, which surprised me since
> I thought it was fairly straight forward to use *if* you exclude
> template programming. I think the type system in Scala's equivalent of
> C++ templates. I never learned any advanced C++ template programmming,
> though I did get the Modern C++ Design book and it's still sitting
> unread in my book shelf together with the Bjarne's bible :).

Having done a fair bit of type level programming in both Scala and C++,
I would say that Scala's type system is in some ways superior to C++
templates, i.e. separate compilation, traits, and in some ways inferior,
i.e. specialization, performance, type equality checks.

Type level programming (including implicits to some extent) is often
viewed by many as complex, and to some level I agree as the syntax is
often much more cumbersome than it have to be. Look at Clay and D for
some examples of simplified type level programming. Like C++ both
languages support TC type level programming (which I personally don't
see as a disadvantage).

/Jesper Nordenberg

odersky
Joined: 2008-07-29,
User offline. Last seen 45 weeks 6 days ago.
Re: Is Scala an expert language?


On Thu, Dec 9, 2010 at 3:42 AM, Razvan Cojocaru <pub [at] razie [dot] com> wrote:
>It seems that several people agreed that not all the features of Scala
needs to be involved in development. So to make this thread >more
meaningful, could I beg those skilled Scala developers that make a brief
list of features that suit beginner, advanced user and >expert of Scala?
>Thank you very much.

I don't think it's about NOT using some parts of the language, it's more
about not abusing them... I tried to gather some abuses that should be
avoided by the "average java Joe" here: https://gist.github.com/595556 and
it's really meant to go on top of the scala style guide linked to from
there.

I think that's very a good list, even though some of the rules are gradual, not absolute.

 -- Martin



 
Needless to say, it led to a revolt and heated discussions etc. Feel free to
ignore them "rules" :)

I don't believe the basic scala is complicated. You can use the advanced
type system... just enough, a lot or at all. In Pascal, there was no List
and you had to make your own and you couldn't type it. Here you're provided
a few and each can be typed with variance or not... you could use List[Any]
everywhere and not worry about it any more than a List<void*>. Most of the
time you probably don't need to worry about variance and can get away with
List[Student], which is simple enough...

So, unless you're building a library or advanced API and not just coding the
guts of a component hidden 3 layers deep... I wouldn't waste time to worry
about these things. Reading any of the scala books should be more than
enough.

Cheers,
Razvan





odersky
Joined: 2008-07-29,
User offline. Last seen 45 weeks 6 days ago.
Re: Is Scala an expert language?


On Wed, Dec 8, 2010 at 10:47 PM, De Gao <gaode.ml@gmail.com> wrote:
...
Not really. I've read the Scala by Example and Program in Scala from beginning to end. I just spend more time on the spec because I thought that's the book that provide all of the information. But seems your guys don't think so.
It seems that several people agreed that not all the features of Scala needs to be involved in development. So to make this thread more meaningful, could I beg those skilled Scala developers that make a brief list of features that suit beginner, advanced user and expert of Scala?
Thank you very much.

It's an intriguing question. I believe the answer will differ a little bit for everyone, but I'll put up a strawman nevertheless. I assume here that
programmers have already a good knowledge of Java, so we can take at least pre-generics Java for granted. If that's not the case, some of the early concepts such as classes and exceptions need to be moved to more advanced levels.

Also, I distinguish between application programmers and library designers, because the required skill sets are radically different.

So here's something for y'all to knock down ;-):

Level A1: Beginning application programmer

Java-like statements and expressions: standard operators, method calls, conditionals, loops, try/catch
class, object, def, val, var, import, package
Infix notation for method calls
Simple closures
Collections with map, filter, etc
for-expressions

Level A2: Intermediate application programmer

Pattern matching
Trait composition
Recursion, in particular tail recursion
XML literals

Level A3: Expert application programmer

Folds
Streams
Actors
Combinator parsers

Level L1: Junior library designer

Type parameters
Traits
Lazy vals
Control abstraction, currying
By-name parameters

Level L2: Senior library designer

Variance annotations
Existential types (to interface with Java wildcards)
Abstract types
Self types
Structural types

Level L3: Expert library designer

Early initializers
Extractors
Implicit definitions
Higher-kinded types
Defining map/flatmap/withFilter for new kinds of for-expressions

Cheers

 -- Martin
odersky
Joined: 2008-07-29,
User offline. Last seen 45 weeks 6 days ago.
Re: Is Scala an expert language?


On Thu, Dec 9, 2010 at 11:11 AM, martin odersky <martin [dot] odersky [at] epfl [dot] ch> wrote:


On Wed, Dec 8, 2010 at 10:47 PM, De Gao <gaode.ml@gmail.com> wrote:
...
Not really. I've read the Scala by Example and Program in Scala from beginning to end. I just spend more time on the spec because I thought that's the book that provide all of the information. But seems your guys don't think so.
It seems that several people agreed that not all the features of Scala needs to be involved in development. So to make this thread more meaningful, could I beg those skilled Scala developers that make a brief list of features that suit beginner, advanced user and expert of Scala?
Thank you very much.

It's an intriguing question. I believe the answer will differ a little bit for everyone, but I'll put up a strawman nevertheless. I assume here that
programmers have already a good knowledge of Java, so we can take at least pre-generics Java for granted. If that's not the case, some of the early concepts such as classes and exceptions need to be moved to more advanced levels.

Also, I distinguish between application programmers and library designers, because the required skill sets are radically different.

So here's something for y'all to knock down ;-):

Level A1: Beginning application programmer

Java-like statements and expressions: standard operators, method calls, conditionals, loops, try/catch
class, object, def, val, var, import, package
Infix notation for method calls
Simple closures
Collections with map, filter, etc
for-expressions

Level A2: Intermediate application programmer

Pattern matching
Trait composition
Recursion, in particular tail recursion
XML literals

Level A3: Expert application programmer

Folds
Streams
Actors
Combinator parsers

Level L1: Junior library designer

Type parameters
Traits
Lazy vals
Control abstraction, currying
By-name parameters

Level L2: Senior library designer

Variance annotations
Existential types (to interface with Java wildcards)
Abstract types
Self types
Structural types

Level L3: Expert library designer

Early initializers
Extractors
Implicit definitions
Higher-kinded types
Defining map/flatmap/withFilter for new kinds of for-expressions

Cheers

 -- Martin

One additional remark: if one insists in a total order, I'd probably group into four levels as follows:

A1, A2/L1, A3/L2, L3

I.e. A2 is about the same level of difficulty as L1, same for A3 and L2.

Cheers

 -- Martin

Razvan Cojocaru 3
Joined: 2010-07-28,
User offline. Last seen 42 years 45 weeks ago.
RE: Is Scala an expert language?

Big boss steps in J All that’s missing is a compiler setting now J (or plugin, I guess) or can it be handled by some tools like FindBugs.

 

From: odersky [at] gmail [dot] com [mailto:odersky [at] gmail [dot] com] On Behalf Of martin odersky
Sent: December-09-10 5:11 AM
To: De Gao
Cc: Alec Zorab; Erik Engbrecht; Roland Kuhn; Randall R Schulz; scala-debate [at] listes [dot] epfl [dot] ch
Subject: Re: [scala-debate] Is Scala an expert language?

 

 

On Wed, Dec 8, 2010 at 10:47 PM, De Gao <gaode.ml@gmail.com> wrote:

...

Not really. I've read the Scala by Example and Program in Scala from beginning to end. I just spend more time on the spec because I thought that's the book that provide all of the information. But seems your guys don't think so.
It seems that several people agreed that not all the features of Scala needs to be involved in development. So to make this thread more meaningful, could I beg those skilled Scala developers that make a brief list of features that suit beginner, advanced user and expert of Scala?
Thank you very much.


It's an intriguing question. I believe the answer will differ a little bit for everyone, but I'll put up a strawman nevertheless. I assume here that
programmers have already a good knowledge of Java, so we can take at least pre-generics Java for granted. If that's not the case, some of the early concepts such as classes and exceptions need to be moved to more advanced levels.

Also, I distinguish between application programmers and library designers, because the required skill sets are radically different.

So here's something for y'all to knock down ;-):

Level A1: Beginning application programmer

Java-like statements and expressions: standard operators, method calls, conditionals, loops, try/catch
class, object, def, val, var, import, package
Infix notation for method calls
Simple closures
Collections with map, filter, etc
for-expressions

Level A2: Intermediate application programmer

Pattern matching
Trait composition
Recursion, in particular tail recursion
XML literals

Level A3: Expert application programmer

Folds
Streams
Actors
Combinator parsers

Level L1: Junior library designer

Type parameters
Traits
Lazy vals
Control abstraction, currying
By-name parameters

Level L2: Senior library designer

Variance annotations
Existential types (to interface with Java wildcards)
Abstract types
Self types
Structural types

Level L3: Expert library designer

Early initializers
Extractors
Implicit definitions
Higher-kinded types
Defining map/flatmap/withFilter for new kinds of for-expressions

Cheers

 -- Martin

H-star Development
Joined: 2010-04-14,
User offline. Last seen 2 years 26 weeks ago.
Re: RE: Is Scala an expert language?

i already poked into almost any of that points, and i don't find them to be very far apart. the only measureable difference was:
application programmer: "i want to lib that does x so i can do y easily"
lib coder: "yes of course, but let me hide in the architect's room until i've figured out a solution that works not only for your special case, but for the generalized problem without adding complexity for the caller.
*some time later*
appl coder:
omg this is so awesome, i'll tell all my appl coding friends, they'll love it. next time i'll think a bit more about what i want and maybe define a more general api from the beginning.

the next day, a web frontend coder talks to the appl coder:
"i need another method on your webservice so i can do x and y"
appl:
"sure, just let me hide in my personal dungeon and wait until i've figured out a solution that also solved that similar problem you had last week"
frontend guy: nice.

lib: more architecturing, less coding
appl: less architecturing, more coding.
one can do both, imho.

-------- Original-Nachricht --------
> Datum: Thu, 9 Dec 2010 06:52:51 -0500
> Von: "Razvan Cojocaru"
> An: "\'martin odersky\'"
> CC: scala-debate [at] listes [dot] epfl [dot] ch
> Betreff: RE: [scala-debate] Is Scala an expert language?

> Big boss steps in J All that's missing is a compiler setting now J (or
> plugin, I guess) or can it be handled by some tools like FindBugs.
>
>
>
> From: odersky [at] gmail [dot] com [mailto:odersky [at] gmail [dot] com] On Behalf Of martin
> odersky
> Sent: December-09-10 5:11 AM
> To: De Gao
> Cc: Alec Zorab; Erik Engbrecht; Roland Kuhn; Randall R Schulz;
> scala-debate [at] listes [dot] epfl [dot] ch
> Subject: Re: [scala-debate] Is Scala an expert language?
>
>
>
>
>
> On Wed, Dec 8, 2010 at 10:47 PM, De Gao wrote:
>
> ...
>
> Not really. I've read the Scala by Example and Program in Scala from
> beginning to end. I just spend more time on the spec because I thought
> that's the book that provide all of the information. But seems your guys
> don't think so.
> It seems that several people agreed that not all the features of Scala
> needs
> to be involved in development. So to make this thread more meaningful,
> could
> I beg those skilled Scala developers that make a brief list of features
> that
> suit beginner, advanced user and expert of Scala?
> Thank you very much.
>
>
> It's an intriguing question. I believe the answer will differ a little bit
> for everyone, but I'll put up a strawman nevertheless. I assume here that
> programmers have already a good knowledge of Java, so we can take at least
> pre-generics Java for granted. If that's not the case, some of the early
> concepts such as classes and exceptions need to be moved to more advanced
> levels.
>
> Also, I distinguish between application programmers and library designers,
> because the required skill sets are radically different.
>
> So here's something for y'all to knock down ;-):
>
> Level A1: Beginning application programmer
>
> Java-like statements and expressions: standard operators, method calls,
> conditionals, loops, try/catch
> class, object, def, val, var, import, package
> Infix notation for method calls
> Simple closures
> Collections with map, filter, etc
> for-expressions
>
> Level A2: Intermediate application programmer
>
> Pattern matching
> Trait composition
> Recursion, in particular tail recursion
> XML literals
>
> Level A3: Expert application programmer
>
> Folds
> Streams
> Actors
> Combinator parsers
>
> Level L1: Junior library designer
>
> Type parameters
> Traits
> Lazy vals
> Control abstraction, currying
> By-name parameters
>
> Level L2: Senior library designer
>
> Variance annotations
> Existential types (to interface with Java wildcards)
> Abstract types
> Self types
> Structural types
>
> Level L3: Expert library designer
>
> Early initializers
> Extractors
> Implicit definitions
> Higher-kinded types
> Defining map/flatmap/withFilter for new kinds of for-expressions
>
> Cheers
>

Copyright © 2012 École Polytechnique Fédérale de Lausanne (EPFL), Lausanne, Switzerland