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.
16. • 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
17. 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
18. 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?)
19. 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
20. People seem to become much more
productive in Scala vs. Java. But could a
different paradigm give us a lot more
productivity?
21. 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?
22. 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
23. 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
24. 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?
25. 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?
26. 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
27. Scala Summit
• ScalaSummit.com
• "You don’t need to
understand monads"
• "Scala collides
functional and OO"
– Fascinating
experiment, exposes
some sharp corners
28. Hearsay
• Scala 3 might make significant non-
backwards-compatible changes to the
language
– Potentially fixing important issues
– Potentially alienating some users
29. People seem to become much more productive
in Scala vs. Java. But could a different
paradigm give us a lot more productivity?