Do Languages Matter? 
Bruce Eckel 
www.MindviewInc.com 
www.AtomicScala.com 
Oct 24, 2014, Geecon Prague 
Slides available on 
www.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.
Do Languages Matter?

Do Languages Matter?

  • 1.
    Do Languages Matter? Bruce Eckel www.MindviewInc.com www.AtomicScala.com Oct 24, 2014, Geecon Prague Slides available on www.slideshare.net
  • 3.
    Eight Years onthe C++ Standards Committee
  • 6.
    • We learnedthat open-source languages are always a better choice!
  • 7.
    www.AtomicScala.com • FreeFirst 25% Kindle, ePub, PDF, HTML
  • 8.
    Magazines • Thesethings before there was blogging • Published over 150 articles
  • 9.
  • 10.
  • 11.
  • 12.
    Or Are WeAll Stuck In a Loop?
  • 13.
    We keep tryingto compel productivity. Maybe that's not the best way. (It doesn't work well for me).
  • 14.
  • 15.
    "Start With Why" - Simon Sinek Book, but TED talk might be enough.
  • 16.
    Break the ChainsAround Our Brains
  • 17.
    Find the UnstuckAlternatives
  • 18.
    We Can FixIt. We Can Make It a Lot Better.
  • 19.
  • 20.
    In the Spiritof "Start With Why," I ask:
  • 21.
  • 22.
  • 23.
    Do Languages (still) Matter (as much)?
  • 24.
    Does Arguing About Languages Still Matter?
  • 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 Goalfor 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 featuresare 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 aBig 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 • Arguingto 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 ForContext • 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 tobecome much more productive in Scala vs. Java. But could a different paradigm give us a lot more productivity?
  • 32.
    Scala is abig 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 forExploration • 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 • "TheCurse 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 tobecome much more productive in Scala vs. Java. But could a different paradigm give us a lot more productivity?
  • 40.
  • 42.
    • Rust: newCEO 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 likethe 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.