Is Scala an expert language?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
102 messages Options
1234 ... 6
Reply | Threaded
Open this post in threaded view
|

Is Scala an expert language?

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
Reply | Threaded
Open this post in threaded view
|

Re: Is Scala an expert language?

Dennis Haupt-2
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
>

Reply | Threaded
Open this post in threaded view
|

Re: Is Scala an expert language?

Justin du coeur
In reply to this post by De Gao
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

Reply | Threaded
Open this post in threaded view
|

Re: Is Scala an expert language?

De Gao
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


Reply | Threaded
Open this post in threaded view
|

Re: Is Scala an expert language?

Erik Engbrecht
In reply to this post by De Gao
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/
Reply | Threaded
Open this post in threaded view
|

Re: Is Scala an expert language?

Alec Zorab
In reply to this post by De Gao
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 <[hidden email]> 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 <[hidden email]> 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
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Is Scala an expert language?

Kevin Wright-3



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 : [hidden email]
pulse / skype: kev.lee.wright
twitter: @thecoda

Reply | Threaded
Open this post in threaded view
|

Re: Is Scala an expert language?

Randall R Schulz-2
In reply to this post by De Gao
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


Reply | Threaded
Open this post in threaded view
|

Re: Is Scala an expert language?

Erik Engbrecht
>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 <[hidden email]> 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/
Reply | Threaded
Open this post in threaded view
|

Re: Is Scala an expert language?

Martin Odersky
In reply to this post by De Gao


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

Reply | Threaded
Open this post in threaded view
|

Re: Is Scala an expert language?

Alec Zorab
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 <[hidden email]> wrote:

>
>
> On Sun, Dec 5, 2010 at 5:42 PM, De Gao <[hidden email]> 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
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Is Scala an expert language?

Seth Tisue
In reply to this post by Erik Engbrecht
>>>>> "Erik" == Erik Engbrecht <[hidden email]> 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.

--
Seth Tisue @ Northwestern University | http://tisue.net
lead developer, NetLogo: http://ccl.northwestern.edu/netlogo/
Reply | Threaded
Open this post in threaded view
|

Re: Is Scala an expert language?

Randall R Schulz-2
On Sunday December 5 2010, Seth Tisue wrote:

> >>>>> "Erik" == Erik Engbrecht <[hidden email]> 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
Reply | Threaded
Open this post in threaded view
|

Re: Is Scala an expert language?

Kevin Wright-3


On 5 December 2010 20:16, Randall R Schulz <[hidden email]> wrote:
On Sunday December 5 2010, Seth Tisue wrote:
> >>>>> "Erik" == Erik Engbrecht <[hidden email]> 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 : [hidden email]
pulse / skype: kev.lee.wright
twitter: @thecoda

Reply | Threaded
Open this post in threaded view
|

Re: Is Scala an expert language?

Erik Engbrecht
In reply to this post by Randall R Schulz-2
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 <[hidden email]> wrote:
On Sunday December 5 2010, Seth Tisue wrote:
> >>>>> "Erik" == Erik Engbrecht <[hidden email]> 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/
Reply | Threaded
Open this post in threaded view
|

Re: Is Scala an expert language?

Roland Kuhn-2
In reply to this post by Randall R Schulz-2
On Dec 5, 2010, at 21:16 , Randall R Schulz wrote:

> On Sunday December 5 2010, Seth Tisue wrote:
>>>>>>> "Erik" == Erik Engbrecht <[hidden email]> 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

Reply | Threaded
Open this post in threaded view
|

Re: Is Scala an expert language?

Russ P.
In reply to this post by De Gao
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
Reply | Threaded
Open this post in threaded view
|

Re: Is Scala an expert language?

Kevin Wright-3


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.


 

--
Kevin Wright

mail / gtalk / msn : [hidden email]
pulse / skype: kev.lee.wright
twitter: @thecoda

Reply | Threaded
Open this post in threaded view
|

Re: Is Scala an expert language?

De Gao
In reply to this post by Roland Kuhn-2
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<[hidden email]>  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?
Reply | Threaded
Open this post in threaded view
|

Re: Is Scala an expert language?

Philippe Lhoste
In reply to this post by Justin du coeur
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.

--
Philippe Lhoste
--  (near) Paris -- France
--  http://Phi.Lho.free.fr
--  --  --  --  --  --  --  --  --  --  --  --  --  --

1234 ... 6