The document discusses how programming languages have evolved over time and questions whether arguing over languages still matters. It notes that open-source languages are better, languages can be easily combined, and changing languages is no longer a big deal. While Scala improves on Java, its complexity may not justify switching. Different paradigms could provide more productivity gains. The author considers exploring other languages like Erlang, Rust, Kotlin as easier translations from Scala.
25. • 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
26. • Stroustrup's Goal for C++:
Make Library Use Easier
• Java Validated Virtual
Machines & Garbage
Collection
– Lots of libraries
– Also mainstreamed the big
framework
– Invalidated checked
exceptions
• Ruby On Rails Validated
Dynamic Languages for
serious projects
– Mitigated some of the damage
from Perl & PHP (read "PHP:
A fractal of bad design")
– Helped legitimize Python,
Groovy, etc.
27. Functional language features are
the new-old thing
• Primarily motivated by multiple
cores and parallel
programming
• Python started adding
functional features a few years
ago (but no parallelism)
• Functional purists are trying to
steer the conversation
("objects are bad/failures")
• Object-functional hybrids are
moving to center stage IMO
– How will parallelism look in
such languages?
– Pure functional vs CSP (as
in Go). STM has failed.
28. 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
29. 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?
• So...
• They kind of don't
matter (eek)
30. 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
31. People seem to become much more productive in
Scala vs. Java. But could a different paradigm give
us a lot more productivity?
32. Scala is a big improvement over Java
• A language needs to
multiply productivity over
the alternatives to justify
changing, and Scala does
• Significant advancements 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?
33. 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
34. How Many Ways
• “Scala is the most un-opinionated
language I’ve
seen” -- Dan North
• No signs yet of "idiomatic
Scala"
• Each team/company
must invent its own
idioms which can be very
different
• Language is
communication;
subcultures add cognitive
load
• Consider Go: even code
formatting is standardized
35. The Complexity Jump
• C++ was "C with classes"
• Scala is not really "Java with"
anything
– It's almost completely different
– Might help Java programmers
go functional
• With C++, knowing C was an
advantage
• Do we even care about Java
programmers?
– Or just existing Java
libraries/frameworks?
– Scala reinvents a lot
• What is the "why" of
Scala?
36. Libraries vs. Frameworks
• “I prefer Clojure libraries
rather than frameworks”
-- Young Scala
programmer at Craft
• Libraries introduce one
dimension of complexity
• Frameworks introduce
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?
37. Some Paths for Exploration
• Erlang trivially
interfaces to other
languages
– Example 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
38. ScalaSummit.com
• "The Curse of the
Monad" vs. "You don’t
need to understand
monads"
• "Scala collides functional
and OO"
– Fascinating experiment,
exposes some sharp
corners
39. People seem to become much more productive in
Scala vs. Java. But could a different paradigm give
us a lot more productivity?
42. • Rust: new CEO at Mozilla
is (appropriately) focusing
on FirefoxOS. Rust
development will probably
suffer
• I can't seem to get away
from writing about
languages, but
Reinventing Business is
too big
• Languages must become
a hobby -- what's easy
and fun (NOT Java 8!!!)
43. Kotlin looks like the easiest
translation from Atomic Scala
• Could be "Scala for everyone
else"
• Much more powerful than
Java 8, without the jagged
edges in Scala
• Really fancy things can be
done with Scala
• Kotlin is a language
replacement for Java, so
Java programmers don't
have to learn a whole new
world.