Transcript
Page 1: Rethinking Scala Presented in San Francisco May 7, 2014

Rethinking ScalaBruce Eckel

www.MindviewInc.comwww.AtomicScala.com

May 7, 2014, San FranciscoSlides available onwww.slideshare.net

Typesafe is sponsoring the videographer -- search the web for video

Page 2: Rethinking Scala Presented in San Francisco May 7, 2014

• First 25% at AtomicScala.com: Kindle, ePub, PDF, HTML

• First 50% at Typesafe.com (PDF)

Page 3: Rethinking Scala Presented in San Francisco May 7, 2014

Reinventing-Business.com

Page 4: Rethinking Scala Presented in San Francisco May 7, 2014

"Start With Why"- Simon Sinek

(Book, but TED talk might be enough. Also

see podcast)

Page 5: Rethinking Scala Presented in San Francisco May 7, 2014

"Break the Chains Around Our Brains"

Page 6: Rethinking Scala Presented in San Francisco May 7, 2014

"Unstick"

Page 7: Rethinking Scala Presented in San Francisco May 7, 2014

"Find the Unstuck Alternatives"

Page 8: Rethinking Scala Presented in San Francisco May 7, 2014

"Burst Forward"

Page 9: Rethinking Scala Presented in San Francisco May 7, 2014

"Bigger Leverage"

Page 10: Rethinking Scala Presented in San Francisco May 7, 2014

?

Page 11: Rethinking Scala Presented in San Francisco May 7, 2014

This is the presentation I should have given at Craft in Budapest

Page 12: Rethinking Scala Presented in San Francisco May 7, 2014

Do Languages

Matter ?

Page 13: Rethinking Scala Presented in San Francisco May 7, 2014

Do Languages (still)

Matter ?

Page 14: Rethinking Scala Presented in San Francisco May 7, 2014

Do Languages (still)

Matter (as much)?

Page 15: Rethinking Scala Presented in San Francisco May 7, 2014

Does Arguing About Languages Still Matter?

Page 16: Rethinking Scala Presented in San Francisco May 7, 2014

• Assembly -> C• C -> C++• C++ -> Java

– Virtual Machines– Garbage Collection

• Statically typed vs. Dynamic• Checked Exceptions• Concurrency and Parallelism• OO vs Functional• Java Posse Roundup stopped talking

about Java

Page 17: Rethinking Scala Presented in San Francisco May 7, 2014

No Longer a Big Deal To ...

• Change Languages– Client: Java -> Python -> Go

• Combine Languages– e.g. Erlang controlling other languages– REST/JSON APIs– HTML5/CSS/Javascript UIs

Page 18: Rethinking Scala Presented in San Francisco May 7, 2014

Thus

• Arguing to consider new languages no longer fits my "why" -- we're not stuck there anymore.

• (Why bother arguing when you can just experiment?)

Page 19: Rethinking Scala Presented in San Francisco May 7, 2014

All This For Context

• I'm not attacking your favorite language• I'm asking whether we can make

development (a lot) better• It's just what I do• Not sure exactly why I do that yet, but it's

definitely consistent with my pattern of jiggling things

• Bill Venners says I hang out with early adopters and that affects my perspective

Page 20: Rethinking Scala Presented in San Francisco May 7, 2014

People seem to become much more productive in Scala vs. Java. But could a

different paradigm give us a lot more productivity?

Page 21: Rethinking Scala Presented in San Francisco May 7, 2014

Scala is a big improvement over Java

• A language needs to multiply productivity over the alternatives to justify changing, and Scala does

• Very significant improvements in programming power, while maintaining two-way transparency with Java

• Scala is not gridlocked by backward compatibility like Java

• But: without the Java constraint, is Scala the best choice?

Page 22: Rethinking Scala Presented in San Francisco May 7, 2014

Importance of Community• Python

– Community culture might be the most friendly and welcoming

– Python conference: about 20% women, actively involved

• Scala is the "League of Legends"– I just changed newsgroups until I found a

useful one– Apparently there was some internet rage over

the title of Atomic Scala

Page 23: Rethinking Scala Presented in San Francisco May 7, 2014

How Many Ways

• “Scala is the most un-opinionated language I’ve seen” -- Dan North

• “You can do one thing in so many ways; each team/company must invent its own culture” -- Speaker at Craft

• Language is communication; subcultures add cognitive load

• Consider Go: even code formatting is standardized

Page 24: Rethinking Scala Presented in San Francisco May 7, 2014

The Complexity Jump

• C++ was "C with classes"• Scala is not really "Java with" anything

– It's almost completely different• With C++, knowing C was an advantage• Do we even care about Java

programmers?– Or just existing Java libraries?

• What is the "why" of Scala?

Page 25: Rethinking Scala Presented in San Francisco May 7, 2014

Libraries vs. Frameworks

• “I prefer Clojure libraries rather than frameworks” -- young Scala programmer at Craft

• Libraries are one dimension of complexity• Frameworks are two or three dimensions

– What is complexity cost vs. productivity benefit?

– Once you get comfortable with a framework, how much harder is it to change?

Page 26: Rethinking Scala Presented in San Francisco May 7, 2014

Other Language Options

• Erlang trivially interfaces to other languages– Example that I want to try: Erlang controller

and concurrency/parallelism, using Python-coded operations

• Rust adopts proven features from other languages but with native compilation– Pattern matching, for example

Page 27: Rethinking Scala Presented in San Francisco May 7, 2014

Scala Summit

• ScalaSummit.com• "You don’t need to

understand monads"• "Scala collides

functional and OO"– Fascinating

experiment, exposes some sharp corners

Page 28: Rethinking Scala Presented in San Francisco May 7, 2014

Hearsay

• Scala 3 might make significant non-backwards-compatible changes to the language– Potentially fixing important issues– Potentially alienating some users

Page 29: Rethinking Scala Presented in San Francisco May 7, 2014

People seem to become much more productive in Scala vs. Java. But could a different

paradigm give us a lot more productivity?

Page 30: Rethinking Scala Presented in San Francisco May 7, 2014

Discussion


Recommended