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

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
 

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

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

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 appsTemok IT Services
 
What Web Framework To Use?
What Web Framework To Use?What Web Framework To Use?
What Web Framework To Use?Kasra Khosravi
 
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 xRemote Stacx
 
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
 
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.pdfSofiaCarter4
 
Clojure Lightning Talk
Clojure Lightning TalkClojure Lightning Talk
Clojure Lightning TalkGiltTech
 

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

Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 

Recently uploaded (20)

Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 

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