SlideShare a Scribd company logo
1 of 44
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 Still Matter

More Related Content

What's hot

What's the "right" PHP Framework?
What's the "right" PHP Framework?What's the "right" PHP Framework?
What's the "right" PHP Framework?Barry Jones
 
Introducing the Ceylon Project
Introducing the Ceylon ProjectIntroducing the Ceylon Project
Introducing the Ceylon ProjectMichael Scovetta
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem Claudson Oliveira
 
Optimizing for programmer happiness
Optimizing for programmer happinessOptimizing for programmer happiness
Optimizing for programmer happinessJosh Schramm
 
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReadersRakuten Group, Inc.
 
Introduction to Hanjp-IM Project (DebConf18 - Hsinchu, Taiwan)
Introduction to Hanjp-IM Project (DebConf18 - Hsinchu, Taiwan)Introduction to Hanjp-IM Project (DebConf18 - Hsinchu, Taiwan)
Introduction to Hanjp-IM Project (DebConf18 - Hsinchu, Taiwan)Youngbin Han
 
Essential programmer library
Essential programmer libraryEssential programmer library
Essential programmer libraryAndrew Hunt
 
Automating boring and repetitive UbuCon Asia video and subtitle stuffs
Automating boring and repetitive UbuCon Asia video and subtitle stuffsAutomating boring and repetitive UbuCon Asia video and subtitle stuffs
Automating boring and repetitive UbuCon Asia video and subtitle stuffsYoungbin Han
 
Atlassian Summit 2012 - Immigration to Confluence: A Journey Through Foreign ...
Atlassian Summit 2012 - Immigration to Confluence: A Journey Through Foreign ...Atlassian Summit 2012 - Immigration to Confluence: A Journey Through Foreign ...
Atlassian Summit 2012 - Immigration to Confluence: A Journey Through Foreign ...Atlassian
 
Repeating History...On Purpose...with Elixir
Repeating History...On Purpose...with ElixirRepeating History...On Purpose...with Elixir
Repeating History...On Purpose...with ElixirBarry Jones
 
Comparing Golang and understanding Java Value Types
Comparing Golang and understanding Java Value TypesComparing Golang and understanding Java Value Types
Comparing Golang and understanding Java Value TypesPéter Verhás
 

What's hot (14)

What's the "right" PHP Framework?
What's the "right" PHP Framework?What's the "right" PHP Framework?
What's the "right" PHP Framework?
 
Introducing the Ceylon Project
Introducing the Ceylon ProjectIntroducing the Ceylon Project
Introducing the Ceylon Project
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem
 
Optimizing for programmer happiness
Optimizing for programmer happinessOptimizing for programmer happiness
Optimizing for programmer happiness
 
How To Write a Testable Code
How To Write a Testable CodeHow To Write a Testable Code
How To Write a Testable Code
 
Scalable Open Source
Scalable Open SourceScalable Open Source
Scalable Open Source
 
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders
 
Introduction to Hanjp-IM Project (DebConf18 - Hsinchu, Taiwan)
Introduction to Hanjp-IM Project (DebConf18 - Hsinchu, Taiwan)Introduction to Hanjp-IM Project (DebConf18 - Hsinchu, Taiwan)
Introduction to Hanjp-IM Project (DebConf18 - Hsinchu, Taiwan)
 
Essential programmer library
Essential programmer libraryEssential programmer library
Essential programmer library
 
Automating boring and repetitive UbuCon Asia video and subtitle stuffs
Automating boring and repetitive UbuCon Asia video and subtitle stuffsAutomating boring and repetitive UbuCon Asia video and subtitle stuffs
Automating boring and repetitive UbuCon Asia video and subtitle stuffs
 
Atlassian Summit 2012 - Immigration to Confluence: A Journey Through Foreign ...
Atlassian Summit 2012 - Immigration to Confluence: A Journey Through Foreign ...Atlassian Summit 2012 - Immigration to Confluence: A Journey Through Foreign ...
Atlassian Summit 2012 - Immigration to Confluence: A Journey Through Foreign ...
 
Repeating History...On Purpose...with Elixir
Repeating History...On Purpose...with ElixirRepeating History...On Purpose...with Elixir
Repeating History...On Purpose...with Elixir
 
Comparing Golang and understanding Java Value Types
Comparing Golang and understanding Java Value TypesComparing Golang and understanding Java Value Types
Comparing Golang and understanding Java Value Types
 
DITA for Localization
DITA for LocalizationDITA for Localization
DITA for Localization
 

Viewers also liked

Phase 3: Better ideas (Presentation at SalesForce 1-28-2015)
Phase 3: Better ideas (Presentation at SalesForce 1-28-2015)Phase 3: Better ideas (Presentation at SalesForce 1-28-2015)
Phase 3: Better ideas (Presentation at SalesForce 1-28-2015)Bruce Eckel
 
Keynote, PNW Scala 2013
Keynote, PNW Scala 2013Keynote, PNW Scala 2013
Keynote, PNW Scala 2013Paul Phillips
 
Android opetuksessa 11.9.14
Android opetuksessa 11.9.14Android opetuksessa 11.9.14
Android opetuksessa 11.9.14Matleena Laakso
 
Знакомьтесь, Kotlin
Знакомьтесь, KotlinЗнакомьтесь, Kotlin
Знакомьтесь, KotlinTech Talks @NSU
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
Infinum Android Talks #20 - Benefits of using Kotlin
Infinum Android Talks #20 - Benefits of using KotlinInfinum Android Talks #20 - Benefits of using Kotlin
Infinum Android Talks #20 - Benefits of using KotlinInfinum
 
Kotlin в production. Как и зачем?
Kotlin в production. Как и зачем?Kotlin в production. Как и зачем?
Kotlin в production. Как и зачем?DotNetConf
 
Programming in scala - 1
Programming in scala - 1Programming in scala - 1
Programming in scala - 1Mukesh Kumar
 
Kotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developersKotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developersBartosz Kosarzycki
 
7.error management and exception handling
7.error management and exception handling7.error management and exception handling
7.error management and exception handlingDeepak Sharma
 
JavaOne 2016 - Kotlin: The Language of The Future For JVM?
JavaOne 2016 - Kotlin: The Language of The Future For JVM?JavaOne 2016 - Kotlin: The Language of The Future For JVM?
JavaOne 2016 - Kotlin: The Language of The Future For JVM?Leonardo Zanivan
 
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題teddysoft
 
Kotlin: Why Do You Care?
Kotlin: Why Do You Care?Kotlin: Why Do You Care?
Kotlin: Why Do You Care?intelliyole
 
Exception Handling Java
Exception Handling JavaException Handling Java
Exception Handling Javaankitgarg_er
 
TMPA-2015: Kotlin: From Null Dereference to Smart Casts
TMPA-2015: Kotlin: From Null Dereference to Smart CastsTMPA-2015: Kotlin: From Null Dereference to Smart Casts
TMPA-2015: Kotlin: From Null Dereference to Smart CastsIosif Itkin
 
Scala in practice
Scala in practiceScala in practice
Scala in practiceTomer Gabel
 

Viewers also liked (20)

Phase 3: Better ideas (Presentation at SalesForce 1-28-2015)
Phase 3: Better ideas (Presentation at SalesForce 1-28-2015)Phase 3: Better ideas (Presentation at SalesForce 1-28-2015)
Phase 3: Better ideas (Presentation at SalesForce 1-28-2015)
 
Keynote, PNW Scala 2013
Keynote, PNW Scala 2013Keynote, PNW Scala 2013
Keynote, PNW Scala 2013
 
Scala Day by Day
Scala Day by DayScala Day by Day
Scala Day by Day
 
Android opetuksessa 11.9.14
Android opetuksessa 11.9.14Android opetuksessa 11.9.14
Android opetuksessa 11.9.14
 
Знакомьтесь, Kotlin
Знакомьтесь, KotlinЗнакомьтесь, Kotlin
Знакомьтесь, Kotlin
 
Scala
ScalaScala
Scala
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
Kotlin Overview
Kotlin OverviewKotlin Overview
Kotlin Overview
 
Intro to kotlin
Intro to kotlinIntro to kotlin
Intro to kotlin
 
Infinum Android Talks #20 - Benefits of using Kotlin
Infinum Android Talks #20 - Benefits of using KotlinInfinum Android Talks #20 - Benefits of using Kotlin
Infinum Android Talks #20 - Benefits of using Kotlin
 
Kotlin в production. Как и зачем?
Kotlin в production. Как и зачем?Kotlin в production. Как и зачем?
Kotlin в production. Как и зачем?
 
Programming in scala - 1
Programming in scala - 1Programming in scala - 1
Programming in scala - 1
 
Kotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developersKotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developers
 
7.error management and exception handling
7.error management and exception handling7.error management and exception handling
7.error management and exception handling
 
JavaOne 2016 - Kotlin: The Language of The Future For JVM?
JavaOne 2016 - Kotlin: The Language of The Future For JVM?JavaOne 2016 - Kotlin: The Language of The Future For JVM?
JavaOne 2016 - Kotlin: The Language of The Future For JVM?
 
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
 
Kotlin: Why Do You Care?
Kotlin: Why Do You Care?Kotlin: Why Do You Care?
Kotlin: Why Do You Care?
 
Exception Handling Java
Exception Handling JavaException Handling Java
Exception Handling Java
 
TMPA-2015: Kotlin: From Null Dereference to Smart Casts
TMPA-2015: Kotlin: From Null Dereference to Smart CastsTMPA-2015: Kotlin: From Null Dereference to Smart Casts
TMPA-2015: Kotlin: From Null Dereference to Smart Casts
 
Scala in practice
Scala in practiceScala in practice
Scala in practice
 

Similar to Do Languages Still Matter

PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" EcosystemsPyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" EcosystemsUwe Korn
 
JSR 335 / java 8 - update reference
JSR 335 / java 8 - update referenceJSR 335 / java 8 - update reference
JSR 335 / java 8 - update referencesandeepji_choudhary
 
Are High Level Programming Languages for Multicore and Safety Critical Conver...
Are High Level Programming Languages for Multicore and Safety Critical Conver...Are High Level Programming Languages for Multicore and Safety Critical Conver...
Are High Level Programming Languages for Multicore and Safety Critical Conver...InfinIT - Innovationsnetværket for it
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Gozhubert
 
Programming Languages #devcon2013
Programming Languages #devcon2013Programming Languages #devcon2013
Programming Languages #devcon2013Iván Montes
 
Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction Ganesh Samarthyam
 
A First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageA First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageGanesh Samarthyam
 
How to create/improve OSS product and its community (revised)
How to create/improve OSS product and its community (revised)How to create/improve OSS product and its community (revised)
How to create/improve OSS product and its community (revised)SATOSHI TAGOMORI
 
An introduction to go programming language
An introduction to go programming languageAn introduction to go programming language
An introduction to go programming languageTechnology Parser
 
Experience Converting from Ruby to Scala
Experience Converting from Ruby to ScalaExperience Converting from Ruby to Scala
Experience Converting from Ruby to ScalaJohn Nestor
 
The Ring programming language version 1.7 book - Part 4 of 196
The Ring programming language version 1.7 book - Part 4 of 196The Ring programming language version 1.7 book - Part 4 of 196
The Ring programming language version 1.7 book - Part 4 of 196Mahmoud Samir Fayed
 
Languages used by web app development services remotestac x
Languages used by web app development services  remotestac xLanguages used by web app development services  remotestac x
Languages used by web app development services remotestac xRemote Stacx
 
We Need to Talk: How Communication Helps Code
We Need to Talk: How Communication Helps CodeWe Need to Talk: How Communication Helps Code
We Need to Talk: How Communication Helps CodeDocker, Inc.
 
difference between c c++ c#
difference between c c++ c#difference between c c++ c#
difference between c c++ c#Sireesh K
 
The Ideas of Clojure - Things I learn from Clojure
The Ideas of Clojure - Things I learn from ClojureThe Ideas of Clojure - Things I learn from Clojure
The Ideas of Clojure - Things I learn from ClojureHsuan Fu Lien
 
Software Engineering Thailand: Programming with Scala
Software Engineering Thailand: Programming with ScalaSoftware Engineering Thailand: Programming with Scala
Software Engineering Thailand: Programming with ScalaBrian Topping
 
Exploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLExploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLBarry Jones
 
Java Closures
Java ClosuresJava Closures
Java ClosuresBen Evans
 

Similar to Do Languages Still Matter (20)

PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" EcosystemsPyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
 
JSR 335 / java 8 - update reference
JSR 335 / java 8 - update referenceJSR 335 / java 8 - update reference
JSR 335 / java 8 - update reference
 
Are High Level Programming Languages for Multicore and Safety Critical Conver...
Are High Level Programming Languages for Multicore and Safety Critical Conver...Are High Level Programming Languages for Multicore and Safety Critical Conver...
Are High Level Programming Languages for Multicore and Safety Critical Conver...
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 
Programming Languages #devcon2013
Programming Languages #devcon2013Programming Languages #devcon2013
Programming Languages #devcon2013
 
Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction
 
A First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageA First Look at Google's Go Programming Language
A First Look at Google's Go Programming Language
 
How to create/improve OSS product and its community (revised)
How to create/improve OSS product and its community (revised)How to create/improve OSS product and its community (revised)
How to create/improve OSS product and its community (revised)
 
groovy & grails - lecture 1
groovy & grails - lecture 1groovy & grails - lecture 1
groovy & grails - lecture 1
 
An introduction to go programming language
An introduction to go programming languageAn introduction to go programming language
An introduction to go programming language
 
Experience Converting from Ruby to Scala
Experience Converting from Ruby to ScalaExperience Converting from Ruby to Scala
Experience Converting from Ruby to Scala
 
Play with Elm!
Play with Elm!Play with Elm!
Play with Elm!
 
The Ring programming language version 1.7 book - Part 4 of 196
The Ring programming language version 1.7 book - Part 4 of 196The Ring programming language version 1.7 book - Part 4 of 196
The Ring programming language version 1.7 book - Part 4 of 196
 
Languages used by web app development services remotestac x
Languages used by web app development services  remotestac xLanguages used by web app development services  remotestac x
Languages used by web app development services remotestac x
 
We Need to Talk: How Communication Helps Code
We Need to Talk: How Communication Helps CodeWe Need to Talk: How Communication Helps Code
We Need to Talk: How Communication Helps Code
 
difference between c c++ c#
difference between c c++ c#difference between c c++ c#
difference between c c++ c#
 
The Ideas of Clojure - Things I learn from Clojure
The Ideas of Clojure - Things I learn from ClojureThe Ideas of Clojure - Things I learn from Clojure
The Ideas of Clojure - Things I learn from Clojure
 
Software Engineering Thailand: Programming with Scala
Software Engineering Thailand: Programming with ScalaSoftware Engineering Thailand: Programming with Scala
Software Engineering Thailand: Programming with Scala
 
Exploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLExploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQL
 
Java Closures
Java ClosuresJava Closures
Java Closures
 

Recently uploaded

Q4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptxQ4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptxeditsforyah
 
Magic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMagic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMartaLoveguard
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一Fs
 
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predieusebiomeyer
 
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一Fs
 
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012rehmti665
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITMgdsc13
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationLinaWolf1
 
Intellectual property rightsand its types.pptx
Intellectual property rightsand its types.pptxIntellectual property rightsand its types.pptx
Intellectual property rightsand its types.pptxBipin Adhikari
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhimiss dipika
 
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一Fs
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Dana Luther
 
Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...Excelmac1
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Paul Calvano
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Sonam Pathan
 
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书rnrncn29
 
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一Fs
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书rnrncn29
 

Recently uploaded (20)

Q4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptxQ4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptx
 
Magic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMagic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptx
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
 
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predi
 
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
 
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITM
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 Documentation
 
Intellectual property rightsand its types.pptx
Intellectual property rightsand its types.pptxIntellectual property rightsand its types.pptx
Intellectual property rightsand its types.pptx
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhi
 
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
 
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
 
Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
 
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
 
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
 
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
 

Do Languages Still Matter

  • 1. Do Languages Matter? Bruce Eckel www.MindviewInc.com www.AtomicScala.com Oct 24, 2014, Geecon Prague Slides available on www.slideshare.net
  • 2.
  • 3. Eight Years on the C++ Standards Committee
  • 4.
  • 5.
  • 6. • We learned that open-source languages are always a better choice!
  • 7. www.AtomicScala.com • Free First 25% Kindle, ePub, PDF, HTML
  • 8. Magazines • These things before there was blogging • Published over 150 articles
  • 11. Is It Just Me?
  • 12. Or Are We All Stuck In a Loop?
  • 13. We keep trying to compel productivity. Maybe that's not the best way. (It doesn't work well for me).
  • 15. "Start With Why" - Simon Sinek Book, but TED talk might be enough.
  • 16. Break the Chains Around Our Brains
  • 17. Find the Unstuck Alternatives
  • 18. We Can Fix It. We Can Make It a Lot Better.
  • 19. ?
  • 20. In the Spirit of "Start With Why," I ask:
  • 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 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?
  • 40. My Dirty Little Secret
  • 41.
  • 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.