do languages matter?
DESCRIPTION
Presentation given at Geecon Prague, Oct 24 2014TRANSCRIPT
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.