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í (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.)

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 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):

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

Ale i:

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í

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.

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.

In [1]:
from IPython.lib.display import YouTubeVideo
YouTubeVideo("Wpz79_S9KmM", width=800, height=500, extras=["t=988"])
Out[1]:
In [ ]:
 

Komentáře

Comments powered by Disqus