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
• First 25% at AtomicScala.com: Kindle, ePub, PDF, HTML
• First 50% at Typesafe.com (PDF)
Reinventing-Business.com
"Start With Why"- Simon Sinek
(Book, but TED talk might be enough. Also
see podcast)
"Break the Chains Around Our Brains"
"Unstick"
"Find the Unstuck Alternatives"
"Burst Forward"
"Bigger Leverage"
?
This is the presentation I should have given at Craft in Budapest
Do Languages
Matter ?
Do Languages (still)
Matter ?
Do Languages (still)
Matter (as much)?
Does Arguing About Languages Still Matter?
• 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
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
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?)
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
People seem to become much more productive in Scala vs. Java. But could a
different paradigm give us a lot more productivity?
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?
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
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
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?
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?
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
Scala Summit
• ScalaSummit.com• "You don’t need to
understand monads"• "Scala collides
functional and OO"– Fascinating
experiment, exposes some sharp corners
Hearsay
• Scala 3 might make significant non-backwards-compatible changes to the language– Potentially fixing important issues– Potentially alienating some users
People seem to become much more productive in Scala vs. Java. But could a different
paradigm give us a lot more productivity?
Discussion