- About Scala
- Documentation
- Code Examples
- Software
- Scala Developers
What is highest priority for Scala to succeed in corporate world (Should be in scala-debate?) ?
Even though this perhaps should be in scala-debate, I'm posting it here because: 1) It's really very important. 2) I've never seen a similar question posted.
This comes after reading a few of the "White elefant" posts.
The question is simple: List, in descending order of priority, what you feel needs to be addressed/fixed/whatever for Scala to succeed in the corporate (and hence IMHO ultimately the "real") world.
My list:
1. IDE Support. Scala must have rock-hard support in at least one IDE, and must have "pretty good" support in Eclipse, since it's the de facto standard. I don't think we're close yet. This alone could lose Scala the language wars.
2. Documentation. Scaladoc documentation needs to be expanded on greatly; at the same time Scaladoc itself could stand some enhancements, though exactly where is less obvious. I am complicit in this; I keep on intending to devote some serious time to enhancing scaladoc, and keep failing to do so, dangit!
3. A "Scala Cookbook". I'm amazed one isn't out or on the web already. I know, there's lots on stackoverflow and other sites but it's not the same. Scala is such a neat language, that a newcomer could easily get caught up and read for hours on a good cookbook, saying things like, "Wow, I can do it in just one line...".
And your suggestions? Recommended three or less because probably no one will read past the third one :-).
Ken
This comes after reading a few of the "White elefant" posts.
The question is simple: List, in descending order of priority, what you feel needs to be addressed/fixed/whatever for Scala to succeed in the corporate (and hence IMHO ultimately the "real") world.
My list:
1. IDE Support. Scala must have rock-hard support in at least one IDE, and must have "pretty good" support in Eclipse, since it's the de facto standard. I don't think we're close yet. This alone could lose Scala the language wars.
2. Documentation. Scaladoc documentation needs to be expanded on greatly; at the same time Scaladoc itself could stand some enhancements, though exactly where is less obvious. I am complicit in this; I keep on intending to devote some serious time to enhancing scaladoc, and keep failing to do so, dangit!
3. A "Scala Cookbook". I'm amazed one isn't out or on the web already. I know, there's lots on stackoverflow and other sites but it's not the same. Scala is such a neat language, that a newcomer could easily get caught up and read for hours on a good cookbook, saying things like, "Wow, I can do it in just one line...".
And your suggestions? Recommended three or less because probably no one will read past the third one :-).
Ken










Re: Re: What is highest priority for Scala to succeed in corpor
On 15 Nov 2011, at 14:50, Eric Kolotyluk wrote:
> Scala is no different than any stock in this respect, and is not the whole point of this debate is how to convince more developers and architects, especially in the corporate world, to invest in Scala?
From what I've seen in the financial sector in London, devs don't need a huge amount of convincing. A lot of orgs are already using scala, some in a big way.
I have met a few devs that dismiss scala as complex, but most of those haven't actually tried it my experience. They are also very comfortable being Java experts and fear the unknown. That fine by me, they can have those spring infested reflection-tastic legacy systems.
But, these orgs are gargantuan beasts that are slow and cumbersome, powered by an army of, typically, quiet devs that don't make a lot of noise about what they do.
Also, new projects don't happen often, particularly in this climate, so most of the scala work is around existing systems.
I am also being contacted by recruiters/agents on a weekly basis about scala jobs, so the demand is growing.
Fundamentally, don't underestimate how popular scala already is. But, more is better right?
Channing
Re: Re: What is highest priority for Scala to succeed in corpor
As has already repeatedly been asked, please take this discussion over
to scala-debate.
http://www.scala-lang.org/node/199
Re: Re: What is highest priority for Scala to succeed in corpor
On 2011-11-15 6:50 AM, Eric Kolotyluk wrote:
> On 2011-11-14 11:26 PM, Tony Morris wrote:
>> On 15/11/11 16:22, Ittay Dror wrote:
>>> Not because the spec is complex, but
>>> because the subjective minds of many developers deem it as complex.
>>> These
>>> are the potential clients of the language. If they say the "product"
>>> is too
>>> complex for them, they are right.
>> You don't see a great big gaping hole in this argument and this very
>> fact fascinates me endlessly.
> I disagree, I think there is no hole in this argument.
>
> If you look at it in capitalistic or economic terms, the value of a
> stock is usually related to the number of people willing to invest in
> it. If the subjective minds of many investors deem the stock too
> risky, then they are not likely to invest.
>
> On the other hand, if you can show them that while the stock may be
> risky, but still valuable in other ways, then they may be more willing
> to invest. Don't try to change people's minds on what they have
> already decided, instead show them other things they have not yet
> considered or made up their minds on.
>
> Scala is no different than any stock in this respect, and is not the
> whole point of this debate is how to convince more developers and
> architects, especially in the corporate world, to invest in Scala?
>
> I think Ittay Dror showed us some remarkable economic insight there.
> Kudos!
>
> With insight, change can begin.
Re: Re: What is highest priority for Scala to succeed in corpor
Tony Morris wrote: it isn't a matter of logic, but of emotions. people are irrational. and still, i want to convince these developers to try and use scala. i do this for my own benefit: so that the next place i work in will be a scala shop. talking about specs and toughening up just doesn't win IMHO.
Re: Re: What is highest priority for Scala to succeed in corpor
On 15/11/11 18:24, Ittay Dror wrote:
>
> Tony Morris wrote:
> > On 15/11/11 16:22, Ittay Dror wrote:
> >> Not because the spec is complex, but
> >> because the subjective minds of many developers deem it as complex. These
> >> are the potential clients of the language. If they say the "product" is too
> >> complex for them, they are right.
> > You don't see a great big gaping hole in this argument and this very
> > fact fascinates me endlessly.
> it isn't a matter of logic, but of emotions. people are irrational. and still, i
> want to convince these developers to try and use scala. i do this for my own
> benefit: so that the next place i work in will be a scala shop. talking about
> specs and toughening up just doesn't win IMHO.
> >
Does this "not a matter of logic" and "people are irrational" mantra
that is bandied about also mean I can dismiss your argument? Because it
sure is inviting it.
Re: Re: What is highest priority for Scala to succeed in corpor
On 15 Nov 2011, at 08:48, "Tony Morris" wrote:
> On 15/11/11 18:24, Ittay Dror wrote:
>>
>> Tony Morris wrote:
>>> On 15/11/11 16:22, Ittay Dror wrote:
>>>> Not because the spec is complex, but
>>>> because the subjective minds of many developers deem it as complex. These
>>>> are the potential clients of the language. If they say the "product" is too
>>>> complex for them, they are right.
>>> You don't see a great big gaping hole in this argument and this very
>>> fact fascinates me endlessly.
>> it isn't a matter of logic, but of emotions. people are irrational. and still, i
>> want to convince these developers to try and use scala. i do this for my own
>> benefit: so that the next place i work in will be a scala shop. talking about
>> specs and toughening up just doesn't win IMHO.
>>>
> Does this "not a matter of logic" and "people are irrational" mantra
> that is bandied about also mean I can dismiss your argument? Because it
> sure is inviting it.
>
Re: What is highest priority for Scala to succeed in corporate w
> How to handle this situation in the Enterprise? One previous post mentioned
> "Scala Lite", but did not elaborate. I think it's time to consider the
> possibility of optionally "feature-restricting" Scala so that the
> Enterprise can ensure its code is at a certain level of approachability. I
> won't try to give a full spec here, but will give one suggestion I think
> makes sense: It should be possible, in the Enterprise, to disable the
> ability to define implicit parameters.
Sorry, but that would be fixing the symptoms, not the causation. What
would that even buy you? Code which uses the same features as Java, but
in a slightly different syntax? More features than Java, but not too
many, in order to not scare people off?
I'd say that there are plenty of people around here who would be happy
to assist learners who struggle with advanced features. It's certainly
not an indication of a low IQ (or some other nonsense metric) that
someone new has no clue about higher kinds or union types or
catamorphism or ... The point is that many people are keen to learn, and
that's a good thing. If you are not keen to learn, you have to rethink
your attitude towards programming.
Re: Re: What is highest priority for Scala to succeed in corpor
On 11/15/2011 06:43 AM, Lars Hupel wrote:
>> How to handle this situation in the Enterprise? One previous post mentioned
>> "Scala Lite", but did not elaborate. I think it's time to consider the
>> possibility of optionally "feature-restricting" Scala so that the
>> Enterprise can ensure its code is at a certain level of approachability. I
>> won't try to give a full spec here, but will give one suggestion I think
>> makes sense: It should be possible, in the Enterprise, to disable the
>> ability to define implicit parameters.
> Sorry, but that would be fixing the symptoms, not the causation. What
> would that even buy you? Code which uses the same features as Java, but
> in a slightly different syntax? More features than Java, but not too
> many, in order to not scare people off?
>
> I'd say that there are plenty of people around here who would be happy
> to assist learners who struggle with advanced features. It's certainly
> not an indication of a low IQ (or some other nonsense metric) that
> someone new has no clue about higher kinds or union types or
> catamorphism or ... The point is that many people are keen to learn, and
> that's a good thing. If you are not keen to learn, you have to rethink
> your attitude towards programming.
>
Scala Lite. Are we doomed to the cesspits of neurotic aversion to thinking?
Re: Re: What is highest priority for Scala to succeed in corpor
On Mon, Nov 14, 2011 at 12:48 PM, Tony Morris <tonymorris [at] gmail [dot] com> wrote:
It's about using the right tool for the job. And sometimes, a simpler tool is the right choice.
-- Cédric
RE: Re: What is highest priority for Scala to succeed in corpor
While that may hold true sometimes, in the general case - if you refer to programming languages, it is completely false.
Lacking certain tools to SIMPLY express certain constructs (like multiple inheritance or lambdas) leads to mountains of incomprehensible code to
a) achieve the same solution to the problem which stays the same
b) implement an alternative, less efficient solution to the same problem
Most of the time, in programming, the simpler language complicates things.
Having said that, I don’t think a Scala Lite is the answer. I do however think that having configurable compiler warnings based on Martin’s language levels is a better approach.
If my two positions here seem to contradict each-other is because they do, to some extent. The world ain’t black and white.
From: scala-user [at] googlegroups [dot] com [mailto:scala-user [at] googlegroups [dot] com] On Behalf Of Cédric Beust ?
Sent: November-15-11 3:28 AM
To: tmorris [at] tmorris [dot] net
Cc: scala-user [at] googlegroups [dot] com
Subject: Re: [scala-user] Re: What is highest priority for Scala to succeed in corporate world (Should be in scala-debate?) ?
On Mon, Nov 14, 2011 at 12:48 PM, Tony Morris <tonymorris [at] gmail [dot] com> wrote:
Scala Lite. Are we doomed to the cesspits of neurotic aversion to thinking?
It's about using the right tool for the job. And sometimes, a simpler tool is the right choice.
--
Cédric
Re: Re: What is highest priority for Scala to succeed in corpor
I like this idea that the compiler could give a level warning.
在 2011年11月15日星期二UTC+8下午9时21分35秒,Razvan (Pub) Cojocaru写道:
Re: Re: What is highest priority for Scala to succeed in corpor
Thanks,
-Vlad
On Wed, Nov 16, 2011 at 5:45 PM, Xuefeng Wu <benewu [at] gmail [dot] com> wrote:
Re: Re: What is highest priority for Scala to succeed in corpor
i saw that yesterday, and found it quite disappointing. it's like 55 minutes spreading opinion and commonplace, and 5 minutes substantial things, all glued together by metaphors and analogies that can be questioned (starting with the idea of 'easy' as 'near' and at the same time opposite of 'simple' and 'hard'). as an experience report, ok, but in the form of enlightened sermon i found it a rather unconvincing argumentation. (that is not to say, there are many agreeable and reasonable things; but for example saying that switch/match and actors are 'complecting' doesn't help. they can decrease simplicity in one _perspective_, and increase it in another, so it just boils down to a justification of design choices made in clojure).
best, -sciss-
On 28 Nov 2011, at 15:55, Vlad Patryshev wrote:
> You are not talking about the famous Rich Hickey's speech?
>
> Thanks,
> -Vlad
>
>
> On Wed, Nov 16, 2011 at 5:45 PM, Xuefeng Wu wrote:
> +1
> I like this idea that the compiler could give a level warning.
>
> 在 2011年11月15日星期二UTC+8下午9时21分35秒,Razvan (Pub) Cojocaru写道:
> While that may hold true sometimes, in the general case - if you refer to programming languages, it is completely false.
>
>
> Lacking certain tools to SIMPLY express certain constructs (like multiple inheritance or lambdas) leads to mountains of incomprehensible code to
>
> a) achieve the same solution to the problem which stays the same
>
> b) implement an alternative, less efficient solution to the same problem
>
>
>
> Most of the time, in programming, the simpler language complicates things.
>
>
> Having said that, I don’t think a Scala Lite is the answer. I do however think that having configurable compiler warnings based on Martin’s language levels is a better approach.
>
>
> If my two positions here seem to contradict each-other is because they do, to some extent. The world ain’t black and white.
>
>
> From: scala [dot] [dot] [dot] [at] googlegroups [dot] com [mailto:scala [dot] [dot] [dot] [at] googlegroups [dot] com] On Behalf Of Cédric Beust ?
>
>
> Sent: November-15-11 3:28 AM
> To: tmo [dot] [dot] [dot] [at] tmorris [dot] net
> Cc: scala [dot] [dot] [dot] [at] googlegroups [dot] com
>
> Subject: Re: [scala-user] Re: What is highest priority for Scala to succeed in corporate world (Should be in scala-debate?) ?
>
>
>
> On Mon, Nov 14, 2011 at 12:48 PM, Tony Morris wrote:
>
> Scala Lite. Are we doomed to the cesspits of neurotic aversion to thinking?
>
>
> It's about using the right tool for the job. And sometimes, a simpler tool is the right choice.
>
>
Re: Re: What is highest priority for Scala to succeed in corpor
2011/11/15 Razvan Cojocaru <pub [at] razie [dot] com>
Isn't the transition from C++ to Java an obvious counter example to this claim?
-- Cédric
RE: Re: What is highest priority for Scala to succeed in corpor
NOPE. Quite the contrary. I think I can prove that the LOC and headcount has gone up for the same Feature Count, whatever your favorite way to measure functional points is.
What it did is it allowed more people access to the job of “programmer” without much CS training, which given the previous lack of said “programmers”, seemed a good idea at the time… But, seeing the contraptions they’re capable of, I am convinced of the contrary now. C++ was in itself a great filter…
I think also that bug counts have shot up significantly and that supports all the above.
When using C++, we never interviewed more than 4-5 to select one for the “core team” while now it’s 20-30 to 1.
Again, do not confuse the two: the best thing about Java was, is and will always be the JVM, not the language itself (which I personally hated since day 1 and still don’t know enough to pass an online exam, as a form of protest J). Note the smiley.
If scala should become the new filter, my smile will only grow wider J.
From: cbeust [at] gmail [dot] com [mailto:cbeust [at] gmail [dot] com] On Behalf Of Cédric Beust ?
Sent: November-15-11 11:39 AM
To: Razvan Cojocaru
Cc: tmorris [at] tmorris [dot] net; scala-user [at] googlegroups [dot] com
Subject: Re: [scala-user] Re: What is highest priority for Scala to succeed in corporate world (Should be in scala-debate?) ?
2011/11/15 Razvan Cojocaru <pub [at] razie [dot] com>
Most of the time, in programming, the simpler language complicates things.
Isn't the transition from C++ to Java an obvious counter example to this claim?
--
Cédric
Re: Re: What is highest priority for Scala to succeed in corpor
Maybe, but that's not what we are measuring. People switched en masse from C++ to Java because they felt that they were being more productive with Java, that they spent less time fighting against the compiler and the language and more time actually writing code.
Dumbing down productivity to writing less lines of code is a very short-sighted perspective which has been proven wrong countless times. It's much, much more complex to assess than that, and perception of productivity is a very important factor in this overall equation. Developers need to trust and feel comfortable with the technology you put in their hands.
You're revising history, here. Java "the language" was a huge factor in the massive migration away from C++ in the early years, and the JVM was seen as a liability at the time ("Java is slow", etc...) but developers still adopted it because the jump in productivity was so huge compared to C++.
It's only recently that the focus has slowly been moving away from Java to the JVM, but even today, Java "the language" continues to be the #1 language on the JVM by a crushing margin, even compared to the #2 JVM language (Groovy).
-- Cédric
RE: Re: What is highest priority for Scala to succeed in corpor
I think you’re now making stuff up and confuse feelings for facts. Check your facts, with Tiobe or something.
Also, you can read the history section at the link below: how many times are JVM features mentioned and how many times the “power of the language” ? http://en.wikipedia.org/wiki/Java_(programming_language)#History
If Sun was not the “sun” at that time, I don’t think Java would have gone anywhere…
It is interesting though - does anyone have numbers from before 2002?
From: cbeust [at] gmail [dot] com [mailto:cbeust [at] gmail [dot] com] On Behalf Of Cédric Beust ?
Sent: November-15-11 2:33 PM
To: Razvan Cojocaru
Cc: tmorris [at] tmorris [dot] net; scala-debate [at] googlegroups [dot] com
Subject: Re: [scala-user] Re: What is highest priority for Scala to succeed in corporate world (Should be in scala-debate?) ?
2011/11/15 Razvan Cojocaru <pub [at] razie [dot] com>
NOPE. Quite the contrary. I think I can prove that the LOC and headcount has gone up for the same Feature Count, whatever your favorite way to measure functional points is.
Maybe, but that's not what we are measuring. People switched en masse from C++ to Java because they felt that they were being more productive with Java, that they spent less time fighting against the compiler and the language and more time actually writing code.
Dumbing down productivity to writing less lines of code is a very short-sighted perspective which has been proven wrong countless times. It's much, much more complex to assess than that, and perception of productivity is a very important factor in this overall equation. Developers need to trust and feel comfortable with the technology you put in their hands.
You're revising history, here. Java "the language" was a huge factor in the massive migration away from C++ in the early years, and the JVM was seen as a liability at the time ("Java is slow", etc...) but developers still adopted it because the jump in productivity was so huge compared to C++.
It's only recently that the focus has slowly been moving away from Java to the JVM, but even today, Java "the language" continues to be the #1 language on the JVM by a crushing margin, even compared to the #2 JVM language (Groovy).
--
Cédric
Re: Re: What is highest priority for Scala to succeed in corpor
2011/11/15 Razvan Cojocaru <pub [at] razie [dot] com>
Which facts exactly? TIOBE lists Java as #1, Groovy as #70 and Scala as... well, further down the list.
-- Cédric
Re: Re: What is highest priority for Scala to succeed in corpor
Re: Re: Re: What is highest priority for Scala to succeed in c
--Nikita Ivanov, CEOGridGain Systemswww.gridgain.com
2011/11/15 Cédric Beust ♔ <cedric [at] beust [dot] com>
Re: Re: Re: What is highest priority for Scala to succeed in c
In 2011 I still get comments from some (usually non-developers) that "everyone knows Java is slow." You only get once chance to make a first impression, and some people cannot move beyond that first impression.
Cheers, Eric
On 2011-11-15 1:20 PM, Nikita Ivanov wrote:
Re: Re: Re: What is highest priority for Scala to succeed in c
The absence of TCO is enough to turn people off, but there is always a workaround to this. No, the workaround is *not* to go writing messy code that doesn't work *ever*. How about the cost of a stack frame? Have you ever tried to traverse a lazy cons list? How far did you get? Into the thousands but no further right?
Oh, you might say, but why would I ever want to traverse a lazy cons list when I have an InputStream!? Well, now we have a discussion about what "useful" is. Until we work out that there is a *contention* here between performance and usefulness, we will be stuck in these dark ages of pretending that the JVM is more than a pile of dogs' balls that we are all stuck with. Indeed, it might be said that the Scalaz thesis is: so just how far can we take usefulness without sacrificing performance?
Anyone who has done any kind of high-level programming on the JVM, and there are few of those, will know exactly what I mean when I say "gotchya!"
On 11/16/2011 10:38 AM, Eric Kolotyluk wrote:
RE: Re: What is highest priority for Scala to succeed in corpor
Guys, please move this to scala-debate.
On Nov 15, 2011 8:21 AM, "Razvan Cojocaru" <pub [at] razie [dot] com> wrote:RE: Re: What is highest priority for Scala to succeed in corpor
Guys, please move this to scala-debate.
On Nov 15, 2011 8:21 AM, "Razvan Cojocaru" <pub [at] razie [dot] com> wrote:Re: Re: What is highest priority for Scala to succeed in corpor
Talk to anyone who's witnessed a process breaking down or a project failing and the #1 observation is invariably that there was a lack of communication.
If your language has the DSL support to work directly in the business domain, and if your test/spec framework reads closely enough to user stories that even a non-programmer can review them and spot problems, then everybody can "speak the same language" and communication is vastly improved.
The other widespread problem that Scala helps with is technical debt. A smaller codebase with better abstractions and less repetition is simply more maintainable. If I can read the essential complexity in a piece of logic without having to wade through boilerplate, then I'm going to be getting more tasks done for every day that I'm paid.
Massive concurrency is important too. But if you work in a domain where it's relevant to you, then I guess you already know this :)
2011/11/15 Cédric Beust ♔ <cedric [at] beust [dot] com>
--
Kevin Wright
mail: kevin [dot] wright [at] scalatechnology [dot] com
gtalk / msn : kev [dot] lee [dot] wright [at] gmail [dot] com quora: http://www.quora.com/Kevin-Wrightgoogle+: http://gplus.to/thecoda
kev [dot] lee [dot] wright [at] gmail [dot] com twitter: @thecoda
vibe / skype: kev.lee.wrightsteam: kev_lee_wright
"My point today is that, if we wish to count lines of code, we should not regard them as "lines produced" but as "lines spent": the current conventional wisdom is so foolish as to book that count on the wrong side of the ledger" ~ Dijkstra
Re: Re: What is highest priority for Scala to succeed in corpor
On 11/15/2011 04:43 AM, Ken McDonald wrote:
> Hello from the original poster of this article. I've had my #1
> position changed by a couple of articles including one good, long one
> by Jim Herber (sp?). So here it is: the #1 problem with Scala being
> accepted in the Enterprise world:
>
> Scala is too complex.
No.
>
> Not too long ago, I would have said this is incorrect, because Scala
> can be used at 90% productivity while being no more complex than Java.
> My attitude was changed by the aforementioned articles, plus some
> recent experience with collections.breakOut.
>
> 1) The obvious: Scala can be used as great advantage without undue
> complexity. However, there will always be people in an organization
> who are capable of using the more complex features, and ultimately do
> so regardless of coding guidelines. They will leave behind them code
> that the standard programmer, or even another advanced programmer who
> took a different tack in the Scala ecosphere, are simply unable to
> maintain. This is simply death to a large organization; much as we
> would like to think of ourselves as uniquely talented individuals,
> they _must_ have interchangeable engineers in order to continue their
> existence.
This is not what happens at all. It only looks that way to you.
What really happens is that there will always be people who either
refuse or fail to understand the intrinisically theoretical nature of
our profession. You need only look outside of Scala for many examples of
this. This leads some to introduce undue complexity while complaining
about precise solutions because of some cognitive dilemma. By this I
mean, you will hear people complain of "I am unable to read the code",
yet not considering the possibility that the problem is the "I" part,
not the "code" part in that statement. They're simply unacquainted with
the fundamentals of the profession; this symptom is *absolutely prolific*.
This leaves people who wish to solve problems, actually solve them
instead of piss-fiddling about, burdened with such riclildudlous
bureaucracy like "coding guidelines." A resentment of this
fiddle-farting can begin to form, leading those who wish to actually
solve problems ignoring the nonsense and just getting on with it.
But it doesn't end there. Those who wish to solve problems also have to
endure the seemingly endless whining, while simultaneously solving
actual problems. It just gets out of hand, so something must be
sacrificed -- often politeness.
People who solve actual problems, without undue complexity or
redundancy, are often charged with "leaving behind unmaintainable code."
To these people, I tell you: I have developed a strategy for dealing
with this charge. What you do is you actually solve the problem; nice
and easy *but don't tell anyone*. Next, you introduce the unnecessary
complexity, however, you must be very tactful here. Make sure it is not
obvious that the complexity can be removed without penalty -- it must
appear to be intertwined and inherent to the nature of the problem at
hand. However, you don't want to *actually* burden yourself with this
entanglement -- you've just got to give the appearance. Essentially,
perhaps most importantly, you must always remember that you are solving
an additional problem on top of the computational one: that of a social
disorder which gives rise to masochistic tendencies. Make up a few terms
that have no meaning -- ensure that you can shift the goal posts at
will. You probably think I am joking here; I am not -- I have several
tools for dealing with this disorder. This means that your dealings with
the nonsense are very short-lived.
>
> 2) Somewhat less obvious: Scala is a highly orthogonal language, i.e.
> one feature does not "overlap" another feature, so each additional
> feature multiplies the abilities of Scala by the number of its
> possible states. Java is not so orthogonal, so let's say that each
> feature adds to the abilities of Java by the number of its position in
> the feature sequence. Let's assume that each language has five
> "features", each of which may be "used" or "unused". Scala has 2^5
> possible "feature interactions". Java, by contract, has 1+2+3+4+5. The
> counterargument to this is that you can understand entire swaths of
> the Scala feature set by understanding a single concept. This is
> theoretically true, but realistically invalid. For example, I placed
> in the upper part of the top 1% of the GREs when I took them, and I
> don't understand a freakin' thing about scalaz, plus my understanding
> of implicit parameters is coming along very slowly. I'm sure that many
> of you are brighter than I, but consider the target; the Enterprise
> programmer. They are not even in my IQ range, let alone yours. (No
> offense to EP programmers out there. I've appreciated other people's
> well-written, non fancy code, as opposed to brilliant, impenetrable
> code, many times in my career. And to be honest, you almost certainly
> have a much more successful personal life than I do.)
*boggle*
>
> 3) Least obvious: more power =/= more productivity. So the Scala type
> system is Turing complete, great. How many think this is important?
> How many think this should be used in code? How many think this is,
> net, a gain? I'm hoping the answer is well under 5% in each case. This
> is a bit of a rehash of (2) above, but not completely. Scala has a lot
> of features. To be honest, it has _enough_ features for the time
> being, unless new features can simplify it.
If you are incapable of using a more proficient programming language,
you're not going to be more capable with a less proficient programming
language. It's just a myth. To be clear, Java programmers seldom get
anything useful done; they just appear to, and solicit peer support that
they have done -- good for them, but don't for a minute expect me to
deny it.
>
> How to handle this situation in the Enterprise? One previous post
> mentioned "Scala Lite", but did not elaborate. I think it's time to
> consider the possibility of optionally "feature-restricting" Scala so
> that the Enterprise can ensure its code is at a certain level of
> approachability. I won't try to give a full spec here, but will give
> one suggestion I think makes sense: It should be possible, in the
> Enterprise, to disable the ability to define implicit parameters.
>
> Other suggestions are left for other readers.
>
>
> Cheers,
> Ken
>
There is a valid "Scala is too complex" argument, but nobody is anywhere
near the ball. Not even close. This is sad.
Re: Re: What is highest priority for Scala to succeed in corpor
On 11/14/11 15:29, Tony Morris wrote:
> There is a valid "Scala is too complex" argument, but nobody is anywhere
> near the ball. Not even close. This is sad.
Mind enlightening us with making the "correct" 'scala is too complex' argument?
-Martin
Re: What is highest priority for Scala to succeed in corporate w
Amen.
Something I'm truly allergic to is the idea of "interchangeable
engineers" that seems to be prevalent in the corporate world. That
somehow all software engineers comes from the mold and have the same
level of expertise and experience. Nothing could be further from the
truth...
/Jesper Nordenberg
Tony Morris skrev 2011-11-14 21:29:
> On 11/15/2011 04:43 AM, Ken McDonald wrote:
>> Hello from the original poster of this article. I've had my #1
>> position changed by a couple of articles including one good, long one
>> by Jim Herber (sp?). So here it is: the #1 problem with Scala being
>> accepted in the Enterprise world:
>>
>> Scala is too complex.
>
> No.
>
>>
>> Not too long ago, I would have said this is incorrect, because Scala
>> can be used at 90% productivity while being no more complex than Java.
>> My attitude was changed by the aforementioned articles, plus some
>> recent experience with collections.breakOut.
>>
>> 1) The obvious: Scala can be used as great advantage without undue
>> complexity. However, there will always be people in an organization
>> who are capable of using the more complex features, and ultimately do
>> so regardless of coding guidelines. They will leave behind them code
>> that the standard programmer, or even another advanced programmer who
>> took a different tack in the Scala ecosphere, are simply unable to
>> maintain. This is simply death to a large organization; much as we
>> would like to think of ourselves as uniquely talented individuals,
>> they _must_ have interchangeable engineers in order to continue their
>> existence.
>
> This is not what happens at all. It only looks that way to you.
>
> What really happens is that there will always be people who either
> refuse or fail to understand the intrinisically theoretical nature of
> our profession. You need only look outside of Scala for many examples of
> this. This leads some to introduce undue complexity while complaining
> about precise solutions because of some cognitive dilemma. By this I
> mean, you will hear people complain of "I am unable to read the code",
> yet not considering the possibility that the problem is the "I" part,
> not the "code" part in that statement. They're simply unacquainted with
> the fundamentals of the profession; this symptom is *absolutely prolific*.
>
> This leaves people who wish to solve problems, actually solve them
> instead of piss-fiddling about, burdened with such riclildudlous
> bureaucracy like "coding guidelines." A resentment of this
> fiddle-farting can begin to form, leading those who wish to actually
> solve problems ignoring the nonsense and just getting on with it.
>
> But it doesn't end there. Those who wish to solve problems also have to
> endure the seemingly endless whining, while simultaneously solving
> actual problems. It just gets out of hand, so something must be
> sacrificed -- often politeness.
>
> People who solve actual problems, without undue complexity or
> redundancy, are often charged with "leaving behind unmaintainable code."
> To these people, I tell you: I have developed a strategy for dealing
> with this charge. What you do is you actually solve the problem; nice
> and easy *but don't tell anyone*. Next, you introduce the unnecessary
> complexity, however, you must be very tactful here. Make sure it is not
> obvious that the complexity can be removed without penalty -- it must
> appear to be intertwined and inherent to the nature of the problem at
> hand. However, you don't want to *actually* burden yourself with this
> entanglement -- you've just got to give the appearance. Essentially,
> perhaps most importantly, you must always remember that you are solving
> an additional problem on top of the computational one: that of a social
> disorder which gives rise to masochistic tendencies. Make up a few terms
> that have no meaning -- ensure that you can shift the goal posts at
> will. You probably think I am joking here; I am not -- I have several
> tools for dealing with this disorder. This means that your dealings with
> the nonsense are very short-lived.
>
>
>>
>> 2) Somewhat less obvious: Scala is a highly orthogonal language, i.e.
>> one feature does not "overlap" another feature, so each additional
>> feature multiplies the abilities of Scala by the number of its
>> possible states. Java is not so orthogonal, so let's say that each
>> feature adds to the abilities of Java by the number of its position in
>> the feature sequence. Let's assume that each language has five
>> "features", each of which may be "used" or "unused". Scala has 2^5
>> possible "feature interactions". Java, by contract, has 1+2+3+4+5. The
>> counterargument to this is that you can understand entire swaths of
>> the Scala feature set by understanding a single concept. This is
>> theoretically true, but realistically invalid. For example, I placed
>> in the upper part of the top 1% of the GREs when I took them, and I
>> don't understand a freakin' thing about scalaz, plus my understanding
>> of implicit parameters is coming along very slowly. I'm sure that many
>> of you are brighter than I, but consider the target; the Enterprise
>> programmer. They are not even in my IQ range, let alone yours. (No
>> offense to EP programmers out there. I've appreciated other people's
>> well-written, non fancy code, as opposed to brilliant, impenetrable
>> code, many times in my career. And to be honest, you almost certainly
>> have a much more successful personal life than I do.)
>
> *boggle*
>
>>
>> 3) Least obvious: more power =/= more productivity. So the Scala type
>> system is Turing complete, great. How many think this is important?
>> How many think this should be used in code? How many think this is,
>> net, a gain? I'm hoping the answer is well under 5% in each case. This
>> is a bit of a rehash of (2) above, but not completely. Scala has a lot
>> of features. To be honest, it has _enough_ features for the time
>> being, unless new features can simplify it.
>
> If you are incapable of using a more proficient programming language,
> you're not going to be more capable with a less proficient programming
> language. It's just a myth. To be clear, Java programmers seldom get
> anything useful done; they just appear to, and solicit peer support that
> they have done -- good for them, but don't for a minute expect me to
> deny it.
>
>
>>
>> How to handle this situation in the Enterprise? One previous post
>> mentioned "Scala Lite", but did not elaborate. I think it's time to
>> consider the possibility of optionally "feature-restricting" Scala so
>> that the Enterprise can ensure its code is at a certain level of
>> approachability. I won't try to give a full spec here, but will give
>> one suggestion I think makes sense: It should be possible, in the
>> Enterprise, to disable the ability to define implicit parameters.
>>
>> Other suggestions are left for other readers.
>>
>>
>> Cheers,
>> Ken
>>
>
> There is a valid "Scala is too complex" argument, but nobody is anywhere
> near the ball. Not even close. This is sad.
>
Re: Re: What is highest priority for Scala to succeed in corpor
Jon
On Mon, Nov 14, 2011 at 3:51 PM, Jesper Nordenberg <megagurka [at] yahoo [dot] com> wrote:
Re: Re: What is highest priority for Scala to succeed in corpor
The thing that amazes me most in this kind of debate is the internal dishonesty of the common definitions of "complex" and "unmaintainable". A lot use these as synonyms for "unfamiliar" – particularly for syntactic constructs. However, these syntactic constructs may actually encode a much simpler execution profile. A classic example being a stack based functional program. This is much simpler than an imperative algorithm with side-effects – but the second version is "easier to read". A text-book example of mistaking easier for simpler. Many times I see hundred line methods with many embedded side-effects accepted over succinct functional abstractions purely due to syntactic unfamiliarity.
Rich Hickey had a talk* recently about the value of simple over easy. While he perhaps has some controversial things to say about verification techniques – the point is still a good one. Mistaking easy (which is subjective) with simple (which is objective) leads to poor decisions and a herd mentality.
What makes Scala a fantastic language for corporate environments is its abstraction tools. By enabling the brighter members of your teams to provide abstracted library for everyone else you actually enable everyone to get more done faster. This is not something to be afraid of but something to rejoice in.
* http://www.infoq.com/presentations/Simple-Made-Easy
On 15 November 2011 07:51, Jesper Nordenberg <megagurka [at] yahoo [dot] com> wrote:
Re: Re: What is highest priority for Scala to succeed in corpor
I am so utterly glad that somebody posts something so clear in amongst
this mess of a thread.
I truly wish these threads would end. Scala is a programming
language, programming is hard, there isn't anything more to it.
There are many tools that give nice illusions of simplifying things,
Hibernate/Spring etc are mentioned a lot here, and I agree, they are
behemoths. But here's the rub, Hibernate CAN take a lot of the
drudgery out of dealing with ORM style dev - if its the best fit for
your problem so be it. I wouldn't go so far as to say that for Spring
though :-) (I jest)
Scala can give a wonderful set of tooling to developers. PMs and
"thought leaders" that shy away from trying other techniques and
languages are kidding themselves. Scala might simply not work for
your team however. Teams are full of people with differing levels of
skill, and you should think about the other developers as well. But
why not give them a chance to increase their toolkit, mental and
otherwise - you may be surprised.
With regards to the hiring meme that follows - if the developer can't
pick up Scala enough to use it on a project - (s)he is more than
likely to suffer in Java as well. You did want to hire capable devs
right?
I'm really not happy with the elitism statements bandied about here
and in blogs, I mean really - its not intellectual smugness that
drives people to use other languages - its a thirst to improve things
- to make it easier to create solutions. I'm not L33t, I just want to
get stuff done more quickly, Scala could let me do that - if I wasn't
encumbered with many other blockers (that EP thing again).
I'm sure I'll regret having posted this but I thought it worth thanking you.
On Mon, Nov 14, 2011 at 10:28 PM, Jed Wesley-Smith
wrote:
> This idea that all engineers are created equal and that programming is
> essentially a cookie cutter exercise is a furphy that suits corporate shops
> very nicely. This kind of thinking led to off-shoring and the like and has
> been mostly discredited. Programming is hard, and programmers need to
> continually improve and learn as technology and the state of the art
> evolves.
> The thing that amazes me most in this kind of debate is the internal
> dishonesty of the common definitions of "complex" and "unmaintainable". A
> lot use these as synonyms for "unfamiliar" – particularly for syntactic
> constructs. However, these syntactic constructs may actually encode a much
> simpler execution profile. A classic example being a stack based functional
> program. This is much simpler than an imperative algorithm with side-effects
> – but the second version is "easier to read". A text-book example of
> mistaking easier for simpler. Many times I see hundred line methods with
> many embedded side-effects accepted over succinct functional abstractions
> purely due to syntactic unfamiliarity.
> Rich Hickey had a talk* recently about the value of simple over easy. While
> he perhaps has some controversial things to say about verification
> techniques – the point is still a good one. Mistaking easy (which is
> subjective) with simple (which is objective) leads to poor decisions and a
> herd mentality.
> What makes Scala a fantastic language for corporate environments is its
> abstraction tools. By enabling the brighter members of your teams to provide
> abstracted library for everyone else you actually enable everyone to get
> more done faster. This is not something to be afraid of but something to
> rejoice in.
> * http://www.infoq.com/presentations/Simple-Made-Easy
>
> On 15 November 2011 07:51, Jesper Nordenberg wrote:
>>
>> Amen.
>>
>> Something I'm truly allergic to is the idea of "interchangeable engineers"
>> that seems to be prevalent in the corporate world. That somehow all software
>> engineers comes from the mold and have the same level of expertise and
>> experience. Nothing could be further from the truth...
>>
>> /Jesper Nordenberg
>>
>> Tony Morris skrev 2011-11-14 21:29:
>>>
>>> On 11/15/2011 04:43 AM, Ken McDonald wrote:
>>>>
>>>> Hello from the original poster of this article. I've had my #1
>>>> position changed by a couple of articles including one good, long one
>>>> by Jim Herber (sp?). So here it is: the #1 problem with Scala being
>>>> accepted in the Enterprise world:
>>>>
>>>> Scala is too complex.
>>>
>>> No.
>>>
>>>>
>>>> Not too long ago, I would have said this is incorrect, because Scala
>>>> can be used at 90% productivity while being no more complex than Java.
>>>> My attitude was changed by the aforementioned articles, plus some
>>>> recent experience with collections.breakOut.
>>>>
>>>> 1) The obvious: Scala can be used as great advantage without undue
>>>> complexity. However, there will always be people in an organization
>>>> who are capable of using the more complex features, and ultimately do
>>>> so regardless of coding guidelines. They will leave behind them code
>>>> that the standard programmer, or even another advanced programmer who
>>>> took a different tack in the Scala ecosphere, are simply unable to
>>>> maintain. This is simply death to a large organization; much as we
>>>> would like to think of ourselves as uniquely talented individuals,
>>>> they _must_ have interchangeable engineers in order to continue their
>>>> existence.
>>>
>>> This is not what happens at all. It only looks that way to you.
>>>
>>> What really happens is that there will always be people who either
>>> refuse or fail to understand the intrinisically theoretical nature of
>>> our profession. You need only look outside of Scala for many examples of
>>> this. This leads some to introduce undue complexity while complaining
>>> about precise solutions because of some cognitive dilemma. By this I
>>> mean, you will hear people complain of "I am unable to read the code",
>>> yet not considering the possibility that the problem is the "I" part,
>>> not the "code" part in that statement. They're simply unacquainted with
>>> the fundamentals of the profession; this symptom is *absolutely
>>> prolific*.
>>>
>>> This leaves people who wish to solve problems, actually solve them
>>> instead of piss-fiddling about, burdened with such riclildudlous
>>> bureaucracy like "coding guidelines." A resentment of this
>>> fiddle-farting can begin to form, leading those who wish to actually
>>> solve problems ignoring the nonsense and just getting on with it.
>>>
>>> But it doesn't end there. Those who wish to solve problems also have to
>>> endure the seemingly endless whining, while simultaneously solving
>>> actual problems. It just gets out of hand, so something must be
>>> sacrificed -- often politeness.
>>>
>>> People who solve actual problems, without undue complexity or
>>> redundancy, are often charged with "leaving behind unmaintainable code."
>>> To these people, I tell you: I have developed a strategy for dealing
>>> with this charge. What you do is you actually solve the problem; nice
>>> and easy *but don't tell anyone*. Next, you introduce the unnecessary
>>> complexity, however, you must be very tactful here. Make sure it is not
>>> obvious that the complexity can be removed without penalty -- it must
>>> appear to be intertwined and inherent to the nature of the problem at
>>> hand. However, you don't want to *actually* burden yourself with this
>>> entanglement -- you've just got to give the appearance. Essentially,
>>> perhaps most importantly, you must always remember that you are solving
>>> an additional problem on top of the computational one: that of a social
>>> disorder which gives rise to masochistic tendencies. Make up a few terms
>>> that have no meaning -- ensure that you can shift the goal posts at
>>> will. You probably think I am joking here; I am not -- I have several
>>> tools for dealing with this disorder. This means that your dealings with
>>> the nonsense are very short-lived.
>>>
>>>
>>>>
>>>> 2) Somewhat less obvious: Scala is a highly orthogonal language, i.e.
>>>> one feature does not "overlap" another feature, so each additional
>>>> feature multiplies the abilities of Scala by the number of its
>>>> possible states. Java is not so orthogonal, so let's say that each
>>>> feature adds to the abilities of Java by the number of its position in
>>>> the feature sequence. Let's assume that each language has five
>>>> "features", each of which may be "used" or "unused". Scala has 2^5
>>>> possible "feature interactions". Java, by contract, has 1+2+3+4+5. The
>>>> counterargument to this is that you can understand entire swaths of
>>>> the Scala feature set by understanding a single concept. This is
>>>> theoretically true, but realistically invalid. For example, I placed
>>>> in the upper part of the top 1% of the GREs when I took them, and I
>>>> don't understand a freakin' thing about scalaz, plus my understanding
>>>> of implicit parameters is coming along very slowly. I'm sure that many
>>>> of you are brighter than I, but consider the target; the Enterprise
>>>> programmer. They are not even in my IQ range, let alone yours. (No
>>>> offense to EP programmers out there. I've appreciated other people's
>>>> well-written, non fancy code, as opposed to brilliant, impenetrable
>>>> code, many times in my career. And to be honest, you almost certainly
>>>> have a much more successful personal life than I do.)
>>>
>>> *boggle*
>>>
>>>>
>>>> 3) Least obvious: more power =/= more productivity. So the Scala type
>>>> system is Turing complete, great. How many think this is important?
>>>> How many think this should be used in code? How many think this is,
>>>> net, a gain? I'm hoping the answer is well under 5% in each case. This
>>>> is a bit of a rehash of (2) above, but not completely. Scala has a lot
>>>> of features. To be honest, it has _enough_ features for the time
>>>> being, unless new features can simplify it.
>>>
>>> If you are incapable of using a more proficient programming language,
>>> you're not going to be more capable with a less proficient programming
>>> language. It's just a myth. To be clear, Java programmers seldom get
>>> anything useful done; they just appear to, and solicit peer support that
>>> they have done -- good for them, but don't for a minute expect me to
>>> deny it.
>>>
>>>
>>>>
>>>> How to handle this situation in the Enterprise? One previous post
>>>> mentioned "Scala Lite", but did not elaborate. I think it's time to
>>>> consider the possibility of optionally "feature-restricting" Scala so
>>>> that the Enterprise can ensure its code is at a certain level of
>>>> approachability. I won't try to give a full spec here, but will give
>>>> one suggestion I think makes sense: It should be possible, in the
>>>> Enterprise, to disable the ability to define implicit parameters.
>>>>
>>>> Other suggestions are left for other readers.
>>>>
>>>>
>>>> Cheers,
>>>> Ken
>>>>
>>>
>>> There is a valid "Scala is too complex" argument, but nobody is anywhere
>>> near the ball. Not even close. This is sad.
>>>
>>
>>
>
>
Re: What is highest priority for Scala to succeed in corporate w
Hello Ken,
1)
This is already TOO true for java. Look at the 'framework' mess. Are
you sure you can handle everything a advanced 'spring' user did in a
company? I'm quite certain you can't.
Secondly that is not at all a scala related problem. You don't fix
your problems by putting framework XYZ in the job requirements.
Do you consider yourself a Senior developer?
http://groups.google.com/group/javaposse/browse_thread/thread/deb82e0c7e...
2)I dont think there is anything IQ related here. What I can tell from
my experience is maybe EP P's are lazy. They go to school/Univiversity
whatever learn xyz and then they go to business. Of course they try to
use the gained knowledge as long as possible. But first thing you
should learn as school is how to reflect upon yourself and your work
style. Sure EPP's ( and i'm one of them) are 'just' tools of the
enterprise to generated value out of directions ( hopefully). But to
do so I can choose some tools on my own too.
I don't know what GRE is , and I wont google it either. But I am a
curious person since I got introduced to scala and scalaz I learned
many things. Things that ALREADY help me in my dayjob with java. My
Thinking and thus my coding style changed. I discuss those change with
my coworkers and I think there is a very healthy balance things dont
get too far off. But they are changing.
3) I don't know but i dislike the idea of 'Scala Lite'
regards andreas
On 14 Nov., 19:43, Ken McDonald wrote:
> Hello from the original poster of this article. I've had my #1 position
> changed by a couple of articles including one good, long one by Jim Herber
> (sp?). So here it is: the #1 problem with Scala being accepted in the
> Enterprise world:
>
> Scala is too complex.
>
> Not too long ago, I would have said this is incorrect, because Scala can be
> used at 90% productivity while being no more complex than Java. My attitude
> was changed by the aforementioned articles, plus some recent experience
> with collections.breakOut.
>
> 1) The obvious: Scala can be used as great advantage without undue
> complexity. However, there will always be people in an organization who are
> capable of using the more complex features, and ultimately do so regardless
> of coding guidelines. They will leave behind them code that the standard
> programmer, or even another advanced programmer who took a different tack
> in the Scala ecosphere, are simply unable to maintain. This is simply death
> to a large organization; much as we would like to think of ourselves as
> uniquely talented individuals, they _must_ have interchangeable engineers
> in order to continue their existence.
>
> 2) Somewhat less obvious: Scala is a highly orthogonal language, i.e. one
> feature does not "overlap" another feature, so each additional feature
> multiplies the abilities of Scala by the number of its possible states.
> Java is not so orthogonal, so let's say that each feature adds to the
> abilities of Java by the number of its position in the feature sequence.
> Let's assume that each language has five "features", each of which may be
> "used" or "unused". Scala has 2^5 possible "feature interactions". Java, by
> contract, has 1+2+3+4+5. The counterargument to this is that you can
> understand entire swaths of the Scala feature set by understanding a single
> concept. This is theoretically true, but realistically invalid. For
> example, I placed in the upper part of the top 1% of the GREs when I took
> them, and I don't understand a freakin' thing about scalaz, plus my
> understanding of implicit parameters is coming along very slowly. I'm sure
> that many of you are brighter than I, but consider the target; the
> Enterprise programmer. They are not even in my IQ range, let alone yours.
> (No offense to EP programmers out there. I've appreciated other people's
> well-written, non fancy code, as opposed to brilliant, impenetrable code,
> many times in my career. And to be honest, you almost certainly have a much
> more successful personal life than I do.)
>
> 3) Least obvious: more power =/= more productivity. So the Scala type
> system is Turing complete, great. How many think this is important? How
> many think this should be used in code? How many think this is, net, a
> gain? I'm hoping the answer is well under 5% in each case. This is a bit of
> a rehash of (2) above, but not completely. Scala has a lot of features. To
> be honest, it has _enough_ features for the time being, unless new features
> can simplify it.
>
> How to handle this situation in the Enterprise? One previous post mentioned
> "Scala Lite", but did not elaborate. I think it's time to consider the
> possibility of optionally "feature-restricting" Scala so that the
> Enterprise can ensure its code is at a certain level of approachability. I
> won't try to give a full spec here, but will give one suggestion I think
> makes sense: It should be possible, in the Enterprise, to disable the
> ability to define implicit parameters.
>
> Other suggestions are left for other readers.
>
> Cheers,
> Ken
Re: Re: What is highest priority for Scala to succeed in corpor
time for me to join the discussion.
scala is not too complex, scala is too different from what the
enterprise world is used to. once you use scala in a way where it really
gives a productivity boost, you have to change your way of thinking,
your strategies - everything is different. if scala would be just like
java, but with java's biggest 3 flaws solved, it would be accepted more
quickly. jetbrains is trying to create such a language (kotlin). it's
pretty much java + closures + attached methods + working generics + type
inference. but not more. we'll see if that works better. my guess is it
might.
where scala and other nerd languages (by this, i mean lisp) really shine
is when you manage to put together a small team of freaks like me and
let them roam freely. being in a small team means you won't need to
restrain yourself. even if everyone brings in his own concepts, no one
is being overwhelmed by too many. once the team grows too large, it's
like a (social) flock: the slowest birds slow down the rest.
java is much better suited for big teams *because* it's a stupid
language that feels like you're coding with yours hands bound. the more
humans you add to a group, the more stupid each individual gets, even if
they all are geniuses.
Am 14.11.2011 19:43, schrieb Ken McDonald:
> Hello from the original poster of this article. I've had my #1
> position changed by a couple of articles including one good, long one
> by Jim Herber (sp?). So here it is: the #1 problem with Scala being
> accepted in the Enterprise world:
>
> Scala is too complex.
>
> Not too long ago, I would have said this is incorrect, because Scala
> can be used at 90% productivity while being no more complex than Java.
> My attitude was changed by the aforementioned articles, plus some
> recent experience with collections.breakOut.
>
> 1) The obvious: Scala can be used as great advantage without undue
> complexity. However, there will always be people in an organization
> who are capable of using the more complex features, and ultimately do
> so regardless of coding guidelines. They will leave behind them code
> that the standard programmer, or even another advanced programmer who
> took a different tack in the Scala ecosphere, are simply unable to
> maintain. This is simply death to a large organization; much as we
> would like to think of ourselves as uniquely talented individuals,
> they _must_ have interchangeable engineers in order to continue their
> existence.
>
> 2) Somewhat less obvious: Scala is a highly orthogonal language, i.e.
> one feature does not "overlap" another feature, so each additional
> feature multiplies the abilities of Scala by the number of its
> possible states. Java is not so orthogonal, so let's say that each
> feature adds to the abilities of Java by the number of its position in
> the feature sequence. Let's assume that each language has five
> "features", each of which may be "used" or "unused". Scala has 2^5
> possible "feature interactions". Java, by contract, has 1+2+3+4+5. The
> counterargument to this is that you can understand entire swaths of
> the Scala feature set by understanding a single concept. This is
> theoretically true, but realistically invalid. For example, I placed
> in the upper part of the top 1% of the GREs when I took them, and I
> don't understand a freakin' thing about scalaz, plus my understanding
> of implicit parameters is coming along very slowly. I'm sure that many
> of you are brighter than I, but consider the target; the Enterprise
> programmer. They are not even in my IQ range, let alone yours. (No
> offense to EP programmers out there. I've appreciated other people's
> well-written, non fancy code, as opposed to brilliant, impenetrable
> code, many times in my career. And to be honest, you almost certainly
> have a much more successful personal life than I do.)
>
> 3) Least obvious: more power =/= more productivity. So the Scala type
> system is Turing complete, great. How many think this is important?
> How many think this should be used in code? How many think this is,
> net, a gain? I'm hoping the answer is well under 5% in each case. This
> is a bit of a rehash of (2) above, but not completely. Scala has a lot
> of features. To be honest, it has _enough_ features for the time
> being, unless new features can simplify it.
>
> How to handle this situation in the Enterprise? One previous post
> mentioned "Scala Lite", but did not elaborate. I think it's time to
> consider the possibility of optionally "feature-restricting" Scala so
> that the Enterprise can ensure its code is at a certain level of
> approachability. I won't try to give a full spec here, but will give
> one suggestion I think makes sense: It should be possible, in the
> Enterprise, to disable the ability to define implicit parameters.
>
> Other suggestions are left for other readers.
>
>
> Cheers,
> Ken
>
Re: Re: What is highest priority for Scala to succeed in corpor
On Mon, Nov 14, 2011 at 12:05 PM, HamsterofDeath <h-star [at] gmx [dot] de> wrote:
You're not going to win over a lot of Java programmers with this depressingly condescending and sadly widespread attitude.
-- Cédric
Re: Re: What is highest priority for Scala to succeed in corpor
>
> scala is not too complex, scala is too different from what the
> enterprise world is used to. once you use scala in a way where it really
> gives a productivity boost, you have to change your way of thinking,
> your strategies - everything is different.
I don't think Scala is *that* different. I had an intern come and work on a Scala project this past summer. She was a very bright woman but only had a few programming classes (One Java, and a couple Python classes). I gave here the 'Programming in Scala' book and spent a little time with her to explain functions/closures and implicits. She didn't have any trouble picking up Scala and was quite productive with it after just a few weeks.
Re: Re: What is highest priority for Scala to succeed in corpor
On Mon, Nov 14, 2011 at 1:43 PM, Ken McDonald <ykkenmcd [at] gmail [dot] com> wrote:
I don't think this is a fault of the language. In my experience, these developers will do so regardless of what language you put in front of them. I've seen some amazingly complex Java frameworks. At least in Scala, many of these 'complexities' are easier to understand and less magic than annotation processors and dynamic code generation. Luckily, most of us just use perl for personal scripting and not group projects anymore.... Claiming that Scalaz is a reason that Scala is complex is pretty poor. Scalaz is improving, but it has for the longest time had poor documentation and naming. As time goes on, this has been dramatically improving. I definitely do not see Scala as a language that's "only for the intelligent". I do see Category theory as requiring a brain able to handle abstract concepts. However, I've done my part to try to simplify these for average developers. I think libraries like Scalaz, if they hope to target the mass of enterprise engineers, will improve documentation and training of the core concepts. If they don't wish to target the mass of enterprise engineers, they won't. Simple as that. But I don't really see the complexity of terse Scalaz code as a sign that Scala the langauge is inherently complex. Take someone who has never seen Spring/Hibernate before and give them no help, remove the Spring manual (just source code) and see if they can understand the spring framework.
It's called "code style guidelines" and they're enforced for many different languages. The fact that C++ has heavy usage is evidence of their effectiveness. There are even tools that can enforce style rules, perhaps we need someone in Scala to step up with one.
Re: Re: What is highest priority for Scala to succeed in corpor
On 14/11/2011 19:43, Ken McDonald wrote:
> Hello from the original poster of this article. I've had my #1
> position changed by a couple of articles including one good, long one
> by Jim Herber (sp?). So here it is: the #1 problem with Scala being
> accepted in the Enterprise world:
>
> Scala is too complex.
>
> Not too long ago, I would have said this is incorrect, because Scala
> can be used at 90% productivity while being no more complex than Java.
> My attitude was changed by the aforementioned articles, plus some
> recent experience with collections.breakOut.
>
> 1) The obvious: Scala can be used as great advantage without undue
> complexity. However, there will always be people in an organization
> who are capable of using the more complex features, and ultimately do
> so regardless of coding guidelines. They will leave behind them code
> that the standard programmer, or even another advanced programmer who
> took a different tack in the Scala ecosphere, are simply unable to
> maintain. This is simply death to a large organization; much as we
> would like to think of ourselves as uniquely talented individuals,
> they _must_ have interchangeable engineers in order to continue their
> existence.
> [...]
This is true for absolutely all and every languages. Or if not the
language, it's its frameworks. But I believe that was said many times,
so I'm not sure that saying it one more time will change anything.
For example, I believe I'm a correct programmer. I love programming,
understanding new things, etc. I did some work with Coq to prove some
properties about memory contiguity on a compiler. I now a bunch of Java
frameworks and contributes to several. All that to bring some
credibility to the following: I *never* get struts. I *never* get
hibernate. I *never* get Java generics. For each of them, sometime I
thought I finally get them, to discover at the next corner that that
wasn't true.
So, having interchangeable engineers is just an utopy. What Java really
have for it is something like 15 years of tries and errors that refined
some convention to be accepted and well documented to the point of "you
just have to copy that, don't think". I'm sure that with the same amount
of time and exposure to interchangeable engineers, Scala will have the
same patterns.
It was a time of Java and OO was also unable to maintain. Who really
succeeded in maintaining EJB entreprise applications ? OK, and in a cost
effective way ?
That being said, we (Scala user) have certainly some work to do in
speaking about how easy is Scala, and not only how many theorical buzz
word we are able to sank on a single line. Things like the example on
https://github.com/harrah/xsbt/wiki/Scripts
Thanks,
Re: Re: What is highest priority for Scala to succeed in corpor
On 2011-11-14 10:43 AM, Ken McDonald wrote:
> Hello from the original poster of this article. I've had my #1
> position changed by a couple of articles including one good, long one
> by Jim Herber (sp?). So here it is: the #1 problem with Scala being
> accepted in the Enterprise world:
>
> Scala is too complex.
>
> Not too long ago, I would have said this is incorrect, because Scala
> can be used at 90% productivity while being no more complex than Java.
> My attitude was changed by the aforementioned articles, plus some
> recent experience with collections.breakOut.
>
> 1) The obvious: Scala can be used as great advantage without undue
> complexity. However, there will always be people in an organization
> who are capable of using the more complex features, and ultimately do
> so regardless of coding guidelines. They will leave behind them code
> that the standard programmer, or even another advanced programmer who
> took a different tack in the Scala ecosphere, are simply unable to
> maintain. This is simply death to a large organization; much as we
> would like to think of ourselves as uniquely talented individuals,
> they _must_ have interchangeable engineers in order to continue their
> existence.
Well articulated! Excellent point!
As a leader in establishing agreement in coding guidelines in my
organization I was frustrated by how many compromises we had to make for
individuals coding styles - I simply could not convince some people to
stop using Hungarian Notation in Java and C#. I was further frustrated
that after achieving a consensus, some developers continued to ignore
the agreed upon guidelines. In one case when I did a code review on
someone else's changes, then failed it because it did not conform to the
guidelines, they took it as a personal insult on their ability, which
led to a mess of other issues. As the software architect I am not sure
how I would manage these issues with Scala.
>
> 2) Somewhat less obvious: Scala is a highly orthogonal language, i.e.
> one feature does not "overlap" another feature, so each additional
> feature multiplies the abilities of Scala by the number of its
> possible states. Java is not so orthogonal, so let's say that each
> feature adds to the abilities of Java by the number of its position in
> the feature sequence. Let's assume that each language has five
> "features", each of which may be "used" or "unused". Scala has 2^5
> possible "feature interactions". Java, by contract, has 1+2+3+4+5. The
> counterargument to this is that you can understand entire swaths of
> the Scala feature set by understanding a single concept. This is
> theoretically true, but realistically invalid. For example, I placed
> in the upper part of the top 1% of the GREs when I took them, and I
> don't understand a freakin' thing about scalaz, plus my understanding
> of implicit parameters is coming along very slowly. I'm sure that many
> of you are brighter than I, but consider the target; the Enterprise
> programmer. They are not even in my IQ range, let alone yours. (No
> offense to EP programmers out there. I've appreciated other people's
> well-written, non fancy code, as opposed to brilliant, impenetrable
> code, many times in my career. And to be honest, you almost certainly
> have a much more successful personal life than I do.)
>
> 3) Least obvious: more power =/= more productivity. So the Scala type
> system is Turing complete, great. How many think this is important?
> How many think this should be used in code? How many think this is,
> net, a gain? I'm hoping the answer is well under 5% in each case. This
> is a bit of a rehash of (2) above, but not completely. Scala has a lot
> of features. To be honest, it has _enough_ features for the time
> being, unless new features can simplify it.
>
> How to handle this situation in the Enterprise? One previous post
> mentioned "Scala Lite", but did not elaborate. I think it's time to
> consider the possibility of optionally "feature-restricting" Scala so
> that the Enterprise can ensure its code is at a certain level of
> approachability. I won't try to give a full spec here, but will give
> one suggestion I think makes sense: It should be possible, in the
> Enterprise, to disable the ability to define implicit parameters.
Interesting Idea!
>
> Other suggestions are left for other readers.
>
>
> Cheers,
> Ken
>
RE: Re: What is highest priority for Scala to succeed in corpor
1. Relax.
2. explain that they're not good team players
3. do not fail code reviews - doesn't work in my experience (and now yours). Use them as a tool to teach newbies the guidelines
4. if it ain't working, fire their a$$ asap and save yourself the trouble. They won't come around.
I categorize people not based on their skill, which I find largely irrelevant on its own, but rather on their cost in terms of my supervising time required to keep them on-track. Un-surprisingly, one correlates negatively with the other...
And
High-cost are the first to go... regardless of their skill. And that DID include a few 'smartsies' continuously using constructs and patterns that I repeatedly deemed much too complex/costly to maintain!
-------
@Ken
Well – somewhat agree and disagree with 1)
a) From my (extensive but in one place) EP experience, I/we have NEVER asked a lesser skilled developer to fix/maintain code written by highly skilled developers. It simply never happens. The reverse is the norm. And when you’re running out of highly skilled developers, you’re royally screwed anyways…
b) Do not put smart language constructs on the same footing with poor use of stupid languages. I have seen (and see on a daily basis) such convoluted, maintenance-proof designs and code by both above and under-average developers as to turn many a hair white. There is no freaking way that any other average developers will be able to efficiently maintain said code, in either case! Languages don't screw you - people do!
c) What can I say? Automated peer reviews should work miracles…
-----Original Message-----
From: scala-user [at] googlegroups [dot] com [mailto:scala-user [at] googlegroups [dot] com] On Behalf Of Eric Kolotyluk
Sent: November-14-11 2:15 PM
To: scala-user [at] googlegroups [dot] com
Subject: Re: [scala-user] Re: What is highest priority for Scala to succeed in corporate world (Should be in scala-debate?) ?
On 2011-11-14 10:43 AM, Ken McDonald wrote:
> Hello from the original poster of this article. I've had my #1
> position changed by a couple of articles including one good, long one
> by Jim Herber (sp?). So here it is: the #1 problem with Scala being
> accepted in the Enterprise world:
>
> Scala is too complex.
>
> Not too long ago, I would have said this is incorrect, because Scala
> can be used at 90% productivity while being no more complex than Java.
> My attitude was changed by the aforementioned articles, plus some
> recent experience with collections.breakOut.
>
> 1) The obvious: Scala can be used as great advantage without undue
> complexity. However, there will always be people in an organization
> who are capable of using the more complex features, and ultimately do
> so regardless of coding guidelines. They will leave behind them code
> that the standard programmer, or even another advanced programmer who
> took a different tack in the Scala ecosphere, are simply unable to
> maintain. This is simply death to a large organization; much as we
> would like to think of ourselves as uniquely talented individuals,
> they _must_ have interchangeable engineers in order to continue their
> existence.
Well articulated! Excellent point!
As a leader in establishing agreement in coding guidelines in my organization I was frustrated by how many compromises we had to make for individuals coding styles - I simply could not convince some people to stop using Hungarian Notation in Java and C#. I was further frustrated that after achieving a consensus, some developers continued to ignore the agreed upon guidelines. In one case when I did a code review on someone else's changes, then failed it because it did not conform to the guidelines, they took it as a personal insult on their ability, which led to a mess of other issues. As the software architect I am not sure how I would manage these issues with Scala.
>
> 2) Somewhat less obvious: Scala is a highly orthogonal language, i.e.
> one feature does not "overlap" another feature, so each additional
> feature multiplies the abilities of Scala by the number of its
> possible states. Java is not so orthogonal, so let's say that each
> feature adds to the abilities of Java by the number of its position in
> the feature sequence. Let's assume that each language has five
> "features", each of which may be "used" or "unused". Scala has 2^5
> possible "feature interactions". Java, by contract, has 1+2+3+4+5. The
> counterargument to this is that you can understand entire swaths of
> the Scala feature set by understanding a single concept. This is
> theoretically true, but realistically invalid. For example, I placed
> in the upper part of the top 1% of the GREs when I took them, and I
> don't understand a freakin' thing about scalaz, plus my understanding
> of implicit parameters is coming along very slowly. I'm sure that many
> of you are brighter than I, but consider the target; the Enterprise
> programmer. They are not even in my IQ range, let alone yours. (No
> offense to EP programmers out there. I've appreciated other people's
> well-written, non fancy code, as opposed to brilliant, impenetrable
> code, many times in my career. And to be honest, you almost certainly
> have a much more successful personal life than I do.)
>
> 3) Least obvious: more power =/= more productivity. So the Scala type
> system is Turing complete, great. How many think this is important?
> How many think this should be used in code? How many think this is,
> net, a gain? I'm hoping the answer is well under 5% in each case. This
> is a bit of a rehash of (2) above, but not completely. Scala has a lot
> of features. To be honest, it has _enough_ features for the time
> being, unless new features can simplify it.
>
> How to handle this situation in the Enterprise? One previous post
> mentioned "Scala Lite", but did not elaborate. I think it's time to
> consider the possibility of optionally "feature-restricting" Scala so
> that the Enterprise can ensure its code is at a certain level of
> approachability. I won't try to give a full spec here, but will give
> one suggestion I think makes sense: It should be possible, in the
> Enterprise, to disable the ability to define implicit parameters.
Interesting Idea!
>
> Other suggestions are left for other readers.
>
>
> Cheers,
> Ken
>
Re: Re: What is highest priority for Scala to succeed in corpor
Regardless of that, I encountered some serious problems in understanding her code, because she had been exposed to operator overloading in C++ and seriously abused it.
Now look at Scala and the opportunity for abuse to a bright but undisciplined individual. That's the problem I'm talking about. Yes, a PROPER dev env should prevent these problems. But if everywhere was a proper dev env, we wouldn't even be talking about them...
Thanks for the feedback,Ken
Re: Re: What is highest priority for Scala to succeed in corpor
First - please move this thread to scala-debate. I have asked once already.
Second - I refuse to believe in developer replacability. Teams are more like organisms. Each developer is unique. You can still maintain a codebase without someone, but your team is no longer the same, in terms of what it can accomplish or how it innovates.
I refuse to work for companies that treat developers as legos. This is insulting to developers, and bad for development.
On Nov 16, 2011 10:19 PM, "Ken McDonald" <ykkenmcd [at] gmail [dot] com> wrote:Re: Re: What is highest priority for Scala to succeed in corpor
First - please move this thread to scala-debate. I have asked once already.
Second - I refuse to believe in developer replacability. Teams are more like organisms. Each developer is unique. You can still maintain a codebase without someone, but your team is no longer the same, in terms of what it can accomplish or how it innovates.
I refuse to work for companies that treat developers as legos. This is insulting to developers, and bad for development.
On Nov 16, 2011 10:19 PM, "Ken McDonald" <ykkenmcd [at] gmail [dot] com> wrote:Re: What is highest priority for Scala to succeed in corporate
On 05/11/2011 22:51, Ken McDonald wrote:
> [....]
>
> The question is simple: List, in descending order of priority, what
> you feel needs to be addressed/fixed/whatever for Scala to succeed in
> the corporate (and hence IMHO ultimately the "real") world.
>
[...]
I just get the feedback of a (experience and good) Java programmer with
his first hours of Scala. His main problems were:
#1 (and a big 'one') : Binary (un)compatibility.
That one is just complettly unexpected for a Java user, and so it tooks
a rather long time for him to understand that most of his problems were
due to that point.
Just to be clear: he wasn't even aware that there might be some issues
of that kind in Scala - Java really comes with bad habbits ;)
The good news is that that one should be rather easy to correct, at
least for the 'awarness' issue: just make a lot of documentation and
warning all around the internet until it's known and expected that you
have to be carefull (or more preciselly to take care) of what versions
of Scala are used in what libraries (or what you Eclipse plugin force
you to use).
#2: brittle feeling about the Eclipse plugin
Most of his problem were due to the binary compatibility issue, but
nonetheless, the Eclipse plugin seems to give a bad feeling to
newcomers. It's a combination of things: performance (slow completion,
memory used, etc), bugs, bad (or not fisrt-class) integration with other
tools like SBT, etc.
That were his two main concerns, the first one being the worst - because
it really was unexpected for a Java-dev, and make nothing works,
sometimes in really strange ways.
Thanks,
Re: What is highest priority for Scala to succeed in corporate
If the scala/Java world wasn't pretty much standardized on sbt/Maven, maybe the binary compatibility would be an issue but I fail to see how that is a (big?) problem, especially starting with scala 2.9
Cant stop wondering How on earth he found that as an issue during his first hours of playing with the language?
I also can't stop but notice he had NO issues with the language itself ??
Thanks,
Razvan
On 2011-11-11, at 9:31 AM, Francois wrote:
> On 05/11/2011 22:51, Ken McDonald wrote:
>> [....]
>>
>> The question is simple: List, in descending order of priority, what you feel needs to be addressed/fixed/whatever for Scala to succeed in the corporate (and hence IMHO ultimately the "real") world.
>>
> [...]
>
>
> I just get the feedback of a (experience and good) Java programmer with his first hours of Scala. His main problems were:
>
> #1 (and a big 'one') : Binary (un)compatibility.
>
> That one is just complettly unexpected for a Java user, and so it tooks a rather long time for him to understand that most of his problems were due to that point.
> Just to be clear: he wasn't even aware that there might be some issues of that kind in Scala - Java really comes with bad habbits ;)
>
> The good news is that that one should be rather easy to correct, at least for the 'awarness' issue: just make a lot of documentation and warning all around the internet until it's known and expected that you have to be carefull (or more preciselly to take care) of what versions of Scala are used in what libraries (or what you Eclipse plugin force you to use).
>
>
> #2: brittle feeling about the Eclipse plugin
>
> Most of his problem were due to the binary compatibility issue, but nonetheless, the Eclipse plugin seems to give a bad feeling to newcomers. It's a combination of things: performance (slow completion, memory used, etc), bugs, bad (or not fisrt-class) integration with other tools like SBT, etc.
>
> That were his two main concerns, the first one being the worst - because it really was unexpected for a Java-dev, and make nothing works, sometimes in really strange ways.
>
> Thanks,
>
Re: What is highest priority for Scala to succeed in corporate
On 11/11/2011 16:21, Razvan Cojocaru wrote:
> If the scala/Java world wasn't pretty much standardized on sbt/Maven, maybe the binary compatibility would be an issue but I fail to see how that is a (big?) problem, especially starting with scala 2.9
>
> Cant stop wondering How on earth he found that as an issue during his first hours of playing with the language?
Simple : download Play! framework, use sbt:eclipse, then use eclipse
IDE. But Play! was built for Scala 2.8, and Scala IDE came with 2.9.
Re: What is highest priority for Scala to succeed in corporate
> and Scala IDE came with 2.9.
For the record, the Scala IDE supports both 2.8 and 2.9.
http://download.scala-ide.org/releases-28/stable/site
http://download.scala-ide.org/releases-29/stable/site
Re: What is highest priority for Scala to succeed in corporate
On 11/11/2011 21:55, Mirco Dotta wrote:
>> and Scala IDE came with 2.9.
> For the record, the Scala IDE supports both 2.8 and 2.9.
>
> http://download.scala-ide.org/releases-28/stable/site
> http://download.scala-ide.org/releases-29/stable/site
I do know that, as I think any Scalaiste more than some days old do.
What I wanted to report is that complettly newcomers, especially Java
one, it was a surprise to have to care about binary compatibility
between Scala version.
Well, and it was just a report, I don't want to have to argue against
fact. You can take care of them of not, it was just to contribute what
might be an "highest priority for Scala to succeed in corporate world".
Thanks,
Re: What is highest priority for Scala to succeed in corporate
Francois, don't take it personally, I was simply reporting a fact.
Going back to binary compatibility, I think that an important step has been made: Scala minor releases
are now binary compatible.
That demonstrates the problem is (1) relevant, and (2) work is being done to mitigate it.
I agree with you when you say that a Java dev is not used to deal with binary incompatibilities, hence we
need to make his (and our!) life easier.
How can we do that? In my opinion, the first thing that is needed is a way to tell programmatically if a
library is binary incompatible wrt the used scala library (the example you reported for Play! is a perfect
use case).
Just imagine the Scala IDE issuing an error when you add in the classpath a library that is not binary compatible.
I bet that it would make binary compatibility a much simpler problem to deal with (for everyone).
But for making this real we need help from the compiler. Specifically, we need to know with what Scala version
a binary class is compiled.
An additional important aspect is improving the documentation and understanding of how to evolve Scala
code to ensure release-to-release binary compatibility. If library maintainers are given the tools to strive for
binary compatible releases, then the whole problem will simply go away.
Cheers,
Mirco
On Nov 11, 2011, at 10:27 PM, Francois wrote:
> On 11/11/2011 21:55, Mirco Dotta wrote:
>>> and Scala IDE came with 2.9.
>> For the record, the Scala IDE supports both 2.8 and 2.9.
>>
>> http://download.scala-ide.org/releases-28/stable/site
>> http://download.scala-ide.org/releases-29/stable/site
>
> I do know that, as I think any Scalaiste more than some days old do. What I wanted to report is that complettly newcomers, especially Java one, it was a surprise to have to care about binary compatibility between Scala version.
>
> Well, and it was just a report, I don't want to have to argue against fact. You can take care of them of not, it was just to contribute what might be an "highest priority for Scala to succeed in corporate world".
>
> Thanks,
>
Re: What is highest priority for Scala to succeed in corporate
On 11/11/2011 23:41, Mirco Dotta wrote:
> [...]
> I agree with you when you say that a Java dev is not used to deal with binary incompatibilities, hence we
> need to make his (and our!) life easier.
>
> How can we do that? In my opinion, the first thing that is needed is a way to tell programmatically if a
> library is binary incompatible wrt the used scala library (the example you reported for Play! is a perfect
> use case).
That would be perfect. In the reported example, it would have made clear
where the errors were coming from.
But even without that, the incompability between major revision should
be made much more visible (I mean, in a "can not be ignored" fashion) on
Scala IDE page.
If that information was really blazing in the first page, new comers may
at least wonder why so much fuzz is written about different Scala
version and take about that, and that may ring a bell when some times
after, they will see libraries with different scala version on their
artifact name.
I remember that my first complexe Scala project (as in something with
Scala external libraries) implied Lift, and that I quickly become aware
of the binaries problem. That was on Scala 2.6 series, so we don't have
all the goodness of present days to handle it, but David Pollak did make
really clear and apparent, and in a good number of ml threads and other
media that you *had* to use the same Scala version than the one Lift was
compilled with. That helps and certainly saved me some days and WTF
moments.
> Just imagine the Scala IDE issuing an error when you add in the classpath a library that is not binary compatible.
> I bet that it would make binary compatibility a much simpler problem to deal with (for everyone).
> But for making this real we need help from the compiler. Specifically, we need to know with what Scala version
> a binary class is compiled.
>
> An additional important aspect is improving the documentation and understanding of how to evolve Scala
> code to ensure release-to-release binary compatibility. If library maintainers are given the tools to strive for
> binary compatible releases, then the whole problem will simply go away.
Of course, what would be even better, but it is more looking like a more
involved, and so middle to long term solution.
Thanks,
Re: What is highest priority for Scala to succeed in corporate
All there is to backwards compatibly in scala is matching the compiler version to the scala library version used to run the compiled code... Far as I can tell.
As to knowing and matching compiled versions , sbt does add the compiler version to the artifact and it also can compile and publish a few versions of the artifact already...
Use %% and insist the library dev publishes a few versions...?
Thanks,
Razvan
On 2011-11-11, at 5:41 PM, Mirco Dotta wrote:
> Francois, don't take it personally, I was simply reporting a fact.
>
> Going back to binary compatibility, I think that an important step has been made: Scala minor releases
> are now binary compatible.
> That demonstrates the problem is (1) relevant, and (2) work is being done to mitigate it.
>
> I agree with you when you say that a Java dev is not used to deal with binary incompatibilities, hence we
> need to make his (and our!) life easier.
>
> How can we do that? In my opinion, the first thing that is needed is a way to tell programmatically if a
> library is binary incompatible wrt the used scala library (the example you reported for Play! is a perfect
> use case).
>
> Just imagine the Scala IDE issuing an error when you add in the classpath a library that is not binary compatible.
> I bet that it would make binary compatibility a much simpler problem to deal with (for everyone).
> But for making this real we need help from the compiler. Specifically, we need to know with what Scala version
> a binary class is compiled.
>
> An additional important aspect is improving the documentation and understanding of how to evolve Scala
> code to ensure release-to-release binary compatibility. If library maintainers are given the tools to strive for
> binary compatible releases, then the whole problem will simply go away.
>
> Cheers,
> Mirco
>
> On Nov 11, 2011, at 10:27 PM, Francois wrote:
>
>> On 11/11/2011 21:55, Mirco Dotta wrote:
>>>> and Scala IDE came with 2.9.
>>> For the record, the Scala IDE supports both 2.8 and 2.9.
>>>
>>> http://download.scala-ide.org/releases-28/stable/site
>>> http://download.scala-ide.org/releases-29/stable/site
>>
>> I do know that, as I think any Scalaiste more than some days old do. What I wanted to report is that complettly newcomers, especially Java one, it was a surprise to have to care about binary compatibility between Scala version.
>>
>> Well, and it was just a report, I don't want to have to argue against fact. You can take care of them of not, it was just to contribute what might be an "highest priority for Scala to succeed in corporate world".
>>
>> Thanks,
>>