SlideShare a Scribd company logo
1 of 21
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

More Related Content

What's hot (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?
 

Viewers also liked

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
Ross McKinnon
 
BDD - Behavior Driven Development
BDD - Behavior Driven DevelopmentBDD - Behavior Driven Development
BDD - Behavior Driven Development
bloomYa Group
 
What is numeracy-definitions
What is numeracy-definitionsWhat is numeracy-definitions
What is numeracy-definitions
chezzy1955
 

Viewers also liked (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
 

Similar to Clojure

Dynamic Languages on the JVM
Dynamic Languages on the JVMDynamic Languages on the JVM
Dynamic Languages on the JVM
elliando dias
 

Similar to Clojure (20)

Is ruby on rails dead or still good choice for building apps
Is ruby on rails dead or still good choice for building appsIs ruby on rails dead or still good choice for building apps
Is ruby on rails dead or still good choice for building apps
 
What Web Framework To Use?
What Web Framework To Use?What Web Framework To Use?
What Web Framework To Use?
 
Languages used by web app development services remotestac x
Languages used by web app development services  remotestac xLanguages used by web app development services  remotestac x
Languages used by web app development services remotestac x
 
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
 
PHP Vs NodeJS for Backend Web Development.pdf
PHP Vs NodeJS for Backend Web Development.pdfPHP Vs NodeJS for Backend Web Development.pdf
PHP Vs NodeJS for Backend Web Development.pdf
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
Clojure Lightning Talk
Clojure Lightning TalkClojure Lightning Talk
Clojure Lightning Talk
 

Recently uploaded

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
 
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
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
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
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
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
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
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
 
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
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
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
 
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
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 

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

Editor's Notes

  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