Do Languages Matter? Bruce Eckel www.MindviewInc.com www.AtomicScala.com Oct 24, 2014, Geecon Prague Slides available on www.slideshare.net
Nov 22, 2014
Do Languages Matter?Bruce Eckel
www.MindviewInc.comwww.AtomicScala.com
Oct 24, 2014, Geecon PragueSlides available onwww.slideshare.net
Eight Years on the C++ Standards Committee
• We learned that open-source languages are always a better choice!
www.AtomicScala.com
• Free First 25% Kindle, ePub, PDF, HTML
Magazines
• These things before there was blogging
• Published over 150 articles
Slowly Stopped Feeling
Effective
Started Searching
Is It Just Me?
Or Are We All Stuck In a Loop?
We keep trying to compel
productivity. Maybe that's not the best
way. (It doesn't
work well for me).
Reinventing-Business.com
"Start With Why"- Simon Sinek
Book, but TED talk might be enough.
Break the Chains Around Our Brains
Find the Unstuck Alternatives
We Can Fix It.We Can Make It a Lot
Better.
?
In the Spirit of "Start With Why,"
I ask:
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
• 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.
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.
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?
• So...• They kind of don't
matter (eek)
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
• 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?
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
• 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
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?
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?
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
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
People seem to become much more productive in Scala vs. Java. But could a different paradigm give
us a lot more productivity?
My Dirty Little Secret
• 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!!!)
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.