Przyszłość programowania Języki funkcyjne na przykładzie Clojure

Podobne dokumenty
Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Filozoa Clojure. Mateusz Dereniowski. 15 lipca Instytut Informatyki Uniwersytetu Wrocªawskiego

Paradygmaty programowania

Powtórka algorytmów. Wprowadzenie do języka Java.

Programowanie funkcyjne (Haskell Wprowadzenie) Kowalik Adrian

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Programowanie obiektowe

Programowanie i projektowanie obiektowe

Clojure. Obca technologia wśród nas. Filip Koczorowski. luty 2010

Wprowadzenie do języka Java

Programowanie Niskopoziomowe

Python i programowanie funkcyjne. Python i programowanie funkcyjne czyli nie tylko obiektowość rządzi. OSEC Funkcyjnie w języku Python 1 z 40

Wstęp do programowania

Języki programowania deklaratywnego

λ parametry. wartość funkcji suma = λ x y. x + y kwadrat = λ x. x * x K.M. Ocetkiewicz, 2008 WETI, PG 2 K.M. Ocetkiewicz, 2008 WETI, PG 3

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Programowanie. Wykład 1 - paradygmaty programowania. Janusz Szwabiński. Plan wykładu:

Języki i paradygmaty programowania. I. Wprowadzenie

Informatyka II stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

Programowanie obiektowe

LISP - "LISt Processing"

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

KOTLIN. Język programowania dla Androida

Tworzenie aplikacji w języku Java

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

Wykład 0 Informacje Podstawowe

Zaawansowany kurs języka Python

Języki programowania deklaratywnego

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści

Przegląd języka Python. Łukasz Anwajler

Systemy liczbowe. Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz

Kurs rozszerzony języka Python

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Podstawy programowania w Pythonie

Powtórka algorytmów. Wprowadzenie do języka Java.

Java jako język programowania

Języki programowania Haskell

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Języki programowania - podstawy

Podstawy programowania w C++

Paradygmaty programowania

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Scala - programowanie obiektowo-funkcyjne

OPIS MODUŁU KSZTAŁCENIA (SYLABUS)

Definicje wyższego poziomu

STANOWISKA JĘZYKOWE DO BUDOWY SERWISÓW INFORMACYJNYCH

Podstawy programowania. Wprowadzenie

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Wyrażenia regularne. Regular expressions. aka. Regexp

Obiektowy Caml. Paweł Boguszewski

Technologie cyfrowe semestr letni 2018/2019

Rok akademicki: 2012/2013 Kod: ZIE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Kiedy i czy konieczne?

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Nazwa pochodzi od imienia znanego logika Haskell a Brooks a Curry ego ( )

Programowanie obiektowe i C++ dla matematyków

Programowanie współbieżne i rozproszone

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Podstawy informatyki. Informatyka Stosowana Zajęcia nr 5. autor: Grzegorz Smyk

Programowanie w Ruby

Ogólne wiadomości o językach programowania

Podstawy programowania w języku C

4 Standardy reprezentacji znaków. 5 Przechowywanie danych w pamięci. 6 Literatura

Arytmetyka liczb binarnych

The current software tools for the JEE platform

Podstawy i języki programowania

LibreOffice Calc VBA

przedmiot kierunkowy (podstawowy / kierunkowy / inny HES) obowiązkowy (obowiązkowy / nieobowiązkowy) polski semestr I

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Techniki Programowania

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Programowanie Funkcyjne. Marcin Kubica Świder,

Język HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Wstęp do Programowania potok funkcyjny

Programowanie obiektowe

Microsoft IT Academy kurs programowania

Podstawy programowania wykład

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Technologie Informacyjne Mechatronika 2012/2013 Błędy obliczeń. Python.

Metody numeryczne Laboratorium 2

Języki i paradygmaty programowania

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Obliczenia, zmienne. Proste działania, zmienne, rodzaje zmiennych, proste operacje i działania na zmiennych.

przedmiot kierunkowy (podstawowy / kierunkowy / inny HES) obowiązkowy (obowiązkowy / nieobowiązkowy) polski semestr I

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

GUI - projektowanie interfejsów cz. II

I. Podstawy języka C powtórka

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza

Języki Programowania. Elementy języków programowania. Wojciech Sobieski

SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym

Paradygmaty programowania

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Transkrypt:

Wstęp Przyszłość programowania Języki funkcyjne na przykładzie Clojure inż. Daniel Harbuz 23 maja 2012 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 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 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 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 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 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 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 Przyszłość programowaniajęzyki funkcyjne na przykładzie Clojure 23 maja 2012 8 / 31

Liczby Struktura języka Typy podstawowe postać dziesiętna 127 szesnastkowa 0x7F postać ósemkowa 0177 postać binarna 2r1111111 postać radix-32 32r3v Przyszłość programowaniajęzyki funkcyjne na przykładzie Clojure 23 maja 2012 9 / 31

Liczby Struktura języka Typy podstawowe liczby dodatnie +127 liczby ujemne -127 Przyszłość programowaniajęzyki funkcyjne na przykładzie Clojure 23 maja 2012 10 / 31

Struktura języka Liczby zmienno przecinkowe Typy podstawowe zapis tradycyjny 1.27 zapis tradycyjny ze znakiem +1.27-1.27 zapis wykładniczy 12e7 1.2e7 1.7e-2 Przyszłość programowaniajęzyki funkcyjne na przykładzie Clojure 23 maja 2012 11 / 31

Liczby wymierne Struktura języka Typy podstawowe 12/7 7/12-7/12 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 \\ Przyszłość programowaniajęzyki funkcyjne na przykładzie Clojure 23 maja 2012 13 / 31

Struktura języka Typy podstawowe Symbole Keywords :2 :? :słowo 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 [ 1 2 3 4 ] 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} Przyszłość programowaniajęzyki funkcyjne na przykładzie Clojure 23 maja 2012 16 / 31

Formy specjalne Struktura języka Formy specjalne def (def symbol inicjalizacja?) Przyszłość programowaniajęzyki funkcyjne na przykładzie Clojure 23 maja 2012 17 / 31

Formy specjalne Struktura języka Formy specjalne do (do instrukcje*) Przyszłość programowaniajęzyki funkcyjne na przykładzie Clojure 23 maja 2012 18 / 31

Formy specjalne Struktura języka Formy specjalne let (let [ wiązania* ] instrukcje*) Przyszłość programowaniajęzyki funkcyjne na przykładzie Clojure 23 maja 2012 19 / 31

Formy specjalne Struktura języka Formy specjalne if (if (warunek) (prawda) (fałsz?)) if-not (if-not (warunek) (fałsz) (prawda?)) when (when (warunek) prawda*) Przyszłość programowaniajęzyki funkcyjne na przykładzie Clojure 23 maja 2012 20 / 31

Formy specjalne Struktura języka Formy specjalne recur (recur wartości*) Przyszłość programowaniajęzyki funkcyjne na przykładzie Clojure 23 maja 2012 21 / 31

Formy specjalne Struktura języka Formy specjalne loop (loop [ wiązania* ] instrukcje*) Przyszłość programowaniajęzyki funkcyjne na przykładzie Clojure 23 maja 2012 22 / 31

Formy specjalne Struktura języka Formy specjalne fn (fn nazwa [parametry*] instrukcje*) Przyszłość programowaniajęzyki funkcyjne na przykładzie Clojure 23 maja 2012 23 / 31

Rekurencja Struktura języka Rekurencja (defn prime ([x] (if-not (= 0 (rem x 2)) (prime x 3) (prime (+ x 1) 2))) ([x n] (if (< n (+ (quot x 2) 1)) (if-not (= 0 (rem x n)) (prime x (+ n 1)) (prime (+ x 1) 2)) x))) (defn prime ([x] (if-not (= 0 (rem x 2)) (prime x 3) (prime (+ x 1) 2))) ([x n] (if (< n (+ (quot x 2) 1)) (if-not (= 0 (rem x n)) (recur x (+ n 1)) (recur (+ x 1) 2)) x))) 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 Przyszłość programowaniajęzyki funkcyjne na przykładzie Clojure 23 maja 2012 25 / 31

DEMO Clojure w praktyce Środowiska programistyczne Trochę praktyki... 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 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 Przyszłość programowaniajęzyki funkcyjne na przykładzie Clojure 23 maja 2012 28 / 31

Clojure w Polsce Zakończenie Clojure w Polsce Fablo.pl Przyszłość programowaniajęzyki funkcyjne na przykładzie Clojure 23 maja 2012 29 / 31

Bibliografia Zakończenie 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. Przyszłość programowaniajęzyki funkcyjne na przykładzie Clojure 23 maja 2012 30 / 31

Zakończenie Bibliografia Dziękuję za uwagę. Przyszłość programowaniajęzyki funkcyjne na przykładzie Clojure 23 maja 2012 31 / 31