Proč Python?

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)

Univerzální programovací jazyk s bohatou výbavou

  • objektové programování, funkcionální programování
  • dobře č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.)

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
  • IPython + Jupyter - interaktivní prostředí

...

Univerzální knihovna

  • Potřebujete získat data netradič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 36 000 balíčků (různé kvality).

Vazba na další jazyky

Kvůli rychlosti (a existenci knihoven):

  • C/C++ (Python C API, modul ctypes, Cython, SWIG, boost::python)
  • FORTRAN (f2py)

Ale i:

Nástroje

  • IPython - včetně IPython notebooku
  • 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í

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.
  • Matplotlib zaostává v interaktivitě za grafy v MATLAB.

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 souhrnou přednášku State of the Tools od Jake VanderPlase.

In [7]:
from IPython.lib.display import YouTubeVideo
YouTubeVideo("5GlNDD7qbP4", width=800, height=500)
Out[7]:

Komentáře

Comments powered by Disqus