Przyszłosc programowania Jezyki funkcyjne na przykładzie Clojure

Transkrypt

Przyszłosc programowania Jezyki funkcyjne na przykładzie Clojure
Wstęp
Przyszłość programowania
Języki funkcyjne na przykładzie Clojure
inż. Daniel Harbuz
23 maja 2012
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
1 / 31
Wstęp
Ageda
Agenda
Wstęp do programowania funkcyjnego
Wprowadzenie do języka Clojure
Struktura języka Clojure
Demo
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
2 / 31
Wstęp do programowania funkcyjnego
Historia
Języki funkcyjne
Information Processing Language
Lisp
Miranda
Meta Language
Scheme
Haskell
F#
Clojure
Scala
Erlang
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
3 / 31
Wstęp do programowania funkcyjnego
Programowanie funkcyjne
Charakterystyka
Funkcja
Funkcja wyższego rzędu
Stałe
Wartościowanie
Rekurencja
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
4 / 31
Wstęp do programowania funkcyjnego
Programowanie funkcyjne
Podział języków funkcyjnych
Języki czysto funkcyjne
leniwe wartościowanie
brak zmiennych
brak efektów ubocznych
monady
Języki mieszane
wartościowanie zachłanne
zmienne
efekty uboczne
tradycyjne wejście/wyjście
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
5 / 31
Wprowadzenie do języka Clojure
Historia
Historia
Closure
Rich Hickey
16 październik 2007
19 sierpień 2010 (1.2)
Wersja 1.4
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
6 / 31
Wprowadzenie do języka Clojure
Wprowadzenie
Clojure
Programowanie funkcyjne
Programowanie współbieżne
Lisp
Java
Java Virtual Machine
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
7 / 31
Struktura języka
Funkcje
Zmienne a raczej stałe
Formy specjalne
Funkcje
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
8 / 31
Struktura języka
Typy podstawowe
Liczby
postać dziesiętna
127
szesnastkowa
0x7F
postać ósemkowa
0177
postać binarna
2r1111111
postać radix-32
32r3v
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
9 / 31
Struktura języka
Typy podstawowe
Liczby
liczby dodatnie
+127
liczby ujemne
-127
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
10 / 31
Struktura języka
Typy podstawowe
Liczby zmienno przecinkowe
zapis tradycyjny
1.27
zapis tradycyjny ze znakiem
+1.27
-1.27
zapis wykładniczy
12e7
1.2e7
1.7e-2
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
11 / 31
Struktura języka
Typy podstawowe
Liczby wymierne
12/7
7/12
-7/12
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
12 / 31
Struktura języka
Typy podstawowe
Symbole
String
”To jest
łańcuch znaków”
Charakters
\a
\A
\u0042
\\
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
13 / 31
Struktura języka
Typy podstawowe
Symbole
Keywords
:2
:?
:słowo
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
14 / 31
Struktura języka
Kolekcje
Kolekcje
Listy
()
(:A 2)
(1 2 (a b c) 4 5)
’(1, 2, 3, 4)
Wektory
[ 1234 ]
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
15 / 31
Struktura języka
Kolekcje
Kolekcje
Mapy
{1 ”jeden”, 2 ”dwa”, 3 ”trzy”}
Zestawy
#{1 2 ”trzy” :cztery 0x5}
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
16 / 31
Struktura języka
Formy specjalne
Formy specjalne
def
(def symbol inicjalizacja?)
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
17 / 31
Struktura języka
Formy specjalne
Formy specjalne
do
(do instrukcje*)
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
18 / 31
Struktura języka
Formy specjalne
Formy specjalne
let
(let [ wiązania* ] instrukcje*)
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
19 / 31
Struktura języka
Formy specjalne
Formy specjalne
if
(if (warunek) (prawda) (fałsz?))
if-not
(if-not (warunek) (fałsz) (prawda?))
when
(when (warunek) prawda*)
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
20 / 31
Struktura języka
Formy specjalne
Formy specjalne
recur
(recur wartości*)
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
21 / 31
Struktura języka
Formy specjalne
Formy specjalne
loop
(loop [ wiązania* ] instrukcje*)
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
22 / 31
Struktura języka
Formy specjalne
Formy specjalne
fn
(fn nazwa [parametry*] instrukcje*)
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
23 / 31
Struktura języka
Rekurencja
Rekurencja
(defn prime
(defn prime
([x]
([x]
(if-not (= 0 (rem x 2))
(if-not (= 0 (rem x 2))
(prime x 3)
(prime x 3)
(prime (+ x 1) 2)))
(prime (+ x 1) 2)))
([x n]
([x n]
(if (< n (+ (quot x 2) 1)) (if (< n (+ (quot x 2) 1))
(if-not (= 0 (rem x n))
(if-not (= 0 (rem x n))
(prime x (+ n 1))
(recur x (+ n 1))
(prime (+ x 1) 2))
(recur (+ x 1) 2))
x)))
x)))
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
24 / 31
Clojure w praktyce
Środowiska programistyczne
Środowiska programistyczne
Read-Eval-Print Loop
Clooj
Eclipse
Emacs
JEdit
IntelliJ IDEA
Leiningen
Maven
Netbeans
Vim
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
25 / 31
Clojure w praktyce
Środowiska programistyczne
DEMO
Trochę praktyki...
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
26 / 31
Zakończenie
Trochę Statystyki
Gdzie najczęściej używa się Clojure
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
27 / 31
Zakończenie
Trochę Statystyki
W jakich projektach używa się Clojure
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
28 / 31
Zakończenie
Clojure w Polsce
Clojure w Polsce
Fablo.pl
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
29 / 31
Zakończenie
Bibliografia
Bibliografia
L. VanderHart and S. Sierra, Practical Clojure, Apress, 2010.
M. Fogus and C. Houser, The Joy of Clojure, Manning, 2011.
R. Hickey, ”Clojure”, 2012. www.clojure.org.
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
30 / 31
Zakończenie
Bibliografia
Dziękuję za uwagę.
inż. Daniel Harbuz ()
Przyszłość programowaniaJęzyki funkcyjne na przykładzie Clojure
23 maja 2012
31 / 31

Podobne dokumenty