1. Proč Python?#
1.1. Licence#
Python je zadarmo (free as in “free beer”)
U Pythonu (a navázaných knihoven) jsou k dispozici zdrojové kódy (free as in “free speech”)
Licence je svobodná i v tom, že umožňuje využít Python v uzavřených komerčních projektech (není virální jako GPL)
Plné znění licence viz http://docs.python.org/3/license.html
Z toho plyne několik důsledků:
Nižší náklady
Odpadají problémy s licenčním serverem (off-line použití, žádný boj mezi uživateli o volné licence)
Možnost sdílet kód s kýmkoliv (aniž by si musel opatřovat komerční SW)
Možnost zjistit, jak funguje konkrétní funkce přímo ze zdrojového kódu (ne černá skříňka jako v případě většiny komerčního SW)
1.2. Univerzální programovací jazyk s bohatou výbavou#
objektové programování, funkcionální programování (tak trochu :)
výborně čitelná syntaxe
škálovatelnost: jednoduché skripty i složité aplikace s mnoha moduly (N.B.: jmenné prostory)
automatické jednotkové testování
snadná automatická dokumentace vlastního kódu
široká uživatelská základna, dostupná pomoc (google, http://stackoverflow.com)
Python je široce žádaná dovednost, na rozdíl od dedikovaných vědeckých jazyků (IDL, Matlab apod.)
1.3. Bohatá škála knihoven pro vědeckou práci#
Numpy - rychlé maticové operace
Scipy - soubor všech různých vědeckých nástrojů
Matplotlib - interaktivní grafy, možnost výstupu v kvalitě pro publikace
SymPy - symbolické manipulace
Pandas - analýza data
…
Univerzální knihovna#
Potřebujete získat data více či méně tradičním způsobem (z webu, z divného formátu souboru)?
Potřebujete zpracovávat komplikovaným způsobem text?
Potřebujete ke svému programu GUI?
Chcete mít webové rozhraní?
Chcete si poslat mail, až bude výpočet dokončen?
Potřebujete pustit ze svého programu jiný proces a komunikovat s ním?
Na všechny tyto úkoly v Pythonu najdete knihovnu (často již ve standardní knihovně), zatímco ve specializovaném vědeckém SW (MATLAB, IDL) byste tento problém řešili obtížně.
Viz databáze na PyPi, která obsahuje přes 500 000 balíčků (různé kvality).
Vazba na další jazyky#
Kvůli rychlosti (a existenci knihoven):
Ale i:
MATLAB (Matlab Engine for Python, python-matlab-bridge, mlabwrap)
IDL (pIDLy)
R (RPy)
Java (Jython)
1.4. Nástroje#
IPython - konzole
Jupyter - notebook, lab, console
Sphinx - vytváření všech možných druhů dokumentace (nejčastěji webová) ze zdrojových kódů
pip, virtualenv - správa balíčků a vlastních nezávislých prostředí
1.5. Nedostatky#
Obtížné vytvořit aplikaci spustitelnou bez závislostí kdekoliv (“EXE”).
Jazyk s dynamickým typováním -> omezená statická kontrola kódu.
Obecně pomalý oproti kompilovanému kódu (proto se používají knihovny v C).
Vícevláknové aplikace v CPythonu - z mnoha důvodů vlastní kód Pythonu běží vždy jen v jednom vláknu. Opravdu paralelně tak můžou běžet jen další knihovny volané z Pythonu.
1.6. Další odkazy#
Pochvalné#
Kritické#
1.7. Vědecká Python komunita je velká a aktivní#
Na internetu najdete mnoho (obvykle open-source) Python nástrojů pro vědce. Navíc existují konference jako (Euro)SciPy, PyData aj.
Podívejte se např. na nedávnou úvodní přednášku na SciPy 2021 od Dr Fernando Perez.
from IPython.lib.display import YouTubeVideo
YouTubeVideo("Wpz79_S9KmM", width=800, height=500, extras=["t=988"])