0
Introduction à    Clojure  Pablo Tamarit 30 octobre 2012   Geneva JUG
1999 - 2005                                       2007 - 2049                 EIG                                         ...
Avant-goût (def panier [{:nom "pommes",     :type :fruits}              {:nom "poires",     :type :fruits}              {:...
• Partie philosophique• Partie théorique• Partie pratique
Partie philosophique
Clojure                                + λ•   Créé en 2007           •   Tout est immutable•   Simplicité             •   ...
Lisp• Inventé en 1958
John McCarthy  1927 – 2011
Lisp• Inventé en 1958• Lots of  Irritating  Superfluous  Parentheses?
Lisp• Inventé en 1958     • Homoiconicité• Lots of             • Macros  Irritating  Superfluous  Parentheses        paulg...
Partie théorique
Langage• Syntaxe simple, vocabulaire riche.  – Syntaxe: données, fonctions  – Vocabulaire: fonctions                      ...
Syntaxe: collectionsListe                    ("un" 2 3 3)Vecteur                  ["un" 2 3 3]Set                      #{"...
Syntaxe: fonctions                             fn           args                     liste                                ...
Vocabulaire: fonctions(def coll [-42 5 -0.1])(map abs coll) (42 5 0.1)(reduce + 0 coll) -37.1(filter neg? coll) (-42 -0...
Interop                   Java                            Clojure    new JFrame("Titre")              (JFrame. "Titre")   ...
Partie pratique
Quoi installer?• Rien!  <dependency>    <groupId>org.clojure</groupId>    <artifactId>clojure</artifactId>    <version>1.4...
Outils• Build  – leiningen  – clojure-maven-plugin• IDE  – Counterclockwise (Eclipse)  – La Clojure (IntelliJ IDEA)  – Ema...
Apprentissage• Présentations:  – blip.tv/clojure  – infoq.com/clojure• Livres:  – clojurebook.com  – joyofclojure.com• Exe...
Questions?
Crédits graphiques• Logo Clojure: © Tom Hickey (tomhickey.com)• Vue aérienne du LHC: © 2001 CERN  (cdsweb.cern.ch/record/4...
Upcoming SlideShare
Loading in...5
×

Introduction Clojure - Geneva JUG - Octobre 2012

1,052

Published on

Présentation de 15 minutes au Java User Group de Genève.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,052
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Introduction Clojure - Geneva JUG - Octobre 2012"

  1. 1. Introduction à Clojure Pablo Tamarit 30 octobre 2012 Geneva JUG
  2. 2. 1999 - 2005 2007 - 2049 EIG CERN2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 ?
  3. 3. Avant-goût (def panier [{:nom "pommes", :type :fruits} {:nom "poires", :type :fruits} {:nom "scoubidous", :type :objets}]) (group-by :type panier) {:fruits [{:type :fruits, :nom "pommes"} {:type :fruits, :nom "poires"}], :objets [{:type :objets, :nom "scoubidous"}]}
  4. 4. • Partie philosophique• Partie théorique• Partie pratique
  5. 5. Partie philosophique
  6. 6. Clojure + λ• Créé en 2007 • Tout est immutable• Simplicité • Pas détat• Pas d’orienté objet! • Pas deffets de bord• Typage dynamique • Dialecte de Lisp!
  7. 7. Lisp• Inventé en 1958
  8. 8. John McCarthy 1927 – 2011
  9. 9. Lisp• Inventé en 1958• Lots of Irritating Superfluous Parentheses?
  10. 10. Lisp• Inventé en 1958 • Homoiconicité• Lots of • Macros Irritating Superfluous Parentheses paulgraham.com/avg.html
  11. 11. Partie théorique
  12. 12. Langage• Syntaxe simple, vocabulaire riche. – Syntaxe: données, fonctions – Vocabulaire: fonctions clojure.org/cheatsheet
  13. 13. Syntaxe: collectionsListe ("un" 2 3 3)Vecteur ["un" 2 3 3]Set #{"un" 2 3}Map {:nom "Pablo", :age 28} (:age {:nom "Pablo", :age 28})  28
  14. 14. Syntaxe: fonctions fn args liste vecteurAppel (+ 1 2 3)Définition (defn abs [n] (if (neg? n) condition (- n) then n)) elseDéfinition anonyme (fn [x y] (+ (abs x) (abs y)))Définition anonyme sucrée #(+ (abs %1) (abs %2))
  15. 15. Vocabulaire: fonctions(def coll [-42 5 -0.1])(map abs coll) (42 5 0.1)(reduce + 0 coll) -37.1(filter neg? coll) (-42 -0.1)
  16. 16. Interop Java Clojure new JFrame("Titre") (JFrame. "Titre") Color.RED Color/RED frame.setTitle("Titre2") (.setTitle frame "Titre2")4 frame.getTitle().toLowerCase() (.. frame getTitle toLowerCase) 23 frame.add(panel) (doto frame 1 frame.pack() (.add panel) frame.setVisible(true) (.pack) (.setVisible true))
  17. 17. Partie pratique
  18. 18. Quoi installer?• Rien! <dependency> <groupId>org.clojure</groupId> <artifactId>clojure</artifactId> <version>1.4.0</version> </dependency>• Qui a-t-il dans le JAR? – La librairie – REPL: java -jar clojure.jar – Compilateur: .clj  .class
  19. 19. Outils• Build – leiningen – clojure-maven-plugin• IDE – Counterclockwise (Eclipse) – La Clojure (IntelliJ IDEA) – Emacs!
  20. 20. Apprentissage• Présentations: – blip.tv/clojure – infoq.com/clojure• Livres: – clojurebook.com – joyofclojure.com• Exercices: – 4clojure.com
  21. 21. Questions?
  22. 22. Crédits graphiques• Logo Clojure: © Tom Hickey (tomhickey.com)• Vue aérienne du LHC: © 2001 CERN (cdsweb.cern.ch/record/42370)• La Trahison des images: © 1929 René Magritte• Duke models: © Sun Microsystems Inc. (duke.kenai.com/models)• Portrait de John McCarthy: © 2006 null0 (flic.kr/p/q39Sg)• LAppel des cimes: © 1942 René Magritte• La Clairvoyance: © 1936 René Magritte• Cooled Beans: © 2008 Chris Bay (flic.kr/p/4z6CBA)• Gears: © Dima Yagnyuk (thenounproject.com/noun/gears/#icon- No2174, thenounproject.com/Deadtype)• Tools: © Jacob Hardbower (thenounproject.com/noun/tools/#icon- No4684, thenounproject.com/HeartWired)
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×