SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

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
 

Tendances (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?
 

En vedette

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
 

En vedette (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
 

Similaire à 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
 

Similaire à 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
 

Dernier

UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3DianaGray10
 
Oracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxOracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxSatishbabu Gunukula
 
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
 
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
 
From the origin to the future of Open Source model and business
From the origin to the future of  Open Source model and businessFrom the origin to the future of  Open Source model and business
From the origin to the future of Open Source model and businessFrancesco Corti
 
Top 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTop 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTopCSSGallery
 
UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4DianaGray10
 
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
 
2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdf2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdfThe Good Food Institute
 
Planetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile BrochurePlanetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile BrochurePlanetek Italia Srl
 
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
 
3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud Data3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud DataEric D. Schabell
 
Technical SEO for Improved Accessibility WTS FEST
Technical SEO for Improved Accessibility  WTS FESTTechnical SEO for Improved Accessibility  WTS FEST
Technical SEO for Improved Accessibility WTS FESTBillieHyde
 
CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024Brian Pichman
 
Keep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveKeep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveIES VE
 
March Patch Tuesday
March Patch TuesdayMarch Patch Tuesday
March Patch TuesdayIvanti
 
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
 
Where developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is goingWhere developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is goingFrancesco Corti
 
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENTSIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENTxtailishbaloch
 

Dernier (20)

UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3
 
Oracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxOracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptx
 
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
 
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
 
From the origin to the future of Open Source model and business
From the origin to the future of  Open Source model and businessFrom the origin to the future of  Open Source model and business
From the origin to the future of Open Source model and business
 
Top 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTop 10 Squarespace Development Companies
Top 10 Squarespace Development Companies
 
UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4
 
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
 
2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdf2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdf
 
Planetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile BrochurePlanetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile Brochure
 
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
 
3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud Data3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud Data
 
Technical SEO for Improved Accessibility WTS FEST
Technical SEO for Improved Accessibility  WTS FESTTechnical SEO for Improved Accessibility  WTS FEST
Technical SEO for Improved Accessibility WTS FEST
 
SheDev 2024
SheDev 2024SheDev 2024
SheDev 2024
 
CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024
 
Keep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveKeep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES Live
 
March Patch Tuesday
March Patch TuesdayMarch Patch Tuesday
March Patch Tuesday
 
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)
 
Where developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is goingWhere developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is going
 
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENTSIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
 

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

Notes de l'éditeur

  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