SlideShare une entreprise Scribd logo
1  sur  30
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

Contenu connexe

Tendances

Social dev camp_2011
Social dev camp_2011Social dev camp_2011
Social dev camp_2011Craig Ulliott
 
Alternative Approach to Plone Theming (PyConWeb 2019)
 Alternative Approach to Plone Theming (PyConWeb 2019) Alternative Approach to Plone Theming (PyConWeb 2019)
Alternative Approach to Plone Theming (PyConWeb 2019)Stefan Antonelli
 
Freakin Whitespace, Building a JavaScript Style Guide
Freakin Whitespace, Building a JavaScript Style GuideFreakin Whitespace, Building a JavaScript Style Guide
Freakin Whitespace, Building a JavaScript Style Guidelizlux
 
EclipseCon Europe 2011
EclipseCon Europe 2011EclipseCon Europe 2011
EclipseCon Europe 2011Sigasi
 
Contributing to Open Source Software
Contributing to Open Source SoftwareContributing to Open Source Software
Contributing to Open Source SoftwareMike Lively
 
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
 
The Goat and the Silo
The Goat and the SiloThe Goat and the Silo
The Goat and the SiloMichael Ducy
 
Dr. Russell Keith-Magee: Building a development community
Dr. Russell Keith-Magee: Building a development communityDr. Russell Keith-Magee: Building a development community
Dr. Russell Keith-Magee: Building a development communityit-people
 
Libguides, easybib, databases and more!.pptx
Libguides, easybib, databases and more!.pptx Libguides, easybib, databases and more!.pptx
Libguides, easybib, databases and more!.pptx wmrhsd
 

Tendances (13)

Social dev camp_2011
Social dev camp_2011Social dev camp_2011
Social dev camp_2011
 
Platform Selection
Platform SelectionPlatform Selection
Platform Selection
 
NOCALL 2009 Wikis
NOCALL 2009  WikisNOCALL 2009  Wikis
NOCALL 2009 Wikis
 
Alternative Approach to Plone Theming (PyConWeb 2019)
 Alternative Approach to Plone Theming (PyConWeb 2019) Alternative Approach to Plone Theming (PyConWeb 2019)
Alternative Approach to Plone Theming (PyConWeb 2019)
 
Common Core
Common CoreCommon Core
Common Core
 
Freakin Whitespace, Building a JavaScript Style Guide
Freakin Whitespace, Building a JavaScript Style GuideFreakin Whitespace, Building a JavaScript Style Guide
Freakin Whitespace, Building a JavaScript Style Guide
 
VanHack Fest
VanHack FestVanHack Fest
VanHack Fest
 
EclipseCon Europe 2011
EclipseCon Europe 2011EclipseCon Europe 2011
EclipseCon Europe 2011
 
Contributing to Open Source Software
Contributing to Open Source SoftwareContributing to Open Source Software
Contributing to Open Source Software
 
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 ...
 
The Goat and the Silo
The Goat and the SiloThe Goat and the Silo
The Goat and the Silo
 
Dr. Russell Keith-Magee: Building a development community
Dr. Russell Keith-Magee: Building a development communityDr. Russell Keith-Magee: Building a development community
Dr. Russell Keith-Magee: Building a development community
 
Libguides, easybib, databases and more!.pptx
Libguides, easybib, databases and more!.pptx Libguides, easybib, databases and more!.pptx
Libguides, easybib, databases and more!.pptx
 

Similaire à Rethinking Scala Presented in San Francisco May 7, 2014

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
 
LibGuides: Not just for subject web pages
LibGuides:  Not just for subject web pagesLibGuides:  Not just for subject web pages
LibGuides: Not just for subject web pagesMarla Roberson
 
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 ...
Open Writing ! - Collaborative Authoring on Apache’s First Open-Source Cloud ...Radhika Puthiyetath
 
TIFF Nexus: Compile With Style
TIFF Nexus: Compile With StyleTIFF Nexus: Compile With Style
TIFF Nexus: Compile With StylePearl Chen
 
Collective Cognition with Semantic Mediawiki: Lessons and Experiences
Collective Cognition with Semantic Mediawiki: Lessons and ExperiencesCollective Cognition with Semantic Mediawiki: Lessons and Experiences
Collective Cognition with Semantic Mediawiki: Lessons and ExperiencesJie Bao
 
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
 
Devops kc meetup_5_20_2013
Devops kc meetup_5_20_2013Devops kc meetup_5_20_2013
Devops kc meetup_5_20_2013Aaron Blythe
 
Ref Ren Pecha Kucha Rev11262008
Ref Ren Pecha Kucha Rev11262008Ref Ren Pecha Kucha Rev11262008
Ref Ren Pecha Kucha Rev11262008Lorena O'English
 
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...
Berlin Buzzwords 2019 - Taming the language border in data analytics and scie...Uwe Korn
 
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...
A Young Lady's Illustrated Primer to Architecture and Technical Decision-Maki...DevOpsDays Tel Aviv
 
Open Textbooks Authoring Models and Tools
Open Textbooks Authoring Models and ToolsOpen Textbooks Authoring Models and Tools
Open Textbooks Authoring Models and ToolsScott Leslie
 
IWMW 2002: Portals and CMS:" Why You Need Them Both
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 BothIWMW
 
How to Present a Webinar
How to Present a WebinarHow to Present a Webinar
How to Present a WebinarKeri Cascio
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Gozhubert
 
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...
Introduction to digital libraries - definitions, examples, concepts and trend...Olaf Janssen
 
Learning Emergent Knowledge from Blog Postings
Learning Emergent Knowledge from Blog PostingsLearning Emergent Knowledge from Blog Postings
Learning Emergent Knowledge from Blog PostingsSaltlux Inc.
 
Introducing Scala to your Ruby/Java Shop : My experiences at IGN
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 IGNManish Pandit
 
OPAC 2.0 and Beyond
OPAC 2.0 and BeyondOPAC 2.0 and Beyond
OPAC 2.0 and Beyonddaveyp
 
Neil squire jailbreak lms moodle accessibility
Neil squire   jailbreak lms moodle accessibilityNeil squire   jailbreak lms moodle accessibility
Neil squire jailbreak lms moodle accessibilityChad Leaman
 

Similaire à Rethinking Scala Presented in San Francisco May 7, 2014 (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
 
LibGuides: Not just for subject web pages
LibGuides:  Not just for subject web pagesLibGuides:  Not just for subject web pages
LibGuides: Not just for subject web pages
 
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 ...
Open Writing ! - Collaborative Authoring on Apache’s First Open-Source Cloud ...
 
TIFF Nexus: Compile With Style
TIFF Nexus: Compile With StyleTIFF Nexus: Compile With Style
TIFF Nexus: Compile With Style
 
Collective Cognition with Semantic Mediawiki: Lessons and Experiences
Collective Cognition with Semantic Mediawiki: Lessons and ExperiencesCollective Cognition with Semantic Mediawiki: Lessons and Experiences
Collective Cognition with Semantic Mediawiki: Lessons and Experiences
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem
 
Devops kc meetup_5_20_2013
Devops kc meetup_5_20_2013Devops kc meetup_5_20_2013
Devops kc meetup_5_20_2013
 
Ref Ren Pecha Kucha Rev11262008
Ref Ren Pecha Kucha Rev11262008Ref Ren Pecha Kucha Rev11262008
Ref Ren Pecha Kucha Rev11262008
 
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...
Berlin Buzzwords 2019 - Taming the language border in data analytics and scie...
 
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...
A Young Lady's Illustrated Primer to Architecture and Technical Decision-Maki...
 
Open Textbooks Authoring Models and Tools
Open Textbooks Authoring Models and ToolsOpen Textbooks Authoring Models and Tools
Open Textbooks Authoring Models and Tools
 
IWMW 2002: Portals and CMS:" Why You Need Them Both
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
 
How to Present a Webinar
How to Present a WebinarHow to Present a Webinar
How to Present a Webinar
 
Jones "Enabling Discovery in the Library"
Jones "Enabling Discovery in the Library"Jones "Enabling Discovery in the Library"
Jones "Enabling Discovery in the Library"
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 
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...
Introduction to digital libraries - definitions, examples, concepts and trend...
 
Learning Emergent Knowledge from Blog Postings
Learning Emergent Knowledge from Blog PostingsLearning Emergent Knowledge from Blog Postings
Learning Emergent Knowledge from Blog Postings
 
Introducing Scala to your Ruby/Java Shop : My experiences at IGN
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
 
OPAC 2.0 and Beyond
OPAC 2.0 and BeyondOPAC 2.0 and Beyond
OPAC 2.0 and Beyond
 
Neil squire jailbreak lms moodle accessibility
Neil squire   jailbreak lms moodle accessibilityNeil squire   jailbreak lms moodle accessibility
Neil squire jailbreak lms moodle accessibility
 

Dernier

Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 

Dernier (20)

Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 

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?