Zaujimavy nastroj, ale zda sa mi, ako keby siel proti samotnej filozofii Pythonu. Aj autor v uvode pise: "Programovací jazyk Python většina programátorů používá mj. i kvůli jeho jednouše použitelnému typovému systému, takže funkci pro součet mohou bez větší námahy zapsat například takto..."
... len aby nasledne ten jednoducho pouzitelny typovy system zahodil a nahradil C-ckovym ekvivalentom.
Neviem si tiez predstavit, ako vyzeraju dalsie zmeny na takom zdrojaku - mam nejaky projekt, co-to urychlim, zistim, ze v dalsej verzii tam potrebujem nieco pomenit, tak potom robim co? Ladim uz na tej C-ckovej urovni? Prepisem spat do cisteho Pythonu? Drzim dve verzie naraz? To uz sa mi zda rozumnejsie drzat C-ckovu funkciu, ktora robi to iste a menit len tu bez dalsich hackov.
v kratkosti - Cython je dost genialni v tom, ze muzes psat cele rozsahle aplikace v cistem Pythonu a potom kdyz zjistis, ze jedna izolovana cast je kriticka, muzes to *snadno* upravit a optimalizovat. Drive se to delalo prepisem napriklad do C nebo C++, jenze to je mnohem vetsi opruz (FFI atd. atd.). A diky Cythonu dostanes optimalizovany kod prakticky zadarmo, vetsinou je to par radku s typovymi informacemi, o kterych stejne programatori vi, co kam posilaji :)
Doplnil jsem příklad pro volání té funkce z Pythonu. Zatím to pro zjednodušení vždycky znovu sestavuje pole s barvovou paletou, ale to se dá odstranit:
https://github.com/tisnik/cython-examples/tree/master/mandelbrot/v4
velmi dobrá otázka. Existuje na to PEP https://github.com/cython/cython/wiki/Python-Typing-Proposal kde celkem rozumně upozorňují na pár problémů i některé způsoby řešení.
Pokud budeme brát v potaz reálný program, tak není, protože naprostá většina programu není výkonově kritická a bude mnohem rychlejší a pohodlnější je napsat v čistém pythonu. Taková optimalizace se vyplatí jen u pár procent kódu. Tak se to v Pythonu dělalo vždy, že ty výkonově náročné věci se napsaly v C jako knihovna. Ale takto je to o dost pohodlnější, člověk si udělá prototyp v pythonu a pak ho zoptimalizuje. Takže za mě to smysl a přínos má, velký.
Výkon nějak nepotřebuji, ale zaujala mě jáná možnost využití. Šlo by to nějak snadno zkompilovat staticky, že by pythoní program byl ve výsledku jeden exe soubor? Stačí nějak upravit parametry makefile, nebo je to naopak utopická představa? Zatím pythoní programu distribuuji s celým pythonem a to je velkej nářez kvůli nějakému malému skriptu.