Rethinking Scala Presented in San Francisco May 7, 2014

Bruce Eckel
Bruce EckelOwner at MindView, Inc.
Rethinking Scala
Bruce Eckel
www.MindviewInc.com
www.AtomicScala.com
May 7, 2014, San Francisco
Slides available on
www.slideshare.net
Typesafe is sponsoring the videographer -- search the web for video
• First 25% at
AtomicScala.com:
Kindle, ePub, PDF,
HTML
• First 50% at
Typesafe.com (PDF)
Reinventing-Business.com
"Start With Why"
- Simon Sinek
(Book, but TED talk
might be enough. Also
see podcast)
"Break the Chains
Around Our Brains"
"Unstick"
"Find the Unstuck Alternatives"
"Burst Forward"
"Bigger Leverage"
?
This is the presentation I should
have given at Craft in Budapest
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
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?)
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
• Very significant improvements 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
• “You can do one thing in so many ways;
each team/company must invent its own
culture” -- Speaker at Craft
• 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
• With C++, knowing C was an advantage
• Do we even care about Java
programmers?
– Or just existing Java libraries?
• What is the "why" of Scala?
Libraries vs. Frameworks
• “I prefer Clojure libraries rather than
frameworks” -- young Scala programmer
at Craft
• Libraries are one dimension of complexity
• Frameworks are 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?
Other Language Options
• Erlang trivially interfaces to other
languages
– Example that 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
Scala Summit
• ScalaSummit.com
• "You don’t need to
understand monads"
• "Scala collides
functional and OO"
– Fascinating
experiment, exposes
some sharp corners
Hearsay
• Scala 3 might make significant non-
backwards-compatible changes to the
language
– Potentially fixing important issues
– Potentially alienating some users
People seem to become much more productive
in Scala vs. Java. But could a different
paradigm give us a lot more productivity?
Discussion
1 of 30

Recommended

Do Languages Matter? by
Do Languages Matter?Do Languages Matter?
Do Languages Matter?Bruce Eckel
2.2K views44 slides
Esn wiki agm13 by
Esn wiki agm13Esn wiki agm13
Esn wiki agm13Salih Odabasi
508 views9 slides
Community its easier than you think by
Community its easier than you thinkCommunity its easier than you think
Community its easier than you thinkMura CMS
649 views90 slides
Drupal University Tour by
Drupal University TourDrupal University Tour
Drupal University Toursolomon kitumba
423 views19 slides
Using Web 2.0 tools in the library by
Using Web 2.0 tools in the libraryUsing Web 2.0 tools in the library
Using Web 2.0 tools in the libraryPhil Bradley
1.4K views61 slides

More Related Content

What's hot

Social dev camp_2011 by
Social dev camp_2011Social dev camp_2011
Social dev camp_2011Craig Ulliott
608 views83 slides
Platform Selection by
Platform SelectionPlatform Selection
Platform SelectionWilco van Duinkerken
501 views42 slides
NOCALL 2009 Wikis by
NOCALL 2009  WikisNOCALL 2009  Wikis
NOCALL 2009 WikisJaye Lapachet
295 views20 slides
Alternative Approach to Plone Theming (PyConWeb 2019) by
 Alternative Approach to Plone Theming (PyConWeb 2019) Alternative Approach to Plone Theming (PyConWeb 2019)
Alternative Approach to Plone Theming (PyConWeb 2019)Stefan Antonelli
384 views49 slides
Common Core by
Common CoreCommon Core
Common Corewindsorpubliclibraryteens
198 views7 slides
Freakin Whitespace, Building a JavaScript Style Guide by
Freakin Whitespace, Building a JavaScript Style GuideFreakin Whitespace, Building a JavaScript Style Guide
Freakin Whitespace, Building a JavaScript Style Guidelizlux
1K views72 slides

What's hot(13)

Alternative Approach to Plone Theming (PyConWeb 2019) by Stefan Antonelli
 Alternative Approach to Plone Theming (PyConWeb 2019) Alternative Approach to Plone Theming (PyConWeb 2019)
Alternative Approach to Plone Theming (PyConWeb 2019)
Stefan Antonelli384 views
Freakin Whitespace, Building a JavaScript Style Guide by lizlux
Freakin Whitespace, Building a JavaScript Style GuideFreakin Whitespace, Building a JavaScript Style Guide
Freakin Whitespace, Building a JavaScript Style Guide
lizlux1K views
EclipseCon Europe 2011 by Sigasi
EclipseCon Europe 2011EclipseCon Europe 2011
EclipseCon Europe 2011
Sigasi481 views
Contributing to Open Source Software by Mike Lively
Contributing to Open Source SoftwareContributing to Open Source Software
Contributing to Open Source Software
Mike Lively641 views
Atlassian Summit 2012 - Immigration to Confluence: A Journey Through Foreign ... by Atlassian
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 ...
Atlassian694 views
The Goat and the Silo by Michael Ducy
The Goat and the SiloThe Goat and the Silo
The Goat and the Silo
Michael Ducy9.5K views
Dr. Russell Keith-Magee: Building a development community by it-people
Dr. Russell Keith-Magee: Building a development communityDr. Russell Keith-Magee: Building a development community
Dr. Russell Keith-Magee: Building a development community
it-people458 views
Libguides, easybib, databases and more!.pptx by wmrhsd
Libguides, easybib, databases and more!.pptx Libguides, easybib, databases and more!.pptx
Libguides, easybib, databases and more!.pptx
wmrhsd400 views

Similar to Rethinking Scala Presented in San Francisco May 7, 2014

PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems by
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" EcosystemsPyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" EcosystemsUwe Korn
422 views35 slides
LibGuides: Not just for subject web pages by
LibGuides:  Not just for subject web pagesLibGuides:  Not just for subject web pages
LibGuides: Not just for subject web pagesMarla Roberson
461 views11 slides
Open Writing ! - Collaborative Authoring on Apache’s First Open-Source Cloud ... by
Open Writing ! -	Collaborative Authoring on Apache’s First Open-Source Cloud ...Open Writing ! -	Collaborative Authoring on Apache’s First Open-Source Cloud ...
Open Writing ! - Collaborative Authoring on Apache’s First Open-Source Cloud ...Radhika Puthiyetath
866 views28 slides
TIFF Nexus: Compile With Style by
TIFF Nexus: Compile With StyleTIFF Nexus: Compile With Style
TIFF Nexus: Compile With StylePearl Chen
1.1K views28 slides
Collective Cognition with Semantic Mediawiki: Lessons and Experiences by
Collective Cognition with Semantic Mediawiki: Lessons and ExperiencesCollective Cognition with Semantic Mediawiki: Lessons and Experiences
Collective Cognition with Semantic Mediawiki: Lessons and ExperiencesJie Bao
874 views22 slides
C# .NET - Um overview da linguagem by
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem Claudson Oliveira
832 views42 slides

Similar to Rethinking Scala Presented in San Francisco May 7, 2014(20)

PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems by Uwe Korn
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" EcosystemsPyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
Uwe Korn422 views
LibGuides: Not just for subject web pages by Marla Roberson
LibGuides:  Not just for subject web pagesLibGuides:  Not just for subject web pages
LibGuides: Not just for subject web pages
Marla Roberson461 views
Open Writing ! - Collaborative Authoring on Apache’s First Open-Source Cloud ... by Radhika Puthiyetath
Open Writing ! -	Collaborative Authoring on Apache’s First Open-Source Cloud ...Open Writing ! -	Collaborative Authoring on Apache’s First Open-Source Cloud ...
Open Writing ! - Collaborative Authoring on Apache’s First Open-Source Cloud ...
TIFF Nexus: Compile With Style by Pearl Chen
TIFF Nexus: Compile With StyleTIFF Nexus: Compile With Style
TIFF Nexus: Compile With Style
Pearl Chen1.1K views
Collective Cognition with Semantic Mediawiki: Lessons and Experiences by Jie Bao
Collective Cognition with Semantic Mediawiki: Lessons and ExperiencesCollective Cognition with Semantic Mediawiki: Lessons and Experiences
Collective Cognition with Semantic Mediawiki: Lessons and Experiences
Jie Bao874 views
Devops kc meetup_5_20_2013 by Aaron Blythe
Devops kc meetup_5_20_2013Devops kc meetup_5_20_2013
Devops kc meetup_5_20_2013
Aaron Blythe447 views
Berlin Buzzwords 2019 - Taming the language border in data analytics and scie... by Uwe Korn
Berlin Buzzwords 2019 - Taming the language border in data analytics and scie...Berlin Buzzwords 2019 - Taming the language border in data analytics and scie...
Berlin Buzzwords 2019 - Taming the language border in data analytics and scie...
Uwe Korn757 views
A Young Lady's Illustrated Primer to Architecture and Technical Decision-Maki... by DevOpsDays Tel Aviv
A Young Lady's Illustrated Primer to Architecture and Technical Decision-Maki...A Young Lady's Illustrated Primer to Architecture and Technical Decision-Maki...
A Young Lady's Illustrated Primer to Architecture and Technical Decision-Maki...
Open Textbooks Authoring Models and Tools by Scott Leslie
Open Textbooks Authoring Models and ToolsOpen Textbooks Authoring Models and Tools
Open Textbooks Authoring Models and Tools
Scott Leslie4.7K views
IWMW 2002: Portals and CMS:" Why You Need Them Both by IWMW
IWMW 2002: Portals and CMS:" Why You Need Them BothIWMW 2002: Portals and CMS:" Why You Need Them Both
IWMW 2002: Portals and CMS:" Why You Need Them Both
IWMW 359 views
How to Present a Webinar by Keri Cascio
How to Present a WebinarHow to Present a Webinar
How to Present a Webinar
Keri Cascio606 views
Introduction to Go by zhubert
Introduction to GoIntroduction to Go
Introduction to Go
zhubert623 views
Introduction to digital libraries - definitions, examples, concepts and trend... by Olaf Janssen
Introduction to digital libraries - definitions, examples, concepts and trend...Introduction to digital libraries - definitions, examples, concepts and trend...
Introduction to digital libraries - definitions, examples, concepts and trend...
Olaf Janssen23.4K views
Learning Emergent Knowledge from Blog Postings by Saltlux Inc.
Learning Emergent Knowledge from Blog PostingsLearning Emergent Knowledge from Blog Postings
Learning Emergent Knowledge from Blog Postings
Saltlux Inc.450 views
Introducing Scala to your Ruby/Java Shop : My experiences at IGN by Manish Pandit
Introducing Scala to your Ruby/Java Shop : My experiences at IGNIntroducing Scala to your Ruby/Java Shop : My experiences at IGN
Introducing Scala to your Ruby/Java Shop : My experiences at IGN
Manish Pandit1.5K views
OPAC 2.0 and Beyond by daveyp
OPAC 2.0 and BeyondOPAC 2.0 and Beyond
OPAC 2.0 and Beyond
daveyp3.2K views
Neil squire jailbreak lms moodle accessibility by Chad Leaman
Neil squire   jailbreak lms moodle accessibilityNeil squire   jailbreak lms moodle accessibility
Neil squire jailbreak lms moodle accessibility
Chad Leaman702 views

Recently uploaded

Software evolution understanding: Automatic extraction of software identifier... by
Software evolution understanding: Automatic extraction of software identifier...Software evolution understanding: Automatic extraction of software identifier...
Software evolution understanding: Automatic extraction of software identifier...Ra'Fat Al-Msie'deen
9 views33 slides
FOSSLight Community Day 2023-11-30 by
FOSSLight Community Day 2023-11-30FOSSLight Community Day 2023-11-30
FOSSLight Community Day 2023-11-30Shane Coughlan
5 views18 slides
EV Charging App Case by
EV Charging App Case EV Charging App Case
EV Charging App Case iCoderz Solutions
5 views1 slide
Headless JS UG Presentation.pptx by
Headless JS UG Presentation.pptxHeadless JS UG Presentation.pptx
Headless JS UG Presentation.pptxJack Spektor
8 views24 slides
Airline Booking Software by
Airline Booking SoftwareAirline Booking Software
Airline Booking SoftwareSharmiMehta
6 views26 slides
Unlocking the Power of AI in Product Management - A Comprehensive Guide for P... by
Unlocking the Power of AI in Product Management - A Comprehensive Guide for P...Unlocking the Power of AI in Product Management - A Comprehensive Guide for P...
Unlocking the Power of AI in Product Management - A Comprehensive Guide for P...NimaTorabi2
12 views17 slides

Recently uploaded(20)

Software evolution understanding: Automatic extraction of software identifier... by Ra'Fat Al-Msie'deen
Software evolution understanding: Automatic extraction of software identifier...Software evolution understanding: Automatic extraction of software identifier...
Software evolution understanding: Automatic extraction of software identifier...
FOSSLight Community Day 2023-11-30 by Shane Coughlan
FOSSLight Community Day 2023-11-30FOSSLight Community Day 2023-11-30
FOSSLight Community Day 2023-11-30
Shane Coughlan5 views
Headless JS UG Presentation.pptx by Jack Spektor
Headless JS UG Presentation.pptxHeadless JS UG Presentation.pptx
Headless JS UG Presentation.pptx
Jack Spektor8 views
Airline Booking Software by SharmiMehta
Airline Booking SoftwareAirline Booking Software
Airline Booking Software
SharmiMehta6 views
Unlocking the Power of AI in Product Management - A Comprehensive Guide for P... by NimaTorabi2
Unlocking the Power of AI in Product Management - A Comprehensive Guide for P...Unlocking the Power of AI in Product Management - A Comprehensive Guide for P...
Unlocking the Power of AI in Product Management - A Comprehensive Guide for P...
NimaTorabi212 views
FIMA 2023 Neo4j & FS - Entity Resolution.pptx by Neo4j
FIMA 2023 Neo4j & FS - Entity Resolution.pptxFIMA 2023 Neo4j & FS - Entity Resolution.pptx
FIMA 2023 Neo4j & FS - Entity Resolution.pptx
Neo4j8 views
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action by Márton Kodok
Gen Apps on Google Cloud PaLM2 and Codey APIs in ActionGen Apps on Google Cloud PaLM2 and Codey APIs in Action
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action
Márton Kodok6 views
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx by animuscrm
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx
animuscrm15 views
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko... by Deltares
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...
Deltares14 views
tecnologia18.docx by nosi6702
tecnologia18.docxtecnologia18.docx
tecnologia18.docx
nosi67025 views
Quality Engineer: A Day in the Life by John Valentino
Quality Engineer: A Day in the LifeQuality Engineer: A Day in the Life
Quality Engineer: A Day in the Life
John Valentino6 views
DSD-INT 2023 The Danube Hazardous Substances Model - Kovacs by Deltares
DSD-INT 2023 The Danube Hazardous Substances Model - KovacsDSD-INT 2023 The Danube Hazardous Substances Model - Kovacs
DSD-INT 2023 The Danube Hazardous Substances Model - Kovacs
Deltares10 views
DSD-INT 2023 Process-based modelling of salt marsh development coupling Delft... by Deltares
DSD-INT 2023 Process-based modelling of salt marsh development coupling Delft...DSD-INT 2023 Process-based modelling of salt marsh development coupling Delft...
DSD-INT 2023 Process-based modelling of salt marsh development coupling Delft...
Deltares7 views
Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium... by Lisi Hocke
Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium...Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium...
Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium...
Lisi Hocke35 views
Dapr Unleashed: Accelerating Microservice Development by Miroslav Janeski
Dapr Unleashed: Accelerating Microservice DevelopmentDapr Unleashed: Accelerating Microservice Development
Dapr Unleashed: Accelerating Microservice Development
Miroslav Janeski10 views

Rethinking Scala Presented in San Francisco May 7, 2014

  • 1. Rethinking Scala Bruce Eckel www.MindviewInc.com www.AtomicScala.com May 7, 2014, San Francisco Slides available on www.slideshare.net Typesafe is sponsoring the videographer -- search the web for video
  • 2. • First 25% at AtomicScala.com: Kindle, ePub, PDF, HTML • First 50% at Typesafe.com (PDF)
  • 4. "Start With Why" - Simon Sinek (Book, but TED talk might be enough. Also see podcast)
  • 7. "Find the Unstuck Alternatives"
  • 10. ?
  • 11. This is the presentation I should have given at Craft in Budapest
  • 16. • 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
  • 17. 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
  • 18. 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?)
  • 19. 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
  • 20. People seem to become much more productive in Scala vs. Java. But could a different paradigm give us a lot more productivity?
  • 21. Scala is a big improvement over Java • A language needs to multiply productivity over the alternatives to justify changing, and Scala does • Very significant improvements 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?
  • 22. 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
  • 23. How Many Ways • “Scala is the most un-opinionated language I’ve seen” -- Dan North • “You can do one thing in so many ways; each team/company must invent its own culture” -- Speaker at Craft • Language is communication; subcultures add cognitive load • Consider Go: even code formatting is standardized
  • 24. The Complexity Jump • C++ was "C with classes" • Scala is not really "Java with" anything – It's almost completely different • With C++, knowing C was an advantage • Do we even care about Java programmers? – Or just existing Java libraries? • What is the "why" of Scala?
  • 25. Libraries vs. Frameworks • “I prefer Clojure libraries rather than frameworks” -- young Scala programmer at Craft • Libraries are one dimension of complexity • Frameworks are 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?
  • 26. Other Language Options • Erlang trivially interfaces to other languages – Example that 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
  • 27. Scala Summit • ScalaSummit.com • "You don’t need to understand monads" • "Scala collides functional and OO" – Fascinating experiment, exposes some sharp corners
  • 28. Hearsay • Scala 3 might make significant non- backwards-compatible changes to the language – Potentially fixing important issues – Potentially alienating some users
  • 29. People seem to become much more productive in Scala vs. Java. But could a different paradigm give us a lot more productivity?