Upload
bruce-eckel
View
2.372
Download
0
Embed Size (px)
DESCRIPTION
How fares this grand language experiment called Scala? Bruce relates experiences while writing "Atomic Scala," insights from last Fall's Scala Summit, and conversations from his recent trip to the Craft Conference in Budapest, with the goal of starting discussions on the issues and direction of the language.
Citation preview
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