SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Welcome to the World
                                of


                                Clojure

                         The language for
                          Web startups?



                           railando                  .com
                           Gain%%Speed%with%%Ruby%on% Rails
Berlin, Sep 21, 2012
Welcome to the World
                                of


                                Clojure

                         The language for
                          Web startups?



                           railando                  .com
                           Gain%%Speed%with%%Ruby%on% Rails
Berlin, Sep 21, 2012
What to expect in this presentation?




                         railando                  .com
                         Gain%%Speed%with%%Ruby%on% Rails
Berlin, Sep 21, 2012
What to expect in this presentation?




                         railando                  .com
                         Gain%%Speed%with%%Ruby%on% Rails
Berlin, Sep 21, 2012
What to expect in this presentation?

                       •Understand what Clojure is
                       •Understand what functional programming is
                       •Understand its benefits and drawbacks
                       •Inspiration to your own thoughts   
                       •Hear about practical experience
                       •Know where to get help:

                                    railando                  .com
                                    Gain%%Speed%with%%Ruby%on% Rails
Berlin, Sep 21, 2012
Some problems



that plague people today

       with regards to

 software development
Subpar language extensibility




Languages are extensible: libraries, gems, etc.

          But not extensible enough

        Example: Machine Learning, R
New langugages build libraries slowly




   Some language’s greatest reason to use
      (even reason to be in existence)
          is great library support

Otherwise great languages are not being widely
  used because of (still) poor library support
Parallel Processing


    Making an existing application thread-safe
    means basically rebuilding it from scratch
 if written in an imperative language (OO or not)

Moore’s Law (double performance every two years)
          is still observed (as of 2012)

Change: Since a physical barrier in semiconductor
 speed has been reached, Moore’s Law can only
         materialize through parallelism

  Proof in the real world: multi-core processors
Mutable State


 It’s been a given in programming since Turing
     Machines, so hardly anyone questions it

  Tools like LOGO or SCRATCH teach kids that
programming is equivalent to managing mutable
                     state

    Makes it incredibly hard to reuse code!

    Makes it incredibly hard to parallelize.
What now?


          How is

          Clojure

an answer to these problems?
Functional Programming


   Mutable State is a well-managed exception,
                   not the rule

      Pure functions: Don’t depend on state

 Makes it easy to reason about code and to reuse
         code (OO was a step, but small)

Contrasting paradigm to imperative prpgramming.
Parallelism


    Clojure manages mutable state well, taking
   parallelism (in different flavors) carefully into
                       account

    Clojure code can easily be made parallel

Even automatic parallelization is possible to some
                     extent

Remember: Who does not manage parallelism well,
        will be non-existent by 2020!
Extensibilty


Clojure’s extensibility mechanism (called “Macros”,
  an all-day name for a world-class concept) is
                      unrivaled

                   Examples:
    Machine Learning/Statistics: R vs. cloj-ml
    Logic Programming: Prolog vs. core-logic
Libraries / Communities


             Based on Java / JVM

Can fully profit from Java’s enormous community,
      battle-proven libraries and tools, etc.

                     Plus:
                Clojure is fast.
                   FAST!
LISP syntax


           Clojure is a dialect of LISP!

       Syntax is simple. I mean: simple.
    No LR parsing, Chomsky grammars, yni.

Who knows for sure all operator precedence in C,
      C++, Java, Perl, Python, Ruby, ... ???

    Fully parenthesized notation removes all
                   ambiguity

      “Polish” notation. (Remember RPN?)
Our experience
               Surprising amount of libraries available

Web develpment greatly simplified. Many things that require gems in
              ruby work “just like that” in Clojure

              Better performance than Ruby or Python

              Extremely helpful and vibrant community

                           Incredible fun!

      We expect enormous productivity gains in new projects.

Enables us to do things that matter, that wouldn’t be possible before!

                Matching database system: Datomic!

  Webapps: Clojure on the server and ClojureScript in the browser:
                         How cool is that?
A real life example


       See
      Demo
A real life example


       See
      Demo
What now?

  Try it !
Finally

               Care for

             help?
          consulting?
           support?
           training?

Don’t forget to give us a call ;-)

  bernd.blume@railando.com

         railando                  .com
         Gain%%Speed%with%%Ruby%on% Rails

Mais conteúdo relacionado

Mais procurados

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
 
Jug dynamic languages_in_jvm
Jug dynamic languages_in_jvmJug dynamic languages_in_jvm
Jug dynamic languages_in_jvmDmitry Buzdin
 
Futuristic programing language
Futuristic programing languageFuturistic programing language
Futuristic programing languageMohamed Zaki
 
What is the best programming language for beginner?
What is the best programming language for beginner?What is the best programming language for beginner?
What is the best programming language for beginner?Designveloper
 

Mais procurados (6)

C c#
C c#C c#
C c#
 
Best coding practices
Best coding practicesBest coding practices
Best coding practices
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem
 
Jug dynamic languages_in_jvm
Jug dynamic languages_in_jvmJug dynamic languages_in_jvm
Jug dynamic languages_in_jvm
 
Futuristic programing language
Futuristic programing languageFuturistic programing language
Futuristic programing language
 
What is the best programming language for beginner?
What is the best programming language for beginner?What is the best programming language for beginner?
What is the best programming language for beginner?
 

Destaque

Numeracy identifying and teaching for numeracy in the classroom
Numeracy identifying and teaching for numeracy in the classroomNumeracy identifying and teaching for numeracy in the classroom
Numeracy identifying and teaching for numeracy in the classroomRoss McKinnon
 
End of-Semester Fieldwork Sharing Darlene Caramanzana and Cindy Cruz-Cabrera ...
End of-Semester Fieldwork Sharing Darlene Caramanzana and Cindy Cruz-Cabrera ...End of-Semester Fieldwork Sharing Darlene Caramanzana and Cindy Cruz-Cabrera ...
End of-Semester Fieldwork Sharing Darlene Caramanzana and Cindy Cruz-Cabrera ...University of the Philippines Diliman
 
BDD - Behavior Driven Development
BDD - Behavior Driven DevelopmentBDD - Behavior Driven Development
BDD - Behavior Driven DevelopmentbloomYa Group
 
What is numeracy-definitions
What is numeracy-definitionsWhat is numeracy-definitions
What is numeracy-definitionschezzy1955
 
Numeracy Continuum course
Numeracy Continuum courseNumeracy Continuum course
Numeracy Continuum courseadd4maths
 

Destaque (7)

Numeracy identifying and teaching for numeracy in the classroom
Numeracy identifying and teaching for numeracy in the classroomNumeracy identifying and teaching for numeracy in the classroom
Numeracy identifying and teaching for numeracy in the classroom
 
End of-Semester Fieldwork Sharing Darlene Caramanzana and Cindy Cruz-Cabrera ...
End of-Semester Fieldwork Sharing Darlene Caramanzana and Cindy Cruz-Cabrera ...End of-Semester Fieldwork Sharing Darlene Caramanzana and Cindy Cruz-Cabrera ...
End of-Semester Fieldwork Sharing Darlene Caramanzana and Cindy Cruz-Cabrera ...
 
Numeracy
NumeracyNumeracy
Numeracy
 
BDD - Behavior Driven Development
BDD - Behavior Driven DevelopmentBDD - Behavior Driven Development
BDD - Behavior Driven Development
 
What is numeracy-definitions
What is numeracy-definitionsWhat is numeracy-definitions
What is numeracy-definitions
 
Numeracy Continuum course
Numeracy Continuum courseNumeracy Continuum course
Numeracy Continuum course
 
Literacy and numeracy
Literacy and numeracyLiteracy and numeracy
Literacy and numeracy
 

Semelhante a Clojure

What Web Framework To Use?
What Web Framework To Use?What Web Framework To Use?
What Web Framework To Use?Kasra Khosravi
 
The Forces Driving Java
The Forces Driving JavaThe Forces Driving Java
The Forces Driving JavaSteve Elliott
 
Why Java Is Great - Unbiased Perspective!
Why Java Is Great - Unbiased Perspective!Why Java Is Great - Unbiased Perspective!
Why Java Is Great - Unbiased Perspective!Hariom Vashisth
 
Dynamic Languages on the JVM
Dynamic Languages on the JVMDynamic Languages on the JVM
Dynamic Languages on the JVMelliando dias
 
Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...
Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...
Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...Katy Slemon
 
Go for Rubyists. August 2018. RUG-B Meetup
Go for Rubyists. August 2018. RUG-B MeetupGo for Rubyists. August 2018. RUG-B Meetup
Go for Rubyists. August 2018. RUG-B MeetupKirill Zonov
 
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...GreeceJS
 
Introduction to Clojure
Introduction to ClojureIntroduction to Clojure
Introduction to ClojureRenzo Borgatti
 
difference between c c++ c#
difference between c c++ c#difference between c c++ c#
difference between c c++ c#Sireesh K
 
Make your app idea a reality with Ruby On Rails
Make your app idea a reality with Ruby On RailsMake your app idea a reality with Ruby On Rails
Make your app idea a reality with Ruby On RailsNataly Tkachuk
 
Life Beyond Rails: Creating Cross Platform Ruby Apps
Life Beyond Rails: Creating Cross Platform Ruby AppsLife Beyond Rails: Creating Cross Platform Ruby Apps
Life Beyond Rails: Creating Cross Platform Ruby AppsTristan Gomez
 
Bitter Java, Sweeten with JRuby
Bitter Java, Sweeten with JRubyBitter Java, Sweeten with JRuby
Bitter Java, Sweeten with JRubyBrian Sam-Bodden
 
Clojure Lightning Talk
Clojure Lightning TalkClojure Lightning Talk
Clojure Lightning TalkGiltTech
 
Angular 2 vs React. What to chose in 2017?
Angular 2 vs React. What to chose in 2017?Angular 2 vs React. What to chose in 2017?
Angular 2 vs React. What to chose in 2017?TechMagic
 
Javascript beginner-handbook
Javascript beginner-handbookJavascript beginner-handbook
Javascript beginner-handbookFaina Fridman
 

Semelhante a Clojure (20)

What Web Framework To Use?
What Web Framework To Use?What Web Framework To Use?
What Web Framework To Use?
 
The Forces Driving Java
The Forces Driving JavaThe Forces Driving Java
The Forces Driving Java
 
Why Java Is Great - Unbiased Perspective!
Why Java Is Great - Unbiased Perspective!Why Java Is Great - Unbiased Perspective!
Why Java Is Great - Unbiased Perspective!
 
Dynamic Languages on the JVM
Dynamic Languages on the JVMDynamic Languages on the JVM
Dynamic Languages on the JVM
 
Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...
Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...
Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...
 
Go for Rubyists. August 2018. RUG-B Meetup
Go for Rubyists. August 2018. RUG-B MeetupGo for Rubyists. August 2018. RUG-B Meetup
Go for Rubyists. August 2018. RUG-B Meetup
 
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
 
Groovy And Grails
Groovy And GrailsGroovy And Grails
Groovy And Grails
 
ruby pentest
ruby pentestruby pentest
ruby pentest
 
Introduction to Clojure
Introduction to ClojureIntroduction to Clojure
Introduction to Clojure
 
difference between c c++ c#
difference between c c++ c#difference between c c++ c#
difference between c c++ c#
 
Make your app idea a reality with Ruby On Rails
Make your app idea a reality with Ruby On RailsMake your app idea a reality with Ruby On Rails
Make your app idea a reality with Ruby On Rails
 
Life Beyond Rails: Creating Cross Platform Ruby Apps
Life Beyond Rails: Creating Cross Platform Ruby AppsLife Beyond Rails: Creating Cross Platform Ruby Apps
Life Beyond Rails: Creating Cross Platform Ruby Apps
 
Ruby Metaprogramming 08
Ruby Metaprogramming 08Ruby Metaprogramming 08
Ruby Metaprogramming 08
 
Bitter Java, Sweeten with JRuby
Bitter Java, Sweeten with JRubyBitter Java, Sweeten with JRuby
Bitter Java, Sweeten with JRuby
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
Clojure Lightning Talk
Clojure Lightning TalkClojure Lightning Talk
Clojure Lightning Talk
 
Angular 2 vs React. What to chose in 2017?
Angular 2 vs React. What to chose in 2017?Angular 2 vs React. What to chose in 2017?
Angular 2 vs React. What to chose in 2017?
 
OSGI,
OSGI,OSGI,
OSGI,
 
Javascript beginner-handbook
Javascript beginner-handbookJavascript beginner-handbook
Javascript beginner-handbook
 

Último

Extra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfExtra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfInfopole1
 
UiPath Studio Web workshop series - Day 1
UiPath Studio Web workshop series  - Day 1UiPath Studio Web workshop series  - Day 1
UiPath Studio Web workshop series - Day 1DianaGray10
 
Trailblazer Community - Flows Workshop (Session 2)
Trailblazer Community - Flows Workshop (Session 2)Trailblazer Community - Flows Workshop (Session 2)
Trailblazer Community - Flows Workshop (Session 2)Muhammad Tiham Siddiqui
 
How to release an Open Source Dataweave Library
How to release an Open Source Dataweave LibraryHow to release an Open Source Dataweave Library
How to release an Open Source Dataweave Libraryshyamraj55
 
Top 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTop 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTopCSSGallery
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechProduct School
 
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInOutage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInThousandEyes
 
CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024Brian Pichman
 
The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)IES VE
 
How to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxHow to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxKaustubhBhavsar6
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox
 
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdfQ4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdfTejal81
 
The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)codyslingerland1
 
UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2DianaGray10
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kitJamie (Taka) Wang
 
Scenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosScenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosErol GIRAUDY
 
Novo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNovo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNeo4j
 
My key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAIMy key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAIVijayananda Mohire
 
Patch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updatePatch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updateadam112203
 

Último (20)

Extra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfExtra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdf
 
UiPath Studio Web workshop series - Day 1
UiPath Studio Web workshop series  - Day 1UiPath Studio Web workshop series  - Day 1
UiPath Studio Web workshop series - Day 1
 
Trailblazer Community - Flows Workshop (Session 2)
Trailblazer Community - Flows Workshop (Session 2)Trailblazer Community - Flows Workshop (Session 2)
Trailblazer Community - Flows Workshop (Session 2)
 
How to release an Open Source Dataweave Library
How to release an Open Source Dataweave LibraryHow to release an Open Source Dataweave Library
How to release an Open Source Dataweave Library
 
Top 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTop 10 Squarespace Development Companies
Top 10 Squarespace Development Companies
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
 
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInOutage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
 
CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024
 
The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)
 
How to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxHow to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptx
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
 
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdfQ4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
 
The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)
 
UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kit
 
Scenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosScenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenarios
 
Novo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNovo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4j
 
My key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAIMy key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAI
 
Patch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updatePatch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 update
 

Clojure

  • 1. Welcome to the World of Clojure The language for Web startups? railando .com Gain%%Speed%with%%Ruby%on% Rails Berlin, Sep 21, 2012
  • 2. Welcome to the World of Clojure The language for Web startups? railando .com Gain%%Speed%with%%Ruby%on% Rails Berlin, Sep 21, 2012
  • 3. What to expect in this presentation? railando .com Gain%%Speed%with%%Ruby%on% Rails Berlin, Sep 21, 2012
  • 4. What to expect in this presentation? railando .com Gain%%Speed%with%%Ruby%on% Rails Berlin, Sep 21, 2012
  • 5. What to expect in this presentation? •Understand what Clojure is •Understand what functional programming is •Understand its benefits and drawbacks •Inspiration to your own thoughts    •Hear about practical experience •Know where to get help: railando .com Gain%%Speed%with%%Ruby%on% Rails Berlin, Sep 21, 2012
  • 6. Some problems that plague people today with regards to software development
  • 7. Subpar language extensibility Languages are extensible: libraries, gems, etc. But not extensible enough Example: Machine Learning, R
  • 8. New langugages build libraries slowly Some language’s greatest reason to use (even reason to be in existence) is great library support Otherwise great languages are not being widely used because of (still) poor library support
  • 9. Parallel Processing Making an existing application thread-safe means basically rebuilding it from scratch if written in an imperative language (OO or not) Moore’s Law (double performance every two years) is still observed (as of 2012) Change: Since a physical barrier in semiconductor speed has been reached, Moore’s Law can only materialize through parallelism Proof in the real world: multi-core processors
  • 10. Mutable State It’s been a given in programming since Turing Machines, so hardly anyone questions it Tools like LOGO or SCRATCH teach kids that programming is equivalent to managing mutable state Makes it incredibly hard to reuse code! Makes it incredibly hard to parallelize.
  • 11. What now? How is Clojure an answer to these problems?
  • 12. Functional Programming Mutable State is a well-managed exception, not the rule Pure functions: Don’t depend on state Makes it easy to reason about code and to reuse code (OO was a step, but small) Contrasting paradigm to imperative prpgramming.
  • 13. Parallelism Clojure manages mutable state well, taking parallelism (in different flavors) carefully into account Clojure code can easily be made parallel Even automatic parallelization is possible to some extent Remember: Who does not manage parallelism well, will be non-existent by 2020!
  • 14. Extensibilty Clojure’s extensibility mechanism (called “Macros”, an all-day name for a world-class concept) is unrivaled Examples: Machine Learning/Statistics: R vs. cloj-ml Logic Programming: Prolog vs. core-logic
  • 15. Libraries / Communities Based on Java / JVM Can fully profit from Java’s enormous community, battle-proven libraries and tools, etc. Plus: Clojure is fast. FAST!
  • 16. LISP syntax Clojure is a dialect of LISP! Syntax is simple. I mean: simple. No LR parsing, Chomsky grammars, yni. Who knows for sure all operator precedence in C, C++, Java, Perl, Python, Ruby, ... ??? Fully parenthesized notation removes all ambiguity “Polish” notation. (Remember RPN?)
  • 17. Our experience Surprising amount of libraries available Web develpment greatly simplified. Many things that require gems in ruby work “just like that” in Clojure Better performance than Ruby or Python Extremely helpful and vibrant community Incredible fun! We expect enormous productivity gains in new projects. Enables us to do things that matter, that wouldn’t be possible before! Matching database system: Datomic! Webapps: Clojure on the server and ClojureScript in the browser: How cool is that?
  • 18. A real life example See Demo
  • 19. A real life example See Demo
  • 20. What now? Try it !
  • 21. Finally Care for help? consulting? support? training? Don’t forget to give us a call ;-) bernd.blume@railando.com railando .com Gain%%Speed%with%%Ruby%on% Rails

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n