SlideShare une entreprise Scribd logo
1  sur  23
Polyglot Architecture:
A Rational Approach to
Software Design
Richard Minerich
Senior Researcher at Bayard Rock
@Rickasaurus
InfoQ.com: News & Community Site
• 750,000 unique visitors/month
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• News 15-20 / week
• Articles 3-4 / week
• Presentations (videos) 12-15 / week
• Interviews 2-3 / week
• Books 1 / month
Watch the video with slide
synchronization on InfoQ.com!
http://www.infoq.com/presentations
/polyglot-architecture-design
Presented at QCon New York
www.qconnewyork.com
Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
Research and Development Perspective
▪ A focus on long term solutions to
complex problems
▪ A lot of room for experimentation,
but decisions must be justified
▪ Very small teams, and so few
resources for maintenance, and
little time for production issues
▪ Talented people who are generally
excited about learning new things
Why do we use the languages we use?
▪ I always use the same one or two languages.
▪ Pseudo-Technical management picks all of our technologies.
▪ I need to Maximize Synergy by Hadooping the Big Data Analytics.
▪ I am fanatically obsessed with a particular language.
▪ Weighted random sampling fed by the benchmark game.
▪ We came up with a set of criteria and judged several candidates
empirically in context.
Considerations (oh god)
Safety, FindingTalent, CPU Performance,Training, Platform
Limitations, Compiler Support, Community, External Libraries,Tooling,
Debugging, Primary Community Focus, Unique Features, Simplicity,
Development Environments, Familiarity, Cross Platform Support,
Asynchrony, Hype, Industry Standards, Algorithms,Tutorials, Data
Structures, Stability, Memory Usage, Garbage Collection, Syntactic
Flexibility, CompilationTargets, Language/Platform Interop,Taste,
Core Libs, Code Clarity, Licensing, Error Messages, BuildTools,
Testability, Requirements,Type Systems, Embeddability, Scalability,
FaultTolerance, Parallelization, Binary Package Size, Permissions,
Algebraic DataTypes, Obfuscation, Peer Pressure,Technical Debt,
Does it have what plants crave?
Considerations (fixed)
Safety – “In the limit”, cost of unexpected changes, testing
burden, sanity of core libs, dependency handling
Community – Support options, library quantity and quality,
training, hiring, enthusiasm, culture of craftsmanship
Performance – Relative dimensions include cpu, memory and network
Tooling – Debugging, static analysis, linting, test frameworks
And they’re all tradeoffs based on Context.
i.e. Requirements, Platform(s),Team Skills, Available Funds
Case Study: 0install (by Thomas Leonard)
Choosing a Replacement for Python
Language OCaml PythonHaskell Rust ATS C# Go
Speed 4 2 4 3 5 1 3
Dependencies 4 5 3 2 5 1 3
Bin. compatibility 4 5 2 2 4 5 3
Bad stdout 1 1 1 5 1 1 1
Missing env 5 5 5 5 5 3 1
Memory safety 5 5 5 4 3 5 5
Diagnostics 1 5 3 3 2 1 1
Ease of coding 4 5 4 3 1 4 3
Shared libraries 1 5 2 2 5 5 1
Static types 4 1 4 5 5 3 2
Privilege bounds 5 1 5 1 2 5 1
Mutability 4 3 2 5 4 4 4
C interoperability 3 3 4 4 5 4 4
Asynchronous 5 4 5 5 1 5 5
Total 50 50 49 49 48 47 37
http://is.gd/0install_language_shootout
What is Safety? (My favorite topic)
Imagine your goal is perfect bug-free software (in the limit)
▪ Is the compiler your friend?
▪ Is it easy to write correct code?
▪ Will it “fail fast” when
in an unexpected state?
▪ When things fail will it
get up and keep going?
▪ Can you trust external libraries?
Context is everything
▪ Projected lifetime, time to market, burn rate
▪ Explicit requirements, technology interop, customer systems
▪ Current talent, willingness to learn, and training expenditure
▪ Previous purchases and existing platform limitations
▪ Domain problems that are helped greatly certain unique features
It Usually Comes Down To Unique Features
▪ JavaScript – Do we really have any other choice?
▪ C# – Great GUI builders, code generation tooling
▪ F# –Type providers, data modeling and transformation
▪ Matlab – Fast linear algebra, tons of high quality algorithms
▪ C++ (/CLI) – Library selection, managed-unmanaged interop
Currently Under Consideration
▪ R – table structured data analysis and visualization, type provider
▪ Haskell – Unique libraries, fantastically safe
▪ Scala – Beautiful and concise leverage of Spark/Hadoop, quite safe
Isn’t writing your own language
generally a bad idea?
What I found for scripting options on .NET:
IronPython, IronRuby, IronJS, DynamicLinq…
DynamicLinq was almost exactly what I wanted. Almost…
…If it weren’t for the darned manual conversions…
… So after much consideration, I wrote Barb.
Barb?! (github.com/Rickasaurus/Barb)
It’s a simple .net scripting language
Name.Contains "John“ and (Age > 20 orWeight > 200)
Barb in Action: Safe Alert Manager
Slots to fill (Safe Alert Manager)
▪ User Interface
▪ User Behavior Model
▪ Data Access
▪ DataTransform
▪ Algorithms / Data Structures
▪ Ad-Hoc Behaviors
▪ Glue
UI (C#) &
Analysis (C#)
Glue (F# and Barb)
Data &
Config
In
Data
Out
Algorithms (F#)
Key Insight: Reverential Transparency
Matlab C++ Haskell R Python
F# Type Providers
Typed Access to Data and Languages
MAP: Secure Distributed ML
UI (JS),Analysis (JS & SQL)
& Computation (F#)
Glue (F#)
Data
Computation in
F# or viaType
Provider in:
Matlab, R,
Python
Goal:
Experts and users coexist
in the same system with
different tools.
Typed Dataset
Representation
MAP Language Choices
▪ User Interface / Model – Javascript/Type Script
▪ Analysis Data Access – BRSQL in the UI
▪ Analysis DataTransform – Javascript in the UI
▪ Glue – Almost entirely F#
▪ Algorithms / Data Structures – F#,Type Provider, C++/CLI
On the Horizon: Asm.js (with emscripten)
is.gd/cool_asmjs_demos
On the Horizon: Rust
www.rust-lang.org
On the Horizon: Julia
julialang.org
Thanks for Coming!
@Rickasaurus
RichardMinerich.com
Come visit the NYC
Haskell and F# User
Groups!

Contenu connexe

Plus de C4Media

High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like OwnersC4Media
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaC4Media
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideC4Media
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDC4Media
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine LearningC4Media
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at SpeedC4Media
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsC4Media
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsC4Media
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerC4Media
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleC4Media
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeC4Media
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereC4Media
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing ForC4Media
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data EngineeringC4Media
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreC4Media
 
Navigating Complexity: High-performance Delivery and Discovery Teams
Navigating Complexity: High-performance Delivery and Discovery TeamsNavigating Complexity: High-performance Delivery and Discovery Teams
Navigating Complexity: High-performance Delivery and Discovery TeamsC4Media
 
High Performance Cooperative Distributed Systems in Adtech
High Performance Cooperative Distributed Systems in AdtechHigh Performance Cooperative Distributed Systems in Adtech
High Performance Cooperative Distributed Systems in AdtechC4Media
 
Rust's Journey to Async/await
Rust's Journey to Async/awaitRust's Journey to Async/await
Rust's Journey to Async/awaitC4Media
 
Opportunities and Pitfalls of Event-Driven Utopia
Opportunities and Pitfalls of Event-Driven UtopiaOpportunities and Pitfalls of Event-Driven Utopia
Opportunities and Pitfalls of Event-Driven UtopiaC4Media
 
Datadog: a Real-Time Metrics Database for One Quadrillion Points/Day
Datadog: a Real-Time Metrics Database for One Quadrillion Points/DayDatadog: a Real-Time Metrics Database for One Quadrillion Points/Day
Datadog: a Real-Time Metrics Database for One Quadrillion Points/DayC4Media
 

Plus de C4Media (20)

High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like Owners
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate Guide
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CD
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine Learning
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at Speed
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep Systems
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly Compiler
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's Edge
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home Everywhere
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing For
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data Engineering
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
 
Navigating Complexity: High-performance Delivery and Discovery Teams
Navigating Complexity: High-performance Delivery and Discovery TeamsNavigating Complexity: High-performance Delivery and Discovery Teams
Navigating Complexity: High-performance Delivery and Discovery Teams
 
High Performance Cooperative Distributed Systems in Adtech
High Performance Cooperative Distributed Systems in AdtechHigh Performance Cooperative Distributed Systems in Adtech
High Performance Cooperative Distributed Systems in Adtech
 
Rust's Journey to Async/await
Rust's Journey to Async/awaitRust's Journey to Async/await
Rust's Journey to Async/await
 
Opportunities and Pitfalls of Event-Driven Utopia
Opportunities and Pitfalls of Event-Driven UtopiaOpportunities and Pitfalls of Event-Driven Utopia
Opportunities and Pitfalls of Event-Driven Utopia
 
Datadog: a Real-Time Metrics Database for One Quadrillion Points/Day
Datadog: a Real-Time Metrics Database for One Quadrillion Points/DayDatadog: a Real-Time Metrics Database for One Quadrillion Points/Day
Datadog: a Real-Time Metrics Database for One Quadrillion Points/Day
 

Dernier

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024The Digital Insurer
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Principled Technologies
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 

Dernier (20)

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

Polyglot Architecture: A Rational Approach to Software Design

  • 1. Polyglot Architecture: A Rational Approach to Software Design Richard Minerich Senior Researcher at Bayard Rock @Rickasaurus
  • 2. InfoQ.com: News & Community Site • 750,000 unique visitors/month • Published in 4 languages (English, Chinese, Japanese and Brazilian Portuguese) • Post content from our QCon conferences • News 15-20 / week • Articles 3-4 / week • Presentations (videos) 12-15 / week • Interviews 2-3 / week • Books 1 / month Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations /polyglot-architecture-design
  • 3. Presented at QCon New York www.qconnewyork.com Purpose of QCon - to empower software development by facilitating the spread of knowledge and innovation Strategy - practitioner-driven conference designed for YOU: influencers of change and innovation in your teams - speakers and topics driving the evolution and innovation - connecting and catalyzing the influencers and innovators Highlights - attended by more than 12,000 delegates since 2007 - held in 9 cities worldwide
  • 4. Research and Development Perspective ▪ A focus on long term solutions to complex problems ▪ A lot of room for experimentation, but decisions must be justified ▪ Very small teams, and so few resources for maintenance, and little time for production issues ▪ Talented people who are generally excited about learning new things
  • 5. Why do we use the languages we use? ▪ I always use the same one or two languages. ▪ Pseudo-Technical management picks all of our technologies. ▪ I need to Maximize Synergy by Hadooping the Big Data Analytics. ▪ I am fanatically obsessed with a particular language. ▪ Weighted random sampling fed by the benchmark game. ▪ We came up with a set of criteria and judged several candidates empirically in context.
  • 6. Considerations (oh god) Safety, FindingTalent, CPU Performance,Training, Platform Limitations, Compiler Support, Community, External Libraries,Tooling, Debugging, Primary Community Focus, Unique Features, Simplicity, Development Environments, Familiarity, Cross Platform Support, Asynchrony, Hype, Industry Standards, Algorithms,Tutorials, Data Structures, Stability, Memory Usage, Garbage Collection, Syntactic Flexibility, CompilationTargets, Language/Platform Interop,Taste, Core Libs, Code Clarity, Licensing, Error Messages, BuildTools, Testability, Requirements,Type Systems, Embeddability, Scalability, FaultTolerance, Parallelization, Binary Package Size, Permissions, Algebraic DataTypes, Obfuscation, Peer Pressure,Technical Debt, Does it have what plants crave?
  • 7. Considerations (fixed) Safety – “In the limit”, cost of unexpected changes, testing burden, sanity of core libs, dependency handling Community – Support options, library quantity and quality, training, hiring, enthusiasm, culture of craftsmanship Performance – Relative dimensions include cpu, memory and network Tooling – Debugging, static analysis, linting, test frameworks And they’re all tradeoffs based on Context. i.e. Requirements, Platform(s),Team Skills, Available Funds
  • 8. Case Study: 0install (by Thomas Leonard) Choosing a Replacement for Python Language OCaml PythonHaskell Rust ATS C# Go Speed 4 2 4 3 5 1 3 Dependencies 4 5 3 2 5 1 3 Bin. compatibility 4 5 2 2 4 5 3 Bad stdout 1 1 1 5 1 1 1 Missing env 5 5 5 5 5 3 1 Memory safety 5 5 5 4 3 5 5 Diagnostics 1 5 3 3 2 1 1 Ease of coding 4 5 4 3 1 4 3 Shared libraries 1 5 2 2 5 5 1 Static types 4 1 4 5 5 3 2 Privilege bounds 5 1 5 1 2 5 1 Mutability 4 3 2 5 4 4 4 C interoperability 3 3 4 4 5 4 4 Asynchronous 5 4 5 5 1 5 5 Total 50 50 49 49 48 47 37 http://is.gd/0install_language_shootout
  • 9. What is Safety? (My favorite topic) Imagine your goal is perfect bug-free software (in the limit) ▪ Is the compiler your friend? ▪ Is it easy to write correct code? ▪ Will it “fail fast” when in an unexpected state? ▪ When things fail will it get up and keep going? ▪ Can you trust external libraries?
  • 10. Context is everything ▪ Projected lifetime, time to market, burn rate ▪ Explicit requirements, technology interop, customer systems ▪ Current talent, willingness to learn, and training expenditure ▪ Previous purchases and existing platform limitations ▪ Domain problems that are helped greatly certain unique features
  • 11. It Usually Comes Down To Unique Features ▪ JavaScript – Do we really have any other choice? ▪ C# – Great GUI builders, code generation tooling ▪ F# –Type providers, data modeling and transformation ▪ Matlab – Fast linear algebra, tons of high quality algorithms ▪ C++ (/CLI) – Library selection, managed-unmanaged interop Currently Under Consideration ▪ R – table structured data analysis and visualization, type provider ▪ Haskell – Unique libraries, fantastically safe ▪ Scala – Beautiful and concise leverage of Spark/Hadoop, quite safe
  • 12. Isn’t writing your own language generally a bad idea? What I found for scripting options on .NET: IronPython, IronRuby, IronJS, DynamicLinq… DynamicLinq was almost exactly what I wanted. Almost… …If it weren’t for the darned manual conversions… … So after much consideration, I wrote Barb.
  • 13. Barb?! (github.com/Rickasaurus/Barb) It’s a simple .net scripting language Name.Contains "John“ and (Age > 20 orWeight > 200)
  • 14. Barb in Action: Safe Alert Manager
  • 15. Slots to fill (Safe Alert Manager) ▪ User Interface ▪ User Behavior Model ▪ Data Access ▪ DataTransform ▪ Algorithms / Data Structures ▪ Ad-Hoc Behaviors ▪ Glue UI (C#) & Analysis (C#) Glue (F# and Barb) Data & Config In Data Out Algorithms (F#)
  • 16. Key Insight: Reverential Transparency Matlab C++ Haskell R Python
  • 17. F# Type Providers Typed Access to Data and Languages
  • 18. MAP: Secure Distributed ML UI (JS),Analysis (JS & SQL) & Computation (F#) Glue (F#) Data Computation in F# or viaType Provider in: Matlab, R, Python Goal: Experts and users coexist in the same system with different tools. Typed Dataset Representation
  • 19. MAP Language Choices ▪ User Interface / Model – Javascript/Type Script ▪ Analysis Data Access – BRSQL in the UI ▪ Analysis DataTransform – Javascript in the UI ▪ Glue – Almost entirely F# ▪ Algorithms / Data Structures – F#,Type Provider, C++/CLI
  • 20. On the Horizon: Asm.js (with emscripten) is.gd/cool_asmjs_demos
  • 21. On the Horizon: Rust www.rust-lang.org
  • 22. On the Horizon: Julia julialang.org
  • 23. Thanks for Coming! @Rickasaurus RichardMinerich.com Come visit the NYC Haskell and F# User Groups!