SlideShare uma empresa Scribd logo
1 de 37
The Game Of Life



Java‘s Siblings and Heirs
     are populating
      the Ecosystem
Inspiration
      for this talk

  An APL
  Version
Game Of Life
A Natural
   View

 • ecosystem
 • monoculture
 • diversity
 • evolution
 • forces
Ecosystem?
Our working environment can be
     seen as an ecosystem

It should be habitable for humans
    and efficient for a machine

   It is evolving and changing
Ecosystem
• inhabitants populate
   • an environment
   • are exposed to outside
   • forces and influences
• many supporting relationships
• robust or sensitive variations
• natural and artificial
OUR
Ecosystem
 consists
    of
• virtual machine
• tools
• languages
• libraries
The JVM
• abstracts hardware,
  operating systems
• portable
• fast and getting faster
• runs bytecode
• not just one language
• but many of them
  ... and it does
Monoculture
• artificial approach
• a single species
• highly optimized conditions
• economy of scale
• sensitive to changes
• one disruption can destroy
  whole population
• no evolution
We had a
Monoculture
• one language to rule them all
• little knowledge and
  interest in other languages
• in the mainstream
• economy of scale
• standardization
• single point of failure
Natural Diversity
• healthy mixture of species
• resistant to disruptions
• supporting ecosystem
• different forces are countered
• many possibilities of evolution
• distribute responsibility
• less artificial conditions needed
A Breeding Ground
For Diversity
• but it was unnoticed
• many languages (400+)
  running on the JVM
• dynamic and static ones
• address different problems
• many of more expressive
  than JAVA
• what did it take to make us aware of them?
Origin of Languages &
    Evolution thereof
• Darwins 200th birthday
• external forces shape
  development of a species
• many different variations are
  exposed
• only the fittest survive
• form the base for next
  generations
What Happens
when the Rules Change?




• concurrency challenge      • ease of development /
                               maintenance
• cost of human creativity
                             • competing approaches
• complexity of systems
                          Evolutionary Forces
Now There are more
Mainstream JVM Languages
Common JVM Languages
 • Scala      • Ioke
 • JRuby      • Fan
 • Groovy     • Jaskell
 • Clojure    • Erjang
 • Rhino
 • Jython
 • JavaFX
 • Fortress
Adressing Evolutionary
  Forces - Concurrency
• functional paradigms
• immutable datastructures
• software transactional memory
• implicit parallelism
• actor model
   •
Adressing Evolutionary
 Forces - Expressiveness
• dynamic typing
• list comprehensions, high order functions
• metaprogramming, open types
• syntactic sugar, implicit code generation
• dynamic execution (scripting)
• closures
• internal DSLs
Adressing Evolutionary
  Forces - Competition
• other languages with an easier syntax and lifecycle
• powerful frameworks (RoR)
• .net Runtime evolves quickly (LinQ & Co)
• simpler paradigms - functional languages
• rich clients - Flash
• highly scalable languages - Erlang
Ola Bini
• language layers in applications
   • stable language at core
   • dynamic layer
   • domain layer
• „end of big languages“
• JVM well suited as polyglot
  platform
• created Ioke ‚most expressive‘
  language experiment
Neal Ford
• polyglot programming
• already a reality
• count the languages in your
  application
• explicit focus on „the right
  language for the job“
the Game of Life
John H. Conway
• well known mathematician
• invented it 1970 - 40 years
  ago
• emergence - complexity
  arises from simple rules
• slightly modeled on real life
• birth, death, survival
• let him tell the story himself
Game of Life
• a simple game with 3 rules
• cell with 2,3 neighbours lives
• space surrounded by 3 cells
  gets alive
• emulates atoms, laws, forces
  and time like our universe
• simulates an ecosystem
• explore language
  expressiveness
Explore
   JVM
Languages
      with
   game of life
 implementations

    instead of
99 bottles of beer
Different Approaches
limited or unlimited board
array / matrix based
sparse matrix
(coordinates)
mutating or generations
optimizations
(HashLife)
different variations on
rules, visualization etc.
Java (1)
Java (2)
Java &
   Patterns

1300 Lines of Java Source
Many Patterns crammed in
It is for making a Point
But does it make its Point?
Groovy
Scala
(Heiko Seeberger)
Clojure
Ioke   (Sam Aaron)
Dyalog APL
Scaling Up
• partitioning / sharding the data
• actors as cells, need supervisors and segmentation
  • asynchronity / generations problem
• map reduce approach, a cell bleeds its life into its
  neighbours, sum the resulting fragments
• use image operations / GPU
• hashlife exploits regularities, hash in a quadtree


      Think Different
Java Image Op
It does not end here
• the language is just the first step for better abstractions
• create your own languages & vocabulary
    • DDD, ubiquitous language, domain model
    • DSLs
    • libraries, APIs
    • design principles - KISS, DRY & more
    • design patterns
Thank You!



           Questions &
           Comments?


Image Attributions: Wikipedia, SXC.HU

Mais conteúdo relacionado

Destaque

Object Oriented Programming Concepts
Object Oriented Programming ConceptsObject Oriented Programming Concepts
Object Oriented Programming Concepts
thinkphp
 

Destaque (11)

Games and Java ME - Have fun and earn some money
Games and Java ME - Have fun and earn some moneyGames and Java ME - Have fun and earn some money
Games and Java ME - Have fun and earn some money
 
Practical OOP In Java
Practical OOP In JavaPractical OOP In Java
Practical OOP In Java
 
java swing
java swingjava swing
java swing
 
Android Development: The Basics
Android Development: The BasicsAndroid Development: The Basics
Android Development: The Basics
 
Android ppt
Android pptAndroid ppt
Android ppt
 
Android for Java Developers
Android for Java DevelopersAndroid for Java Developers
Android for Java Developers
 
Object Oriented Programming Concepts
Object Oriented Programming ConceptsObject Oriented Programming Concepts
Object Oriented Programming Concepts
 
Introduction to java
Introduction to javaIntroduction to java
Introduction to java
 
The Drift Brand Book
The Drift Brand BookThe Drift Brand Book
The Drift Brand Book
 
Java tutorial PPT
Java tutorial PPTJava tutorial PPT
Java tutorial PPT
 
TEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of WorkTEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of Work
 

Semelhante a The Game Of Life - Java‘s Siblings and Heirs are populating the Ecosystem

Charles nutter star techconf 2011 - jvm languages
Charles nutter   star techconf 2011 - jvm languagesCharles nutter   star techconf 2011 - jvm languages
Charles nutter star techconf 2011 - jvm languages
StarTech Conference
 
The Economies of Scaling Software
The Economies of Scaling SoftwareThe Economies of Scaling Software
The Economies of Scaling Software
Abdelmonaim Remani
 
The economies of scaling software - Abdel Remani
The economies of scaling software - Abdel RemaniThe economies of scaling software - Abdel Remani
The economies of scaling software - Abdel Remani
jaxconf
 

Semelhante a The Game Of Life - Java‘s Siblings and Heirs are populating the Ecosystem (20)

A Quick Tour of JVM Languages
A Quick Tour of JVM LanguagesA Quick Tour of JVM Languages
A Quick Tour of JVM Languages
 
A sip of Elixir
A sip of ElixirA sip of Elixir
A sip of Elixir
 
TSSJS 2011 - JRuby
TSSJS 2011 - JRubyTSSJS 2011 - JRuby
TSSJS 2011 - JRuby
 
There Is No JavaScript
There Is No JavaScriptThere Is No JavaScript
There Is No JavaScript
 
Noam Kfir - There is no Java Script - code.talks 2015
Noam Kfir - There is no Java Script - code.talks 2015Noam Kfir - There is no Java Script - code.talks 2015
Noam Kfir - There is no Java Script - code.talks 2015
 
Charles nutter star techconf 2011 - jvm languages
Charles nutter   star techconf 2011 - jvm languagesCharles nutter   star techconf 2011 - jvm languages
Charles nutter star techconf 2011 - jvm languages
 
Isomorphic Kotlin
Isomorphic KotlinIsomorphic Kotlin
Isomorphic Kotlin
 
sete linguagens em sete semanas
sete linguagens em sete semanassete linguagens em sete semanas
sete linguagens em sete semanas
 
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...
 
Persistence
PersistencePersistence
Persistence
 
groovy & grails - lecture 1
groovy & grails - lecture 1groovy & grails - lecture 1
groovy & grails - lecture 1
 
Porting E-poetry: The Case of First Screening
Porting E-poetry: The Case of First ScreeningPorting E-poetry: The Case of First Screening
Porting E-poetry: The Case of First Screening
 
Delhi NCR JUG meetup - NLP - APIs - By Vikas Malik
Delhi NCR JUG meetup - NLP - APIs - By Vikas MalikDelhi NCR JUG meetup - NLP - APIs - By Vikas Malik
Delhi NCR JUG meetup - NLP - APIs - By Vikas Malik
 
Open Source SQL Databases
Open Source SQL DatabasesOpen Source SQL Databases
Open Source SQL Databases
 
Java, now and forever
Java, now and foreverJava, now and forever
Java, now and forever
 
Into the Land of lambda, One Programmer's Journey Into Functional Programming
Into the Land of lambda, One Programmer's Journey Into Functional ProgrammingInto the Land of lambda, One Programmer's Journey Into Functional Programming
Into the Land of lambda, One Programmer's Journey Into Functional Programming
 
OOP - Lecture02 - Introduction to Java.pptx
OOP - Lecture02 - Introduction to Java.pptxOOP - Lecture02 - Introduction to Java.pptx
OOP - Lecture02 - Introduction to Java.pptx
 
The Economies of Scaling Software
The Economies of Scaling SoftwareThe Economies of Scaling Software
The Economies of Scaling Software
 
Growing an ecosystem on the JVM
Growing an ecosystem on the JVMGrowing an ecosystem on the JVM
Growing an ecosystem on the JVM
 
The economies of scaling software - Abdel Remani
The economies of scaling software - Abdel RemaniThe economies of scaling software - Abdel Remani
The economies of scaling software - Abdel Remani
 

Mais de jexp

Graphs & Neo4j - Past Present Future
Graphs & Neo4j - Past Present FutureGraphs & Neo4j - Past Present Future
Graphs & Neo4j - Past Present Future
jexp
 
Intro to Graphs and Neo4j
Intro to Graphs and Neo4jIntro to Graphs and Neo4j
Intro to Graphs and Neo4j
jexp
 

Mais de jexp (20)

Looming Marvelous - Virtual Threads in Java Javaland.pdf
Looming Marvelous - Virtual Threads in Java Javaland.pdfLooming Marvelous - Virtual Threads in Java Javaland.pdf
Looming Marvelous - Virtual Threads in Java Javaland.pdf
 
Easing the daily grind with the awesome JDK command line tools
Easing the daily grind with the awesome JDK command line toolsEasing the daily grind with the awesome JDK command line tools
Easing the daily grind with the awesome JDK command line tools
 
Looming Marvelous - Virtual Threads in Java
Looming Marvelous - Virtual Threads in JavaLooming Marvelous - Virtual Threads in Java
Looming Marvelous - Virtual Threads in Java
 
GraphConnect 2022 - Top 10 Cypher Tuning Tips & Tricks.pptx
GraphConnect 2022 - Top 10 Cypher Tuning Tips & Tricks.pptxGraphConnect 2022 - Top 10 Cypher Tuning Tips & Tricks.pptx
GraphConnect 2022 - Top 10 Cypher Tuning Tips & Tricks.pptx
 
Neo4j Connector Apache Spark FiNCENFiles
Neo4j Connector Apache Spark FiNCENFilesNeo4j Connector Apache Spark FiNCENFiles
Neo4j Connector Apache Spark FiNCENFiles
 
How Graphs Help Investigative Journalists to Connect the Dots
How Graphs Help Investigative Journalists to Connect the DotsHow Graphs Help Investigative Journalists to Connect the Dots
How Graphs Help Investigative Journalists to Connect the Dots
 
The Home Office. Does it really work?
The Home Office. Does it really work?The Home Office. Does it really work?
The Home Office. Does it really work?
 
Polyglot Applications with GraalVM
Polyglot Applications with GraalVMPolyglot Applications with GraalVM
Polyglot Applications with GraalVM
 
Neo4j Graph Streaming Services with Apache Kafka
Neo4j Graph Streaming Services with Apache KafkaNeo4j Graph Streaming Services with Apache Kafka
Neo4j Graph Streaming Services with Apache Kafka
 
How Graph Databases efficiently store, manage and query connected data at s...
How Graph Databases efficiently  store, manage and query  connected data at s...How Graph Databases efficiently  store, manage and query  connected data at s...
How Graph Databases efficiently store, manage and query connected data at s...
 
APOC Pearls - Whirlwind Tour Through the Neo4j APOC Procedures Library
APOC Pearls - Whirlwind Tour Through the Neo4j APOC Procedures LibraryAPOC Pearls - Whirlwind Tour Through the Neo4j APOC Procedures Library
APOC Pearls - Whirlwind Tour Through the Neo4j APOC Procedures Library
 
Refactoring, 2nd Edition
Refactoring, 2nd EditionRefactoring, 2nd Edition
Refactoring, 2nd Edition
 
New Features in Neo4j 3.4 / 3.3 - Graph Algorithms, Spatial, Date-Time & Visu...
New Features in Neo4j 3.4 / 3.3 - Graph Algorithms, Spatial, Date-Time & Visu...New Features in Neo4j 3.4 / 3.3 - Graph Algorithms, Spatial, Date-Time & Visu...
New Features in Neo4j 3.4 / 3.3 - Graph Algorithms, Spatial, Date-Time & Visu...
 
GraphQL - The new "Lingua Franca" for API-Development
GraphQL - The new "Lingua Franca" for API-DevelopmentGraphQL - The new "Lingua Franca" for API-Development
GraphQL - The new "Lingua Franca" for API-Development
 
A whirlwind tour of graph databases
A whirlwind tour of graph databasesA whirlwind tour of graph databases
A whirlwind tour of graph databases
 
Practical Graph Algorithms with Neo4j
Practical Graph Algorithms with Neo4jPractical Graph Algorithms with Neo4j
Practical Graph Algorithms with Neo4j
 
A Game of Data and GraphQL
A Game of Data and GraphQLA Game of Data and GraphQL
A Game of Data and GraphQL
 
Querying Graphs with GraphQL
Querying Graphs with GraphQLQuerying Graphs with GraphQL
Querying Graphs with GraphQL
 
Graphs & Neo4j - Past Present Future
Graphs & Neo4j - Past Present FutureGraphs & Neo4j - Past Present Future
Graphs & Neo4j - Past Present Future
 
Intro to Graphs and Neo4j
Intro to Graphs and Neo4jIntro to Graphs and Neo4j
Intro to Graphs and Neo4j
 

Último

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
Safe Software
 
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
panagenda
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
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
Safe Software
 

Último (20)

Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
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
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
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
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
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
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
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
 
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
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 

The Game Of Life - Java‘s Siblings and Heirs are populating the Ecosystem

  • 1. The Game Of Life Java‘s Siblings and Heirs are populating the Ecosystem
  • 2. Inspiration for this talk An APL Version Game Of Life
  • 3. A Natural View • ecosystem • monoculture • diversity • evolution • forces
  • 4. Ecosystem? Our working environment can be seen as an ecosystem It should be habitable for humans and efficient for a machine It is evolving and changing
  • 5. Ecosystem • inhabitants populate • an environment • are exposed to outside • forces and influences • many supporting relationships • robust or sensitive variations • natural and artificial
  • 6. OUR Ecosystem consists of • virtual machine • tools • languages • libraries
  • 7. The JVM • abstracts hardware, operating systems • portable • fast and getting faster • runs bytecode • not just one language • but many of them ... and it does
  • 8. Monoculture • artificial approach • a single species • highly optimized conditions • economy of scale • sensitive to changes • one disruption can destroy whole population • no evolution
  • 9. We had a Monoculture • one language to rule them all • little knowledge and interest in other languages • in the mainstream • economy of scale • standardization • single point of failure
  • 10. Natural Diversity • healthy mixture of species • resistant to disruptions • supporting ecosystem • different forces are countered • many possibilities of evolution • distribute responsibility • less artificial conditions needed
  • 11. A Breeding Ground For Diversity • but it was unnoticed • many languages (400+) running on the JVM • dynamic and static ones • address different problems • many of more expressive than JAVA • what did it take to make us aware of them?
  • 12. Origin of Languages & Evolution thereof • Darwins 200th birthday • external forces shape development of a species • many different variations are exposed • only the fittest survive • form the base for next generations
  • 13. What Happens when the Rules Change? • concurrency challenge • ease of development / maintenance • cost of human creativity • competing approaches • complexity of systems Evolutionary Forces
  • 14. Now There are more Mainstream JVM Languages
  • 15. Common JVM Languages • Scala • Ioke • JRuby • Fan • Groovy • Jaskell • Clojure • Erjang • Rhino • Jython • JavaFX • Fortress
  • 16. Adressing Evolutionary Forces - Concurrency • functional paradigms • immutable datastructures • software transactional memory • implicit parallelism • actor model •
  • 17. Adressing Evolutionary Forces - Expressiveness • dynamic typing • list comprehensions, high order functions • metaprogramming, open types • syntactic sugar, implicit code generation • dynamic execution (scripting) • closures • internal DSLs
  • 18. Adressing Evolutionary Forces - Competition • other languages with an easier syntax and lifecycle • powerful frameworks (RoR) • .net Runtime evolves quickly (LinQ & Co) • simpler paradigms - functional languages • rich clients - Flash • highly scalable languages - Erlang
  • 19. Ola Bini • language layers in applications • stable language at core • dynamic layer • domain layer • „end of big languages“ • JVM well suited as polyglot platform • created Ioke ‚most expressive‘ language experiment
  • 20. Neal Ford • polyglot programming • already a reality • count the languages in your application • explicit focus on „the right language for the job“
  • 21. the Game of Life
  • 22. John H. Conway • well known mathematician • invented it 1970 - 40 years ago • emergence - complexity arises from simple rules • slightly modeled on real life • birth, death, survival • let him tell the story himself
  • 23. Game of Life • a simple game with 3 rules • cell with 2,3 neighbours lives • space surrounded by 3 cells gets alive • emulates atoms, laws, forces and time like our universe • simulates an ecosystem • explore language expressiveness
  • 24. Explore JVM Languages with game of life implementations instead of 99 bottles of beer
  • 25. Different Approaches limited or unlimited board array / matrix based sparse matrix (coordinates) mutating or generations optimizations (HashLife) different variations on rules, visualization etc.
  • 28. Java & Patterns 1300 Lines of Java Source Many Patterns crammed in It is for making a Point But does it make its Point?
  • 32. Ioke (Sam Aaron)
  • 34. Scaling Up • partitioning / sharding the data • actors as cells, need supervisors and segmentation • asynchronity / generations problem • map reduce approach, a cell bleeds its life into its neighbours, sum the resulting fragments • use image operations / GPU • hashlife exploits regularities, hash in a quadtree Think Different
  • 36. It does not end here • the language is just the first step for better abstractions • create your own languages & vocabulary • DDD, ubiquitous language, domain model • DSLs • libraries, APIs • design principles - KISS, DRY & more • design patterns
  • 37. Thank You! Questions & Comments? Image Attributions: Wikipedia, SXC.HU

Notas do Editor

  1. Uncle Bob Martin talking to Scott Hanselman about finding better abstractions to express our intent referred to a video of a APL screencast forthe Game Of Life
  2. old assumptions no longer hold true cost of processing power (Moores Law) computing infrastructure
  3. better suitor for stable language than Java domain layer (domain model, DSLs)
  4. http://video.google.com/videoplay?docid=8018371269760059556&hl=en# 6:49
  5. Uncle Bob Martin talking to Scott Hanselman about finding better abstractions to express our intent referred to a video of a APL screencast forthe Game Of Life