+ All Categories
Home > Documents > IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady...

IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady...

Date post: 04-Nov-2019
Category:
Upload: others
View: 10 times
Download: 0 times
Share this document with a friend
76
Praktické tipy, programovací jazyky IB111 Základy programování Radek Pelánek 2017 1 / 76
Transcript
Page 1: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Praktické tipy, programovací jazyky

IB111 Základy programováníRadek Pelánek

2017

1 / 76

Page 2: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Dnešní přednáška

shrnutí základůvývojová prostředí, editoryspráva verzíknihovny, praktický vývoj v Pythonuregulární výrazypřehled programovacích jazykůnávaznostiKahootová anketa

2 / 76

Page 3: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

IB111 shrnutí

shrnutí základních tématco je potřeba hladce umět pro další studiumupozornění na problematické body

3 / 76

Page 4: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Řízení toku výpočtu

podmíněný příkazcykly: for, whilefunkce, return

4 / 76

Page 5: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Datové typy

čísla (int, float)řetězceseznamy, n-ticeslovníky

5 / 76

Page 6: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Indexování

indexování od nulyrozlišování mezi:

indexem ihodnotou na příslušné pozici a[i]

rozdíl mezi indexováním seznamu a slovníkuvnořené struktury, indexování

data[x][y] vs. data[x,y]interpretace indexování „zlevaÿ

6 / 76

Page 7: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Řazení

základní řadící algoritmy: bubble sort, select sort, insertsortpoužití vestavěného řazení

sorted(alist) vs. alist.sort()řazení podle kritéria: key

7 / 76

Page 8: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Funkce

dekompozice problému na funkcečistá funkce, vedlejší efektpředávání parametrů, změna parametrůrozlišování, vhodné použití:

funkce, která mění parametryfunkce, která vrací nový objekt

8 / 76

Page 9: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Proměnné

globální, lokálnívytvoření aliasu vs. kopie (mělká, hluboká)měnitelné vs. neměnitelné typy

indexování slovníkupředávání parametrů funkcím

9 / 76

Page 10: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Rekurze

základní princip sebe-referencečtení, interpretace rekurzivního kódujednoduchá rekurze s návratovou hodnotou

10 / 76

Page 11: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Objekty

rozlišení „třídaÿ vs. „objektÿmetody, datové atributyvestavěné typy jsou objekty, použití objektové notacevlastní definice jednoduchých tříd, použití objektů

init

metody, význam selfdatové atributy

11 / 76

Page 12: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Čtení komplexních výrazů

výrazy podle priorit operátorůvolání funkcí „zevnitřÿindexování, tečková notace „zlevaÿ

len(alice.mother.daughters[0].daughters)

data[x][get_value(a, b[3])]

putpixel(get_coordinates(n),change_color(getpixel((x,y))))

12 / 76

Page 13: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Vývojová prostředí, editory

IDLE dostatečný pro jednoduché příklady, do budoucna chceteněco lepšího. . .

žádoucí vlastnosti editoru:syntax highlightingodsazování, párování závorekautocomplete, suggestPEP8 kontrolapodpora laděnípodpora refaktorizace. . .

13 / 76

Page 14: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Vývojová prostředí, editory

příklady různých typů editorů:

IDLE základní editor používaný v tomto kurzuemacs, vi (+příkazová řádka) obecné editory, příp. sespecifickou konfiguracípyCharm „silnýÿ editor speciálně pro Python, vhodnéobzvlášť pro velké projektyipython, jupyter interaktivní použití (prolínání programua výsledků), v prohlížeči

14 / 76

Page 16: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

xkcd: Real Programmers

https://xkcd.com/378/

16 / 76

Page 17: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Správa verzí

naivní přístup:myprogram.py, myprogram2.py,myprogram oct 24.py

myprogram zaloha.py, myprogram pokus.pymyprogram final.py, myprogram really final.py

sofistikovanější přístup – „version controlÿautomatizavaná správa verzípodpora týmové prácemnoho různých řešení: git, cvs, svn, . . .

17 / 76

Page 18: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Git

současné populární řešenídistributed revision controlGitHub – repozitář, (primárně) veřejné projektygitlab.fi.muni.cz – repozitář na FI, umožňuje snadnovytvářet soukromé projekty

18 / 76

Page 19: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Python moduly

užitečné moduly v základní distribuci

math: matematické funkcerandom: náhodná číslasys: „systémovéÿ funkce a proměnnéos: spolupráce s operačním systémemre: regulární výrazydatetime: práce s časemjson: práce se soubory ve formátu JSON

19 / 76

Page 20: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Python knihovny, frameworky

Příklady známých „externíchÿ knihoven:Django: webový frameworkNumPy, SymPy, SciPy: efektivní numerické výpočty,symbolické výpočty, vědecké výpočty, statistikaPandas: práce s daty (především „tabulkovýmiÿ),SQL-like operacematplotlib: tvorba grafů, vizualizacepygame: vývoj herscrapy: „scrapováníÿ dat z webuTensorflow: strojové učení, deep learning

20 / 76

Page 21: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Regulární výrazy

nástroj pro hledání „vzorůÿ v textu

programovánítextové editorypříkazová řádka: např. grepteorie: formální jazyky, konečné automaty

21 / 76

Page 22: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Regulární výrazy

obecně používaný nástrojsyntax velmi podobná ve většině jazyků, prostředíbohatá syntaxnásleduje „ochutnávkaÿ, ukázky základního využití vPythonu

22 / 76

Page 23: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

http://xkcd.com/208/

23 / 76

Page 24: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Znaky a speciální znaky

základní znak „vyhovíÿ právě sám soběspeciální znaky: . ^ $ * + ? { } [ ] \ | ( )

umožňují konstrukci složitějších výrazůchceme, aby odpovídaly příslušnému symbolu ⇒ prefix \

24 / 76

Page 25: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Skupiny znaků

[abc] – jeden ze znaků a, b, c[^abc] cokoliv jiného než a, b, c

\d Čísla: [0-9]\D Cokoliv kromě čísel: [^0-9]

\s Bílé znaky: [ \t\n\r\f\v]\S Cokoliv kromě bílých znaků: [^ \t\n\r\f\v]

\w Alfanumerické znaky: [a-zA-Z0-9_]\W Nealfanumerické znaky: [^a-zA-Z0-9_]

25 / 76

Page 26: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Speciální symboly

. libovolný znak^ začátek řetězce$ konec řetězce| alternativa – výběr jedné ze dvou možností

26 / 76

Page 27: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Opakování

* nula a více opakování+ jedno a více opakování? nula nebo jeden výskyt{m,n} m až n opakování

Pozn. *, + jsou „hladovéÿ, pro co nejmenší počet opakování *?, +?

27 / 76

Page 28: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Příklady

Jaký je význam následujících výrazů?

\d[A-Z]\d \d\d\d\d

\d{3}\s?\d{3}\s?\d{3}

[a-z]+@[a-z]+\.cz

^To:\s*(fi|kit)(-int)?@fi\.muni\.cz

28 / 76

Page 29: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Regulární výrazy v Pythonu

knihovna re (import re)re.match – hledá shodu na začátku řetězcere.search – hledá shodu kdekoliv v řetězci(re.compile – pro větší efektivitu)„raw stringÿ – r’vyraz’ – nedochází k interpretacispeciálních znaků jako u běžných řetězců v Pythonu

29 / 76

Page 30: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Regulární výrazy v Pythonu: práce s výsledkem

match/search vrací „MatchObjectÿ pomocí kteréhomůžeme s výsledkem pracovatpomocí kulatých závorek () označíme, co nás zajímá

30 / 76

Page 31: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Regulární výrazy v Pythonu: práce s výsledkem

>>> m = re.match(r"(\w+) (\w+)", \"Isaac Newton, fyzik")

>>> m.group(0)’Isaac Newton’>>> m.group(1)’Isaac’>>> m.group(2)’Newton’

31 / 76

Page 32: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Regulární výrazy: xkcd

http://xkcd.com/1313/http://www.explainxkcd.com/wiki/index.php/1313:_Regex_Golf

https://regex.alf.nu/

32 / 76

Page 33: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Programovací jazyky

přehledklasifikace, vlastnostihistoriezpůsoby užitíneseriózní postřehy

33 / 76

Page 34: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Interpretace, kompilace

zdrojový kód(program) překladač

strojovýkód

vstupy výstupyběžící

program

zdrojový kód(program)

vstupy

výstupyinterpret

kompilovaný program

interpretovaný program

34 / 76

Page 35: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Programovací jazyky: klasifikace I

nízko-úrovňové

kompilovanénutnost řešit specifika konkrétního systémuexplicitní práce s pamětínáročnější vývoj (nízká efektivita práce)vysoká efektivita programu

vysoko-úrovňové

interpretovanénezávislé na konkrétním systémuvyužití abstraktních datových typůsnadnější vývoj (vysoká efektivita práce)nižší efektivita programu

nikoliv dvě kategorie, ale plynulý přechod; zjednodušeno35 / 76

Page 36: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Programovací jazyky: klasifikace II

zjednodušená klasifikace a použití

nízko-úrovňové C, FORTRAN, . . .vestavěné systémy, rychlé výpočty

objektové C++, Java, C#, . . .klasické aplikace, rozsáhlé systémy

skriptovací Python, PHP, JavaScript, Perl, . . .programování pro web, skriptování, prototypy

deklarativní Prolog, LISP, Haskell, . . .umělá inteligence

36 / 76

Page 37: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

37 / 76

Page 38: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

38 / 76

Page 39: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Historie programovacích jazyků

prapočátky:19. století: Charles Babbage, Ada Lovelace, děrné štítky,. . .30. léta: teoretické základy programování, Turingův stroj,lambda kalkul (Alonzo Church)40. léta: první počítače, strojový kód, asembler

39 / 76

Page 40: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Historie programovacích jazyků

50. a 60. léta: první vysokoúrovňové jazyky (v některýchaplikacích přežívají dodnes)

ALGOLCOBOLFORTRAN – vědecko-technické výpočty (užíván stále)BASIC

40 / 76

Page 41: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

BASIC

„jazyk pro začátečníkyÿrozšířen v 70. a 80. letech na „mikropočítačíchÿvýborný jazyk pro vytvoření špatných programátorskýchnávyků

41 / 76

Page 42: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Historie programovacích jazyků

70. létarozvoj základních paradigmat (imperativní, objektové,funkcionální, logické)C, Pascal, Prolog

80. a 90. létadalší rozvoj jazyků, specializace, nové prvky souvisejícínapř. s nástupem internetuC++, Perl, Haskell, Ruby, R, Java, JavaScript, PHP

současnostnové verze jazykůvznik nových jazyků: Go, Dart, Kotlin, Julia

42 / 76

Page 43: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Rosseta Code

rosettacode.org

stejné problémy řešené v mnoha programovacích jazycích

43 / 76

Page 44: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

If programming languages were . . .

weaponshttps://9gag.com/gag/anXEbe0/if-programming-languages-were-weapons

religionshttp://blog.aegisub.org/2008/12/if-programming-languages-were-religions.html

boatshttp://compsci.ca/blog/if-a-programming-language-was-a-boat/

vehicleshttp://crashworks.org/if_programming_languages_were_vehicles/

killing a dragon:https://blogs.oracle.com/roumen/how-to-kill-a-dragon-with-various-programming-languages

44 / 76

Page 45: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Přehled programovacích jazyků

důležitý aspekt přehledu: různé jazyky mají různé rysy,(ne)výhody a aplikační domény

nedůležitý aspekt přehledu: volba citátů a přirovnání (značněsubjektivní, pro zpestření, . . .)

45 / 76

Page 46: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

C

C would be Judaism – it’s old and restrictive, but most of theworld is familiar with its laws and respects them. The catch is,you can’t convert into it – you’re either into it from the start,or you will think that it’s insanity. Also, when things go wrong,many people are willing to blame the problems of the world onit.

C is a nuclear submarine. The instructions are probably in aforeign language, but all of the hardware itself is optimized forperformance.

46 / 76

Page 47: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

C: užití

nízkoúrovňové programování„blízko hardwaruÿoptimalizace rychlosti výpočtu

47 / 76

Page 48: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

C syntax

mnoho jazyků staví na syntaxi C

základní rozdíly oproti Pythonu:vyznačování bloků kódu, (ne)významnost bílých znakůexplicitně typovaný jazyk

48 / 76

Page 49: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

C syntax: ukázka ciferný součet

#include <stdio.h>int SumDigits(unsigned long long n,

const int base) {int sum = 0;for (; n; n /= base)

sum += n % base;return sum;

}int main() {

printf("%d %d %d\n",SumDigits(1, 10),SumDigits(12345, 10),SumDigits(123045, 10));

return 0;}

49 / 76

Page 50: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Objektové jazyky odvozené od C

C++, C#, Java, . . .

kompilované (Java – bytecode)(většinou) explicitně typovanétypicky „silně objektovéÿvhodné pro „velké projektyÿ

50 / 76

Page 51: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

C++C++ is a set of nunchuks, powerful and impressive whenwielded but takes many years of pain to master and often youprobably wish you were using something else.

51 / 76

Page 52: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Java

Java is a cargo ship. It’s very bulky. It’s very enterprise∼y.Though it can also carry a lot of weight. Will carry a project,but not very fun to drive.

52 / 76

Page 53: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Java: Hello World

public class HelloWorld{public static void main(String[] args){System.out.println("Hello world!");}}

53 / 76

Page 54: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Interpretované, „skriptovacíÿ jazyky

JavaScriptPythonPerlPHPRuby

typické užití: vývoj webu (front-end, back-end), zpracovánídat, skriptování, prototypování, . . .

54 / 76

Page 55: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Eval

interpretované jazyky flexibilnější než kompilované

typická ukázka: příkaz eval„vyhodnocení výrazu v řetězciÿmůže usnadnit práciale nebezpečné (zejména nad uživatelským vstupem)

55 / 76

Page 56: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

JavaScript

JavaScript is a sword without a hilt.

56 / 76

Page 57: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

JavaScript

i přes podobnost názvu nemá s Javou mnoho společnéhointerpretovaný jazyk„jazyk webového front-enduÿ

57 / 76

Page 58: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

PHP

PHP is a bamboo raft. A series of hacks held together bystring. Still keeps afloat though.

58 / 76

Page 59: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Ruby

Ruby is difficult to describe. It’s sleek, sexy, and very fun todrive. Here’s a picture. Very trendy.

59 / 76

Page 60: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

PerlPerl would be Voodoo – An incomprehensible series of arcaneincantations that involve the blood of goats and permanentlycorrupt your soul. Often used when your boss requires you todo an urgent task at 21:00 on friday night.

Perl used to serve the same purpose as Python, but now onlybearded ex-hippies use it.

60 / 76

Page 61: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Deklarativní jazyky

imperativní programování: program je posloupnostinstrukcí („ jakÿ má počítač počítat)deklarativní programování: program je popis toho, co semá udělat

61 / 76

Page 62: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Deklarativní jazyky

logické programování: Prologfunkcionální programování: Lisp, Haskell

typické užití: umělá inteligence, výpočty, „výuka principů,které využijete jindeÿ (funkcionální prvky dnes v mnoha dalšíchjazycích)

62 / 76

Page 63: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Prolog

Prolog is an AI weapon, you tell it what to do, which it doesbut then it also builds some terminators to go back in timeand kill your mom.

63 / 76

Page 64: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Prolog

mother_child(trude, sally).

father_child(tom, sally).father_child(tom, erica).father_child(mike, tom).

sibling(X, Y) :- parent_child(Z, X), parent_child(Z, Y).

parent_child(X, Y) :- father_child(X, Y).parent_child(X, Y) :- mother_child(X, Y).

64 / 76

Page 65: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

LISP

Lisp is a shiv which comes in many forms. Anyone who usesthis is probably crazy and dangerous.

65 / 76

Page 66: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Haskell

https://xkcd.com/1312/

66 / 76

Page 67: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Haskell

bsort :: Ord a => [a] -> [a]bsort s = case _bsort s of

t | t == s -> t| otherwise -> bsort t

where _bsort (x:x2:xs) | x > x2 = x2:(_bsort (x:xs))| otherwise = x:(_bsort (x2:xs))

_bsort s = s

67 / 76

Page 68: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Matematický software

nástroje vyvinuté primárně jako „matematický softwareÿ, aleobsahují obecný programovací jazyk

MathematicaR

68 / 76

Page 69: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Mathematica

Mathematica is a low earth orbit projectile cannon, it couldprobably do amazing things if only anyone could actuallyafford one.

69 / 76

Page 70: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Esoterické programovací jazyky

„karikaturyÿ programovacích jazyků – dobrá karikaturaumožňuje uvědomit si důležité aspekty originálu

BrainfuckAsciiDotsLOLCODEOSTRAJavaWhitespace. . .

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.

/#$<.*-[+]\#1/

HAICAN HAS STDIO?VISIBLE "HAI WORLD!"KTHXBYE

banik pycotryda Ostrava{

rynek(){Konzola.pravit("Toz vitaj") pyco

}}fajront pyco

70 / 76

Page 71: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Jaký jazyk je nejlepší?

neexistuje „univerzálníÿ jazyk, každý má své (ne)výhodylepší otázka: „Jaký jazyk je nejlepší pro danou situaci?ÿ

problém, který řešímetým, který problém řeší„legacy codeÿ

učte se různé jazyky!

Kolik jazyků umíš, tolikrát jsi programátorem.

71 / 76

Page 72: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Popularita jazyků

těžko měřitelné, existuje řada pokusů různými metrikami:vyhledávání na webupočty knížek o jazykuvýskyty v inzerátechdotazy na StackOverflow (a podobných stránkách)projekty na GitHubu (a podobných repozitářích)

72 / 76

Page 73: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Popularita jazyků

na vršku se vesměs vyskytují (abecedně): C, C++, Java,JavaScript, Python

konkrétní příklad indexu popularity:

73 / 76

Page 74: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Co dál?

algoritmy (směr k větší abstrakci)IB002 Algoritmy a datové struktury I – programátorskéúlohy v Pythonunavazující IV003 Algoritmy a datové struktury II

programování podrobněji (směr k nižší abstrakci, jakfunguje počítač)

PB071 Principy nízkoúrovňového programování – jazykC, správa paměti, práce s řetězci

objektově-orientované programováníPB161 Programování v jazyce C++ (a navazující)PB162 Programování v jazyce Java (a navazující)

74 / 76

Page 75: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Co dál?

jiná paradigmataIB015 Neimperativní programování – Haskell, Prolog

více o jazyce Python a jiných jazycíchPV248 Kurz jazyka PythonPV249 Vývoj v jazyce RubyPV178 Úvod do vývoje v C#/.NET (a navazujícípředměty)

teorie programování, vyčíslitelnost a složitost – učí se vrámci různých předmětů (IB102, IB107)

75 / 76

Page 76: IB111 ZÆklady programovÆní Radek PelÆnek 2017 fileVývojovÆ prostłedí, editory płíklady røzných typø editorø: IDLE zÆkladní editor pou¾ívaný v tomto kurzu emacs,

Závěrečné přání

Ať vás programování baví!

76 / 76


Recommended