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

RE: What is highest priority for Scala to succeed in corporate world?

3 replies
Peter C. Chapin 2
Joined: 2011-01-07,
User offline. Last seen 42 years 45 weeks ago.

> -----Original Message-----
> From: scala-debate [at] googlegroups [dot] com [mailto:scala-
> debate [at] googlegroups [dot] com] On Behalf Of Seth Tisue
>
> > The greatest barrier to scala adoption by large enterprises is the
certain
> > knowledge that initial productivity gains will ultimately be offset as
every
> > single developer is dragged into yet another sequence of interminable
> > debates on the complexity, or otherwise, of the language.
>
> Agree. All the hand-wringing about it is a self-sustaining,
> self-fulfilling prophecy.

It sounds like we should keep in mind one of the fundamental laws of the
universe: the Law of Conservation of Difficulty. If you make difficult
things simple, the difficulty appears somewhere else. Maybe Scala is complex
(in some sense). Perhaps that is because it removes the need for complex
frameworks. By the Law of Conservation of Difficulty, this is to be
expected so we should just move on.

I'm kidding of course... well, mostly.

Peter

odersky
Joined: 2008-07-29,
User offline. Last seen 45 weeks 6 days ago.
Re: What is highest priority for Scala to succeed in corporate


On Tue, Nov 15, 2011 at 4:59 PM, Peter C. Chapin <PChapin [at] vtc [dot] vsc [dot] edu> wrote:

> -----Original Message-----
> From: scala-debate [at] googlegroups [dot] com [mailto:scala-
> debate [at] googlegroups [dot] com] On Behalf Of Seth Tisue
>
> > The greatest barrier to scala adoption by large enterprises is the
certain
> > knowledge that initial productivity gains will ultimately be offset as
every
> > single developer is dragged into yet another sequence of interminable
> > debates on the complexity, or otherwise, of the language.
>
> Agree. All the hand-wringing about it is a self-sustaining,
> self-fulfilling prophecy.

It sounds like we should keep in mind one of the fundamental laws of the
universe: the Law of Conservation of Difficulty. If you make difficult
things simple, the difficulty appears somewhere else. Maybe Scala is complex
(in some sense). Perhaps that is because it removes the need for complex
frameworks.  By the Law of Conservation of Difficulty, this is to be
expected so we should just move on.

I'm kidding of course... well, mostly.

In fact, I think there's a lot to this law. Here's how I see it: Every language and framework has aspects where things get difficult, where you push the systems to its limits. In some languages or frameworks that limit is reached fairly quickly and pushing it does not generally yield interesting things. For me, Java generics with wildcards is one of these. Generic types with use-site variance tend to get quickly out of hand but the result is not very interesting, so you don't show these things to your friends and you tend to step out the of way even if it means using a raw type.

Scala is a fairly orthogonal and powerful language. So its red zone, where things are pushed to their limits, is, to many, very interesting. It's the land of applicative functors, monads, category theory, scalaz. Technically that's a definite improvement: Scala has powerful abstractions that hold up even for things that were previously not expressible in mainstream technologies (not that Scala is perfect here, just that it is better than many other languages). That means also that many things that are hard in other languages are actually easy in Scala, because of the nice abstractions.

But sociologically, we have a problem, and that problem is bigger than I first imagined: Because these frontiers of Scala programming are interesting (at least to some), people exploring them write about it a lot. So new people coming into Scala have a good chance of stumbling over these posts and being flabbergasted. We need to work together to put things back into perspective. No, you need not be able to read scalaz to be a competent Scala programmer. No, Scala is not Haskell, it's not even just an FP language. You can take it as one, and have fun exploring the frontiers. But don't pretend that every one has to follow you, and, in particular, don't denigrate people as lazy or stupid if they choose not to follow you.

It's the sign of a good engineer to be resource conscious and to be able to find the cheapest solution for a given problem. In computing, a too high abstraction level is a cost, in learning, understanding, maintaining. Using an abstraction where it is not necessary is good in mathematics, but generally bad in engineering.

Cheers

 -- Martin



odersky
Joined: 2008-07-29,
User offline. Last seen 45 weeks 6 days ago.
Re: What is highest priority for Scala to succeed in corporate
On Tue, Nov 15, 2011 at 4:59 PM, Peter C. Chapin <PChapin [at] vtc [dot] vsc [dot] edu>wrote:

> -----Original Message-----
> From: scala-debate [at] googlegroups [dot] com [mailto:scala-
debate [at] googlegroups [dot] com] On Behalf Of Seth Tisue
>
> > The greatest barrier to scala adoption by large enterprises is the
certain
> > knowledge that initial productivity gains will ultimately be offset as
every
> > single developer is dragged into yet another sequence of interminable
> > debates on the complexity, or otherwise, of the language.
>
> Agree. All the hand-wringing about it is a self-sustaining,
> self-fulfilling prophecy.

It sounds like we should keep in mind one of the fundamental laws of the
universe: the Law of Conservation of Difficulty. If you make difficult
things simple, the difficulty appears somewhere else. Maybe Scala is complex
(in some sense). Perhaps that is because it removes the need for complex
frameworks.  By the Law of Conservation of Difficulty, this is to be
expected so we should just move on.

I'm kidding of course... well, mostly.

I like the name "Law of Conservation of Difficulty" but would interpret it slightly differently. Here's how I see it: Every language and framework has aspects where things get difficult, where you push the systems to its limits. In some languages or frameworks that limit is reached fairly quickly and pushing it does not generally yield interesting things. For me, Java generics with wildcards is one of these. Generic types with use-site variance tend to get quickly out of hand but the result is not very interesting, so you don't show these things to your friends and you tend to step out the of way even if it means using a raw type. 

Scala is a fairly orthogonal and powerful language. So its red zone, where things are pushed to their limits, is, to many, very interesting. It's the land of applicative functors, monads, category theory, scalaz. Technically that's a definite improvement: Scala has powerful abstractions that hold up even for things that were previously not expressible in mainstream technologies (not that Scala is perfect here, just that it is better than many other languages). That means also that many things that are hard in other languages are actually easy in Scala, because of the nice abstractions.

But sociologically, we have a problem, and that problem is bigger than I first imagined: Because these frontiers of Scala programming are interesting, people exploring them write about it a lot. So new people coming into Scala have a good chance of stumbling over these posts and being flabbergasted. We need to work together to put things back into perspective. No, you need not be able to read scalaz to be a competent Scala programmer. No, Scala is not Haskell, it's not even just an FP language. You can take it as one, and have fun exploring the frontiers. But don't pretend that every one has to follow you, and, in particular, don't denigrate people as lazy or stupid if they choose not to follow you. 

It's the sign of a good engineer to be resource conscious and to be able to find the cheapest solution for a given problem. In computing, a too high abstraction level is a cost, in learning, understanding, maintaining. Using an abstraction where it is not necessary is good in mathematics, but generally bad in engineering. 
Cheers

 -- Martin
Tony Morris 2
Joined: 2009-03-20,
User offline. Last seen 42 years 45 weeks ago.
Re: What is highest priority for Scala to succeed in corporate

On 16/11/11 01:59, Peter C. Chapin wrote:
>
> It sounds like we should keep in mind one of the fundamental laws of the
> universe: the Law of Conservation of Difficulty. If you make difficult
> things simple, the difficulty appears somewhere else. Maybe Scala is complex
> (in some sense). Perhaps that is because it removes the need for complex
> frameworks. By the Law of Conservation of Difficulty, this is to be
> expected so we should just move on.
>
> I'm kidding of course... well, mostly.
>
> Peter
>

If there exists a skill that is difficult, tools will arise that make
this difficulty more apparent, and those that either refuse or fail to
acquire this skill will complain that it is too complex in order to
justify their ongoing incompetence to themselves and others. They then
wonder why others do not take such claims seriously, fueling the
perpetuity of the "discussion."

I have seen this phenomena in other professions where I have worked. I'm
not kidding, of course.

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