Nejlepší odpověď
Podívejte se na tento python meme
Odpověď
Několik důvodů:
- V určitém okamžiku lidský mozek nedokáže vnímat žádné zlepšení rychlosti. Pokud znovu implementuji svůj kód Pythonu v jazyce C a běží 200x rychleji, uživatel si nevšimne, zda původní kód již běžel za 0,01 sekundy. Heck, pravděpodobně si nevšimne, pokud původní kód běžel pouze za 0,1 sekundy. Rozdíl mezi 0,1 sekundou a 0,0005 sekundami je pro většinu lidí skutečně nepostřehnutelný. Dokonce i pro lidi, kteří to skutečně dokážou rozeznat, stále se cítí naprosto nepostradatelní.
- Jeho pomalost do značné míry závisí na tom, jak jej používáte. Skutečným problémem je, že mnoho lidí trpí problémem předčasné optimalizace. Ano, Python je pomalý, ale je pravděpodobné, že váš kód není skutečně pomalý kvůli Pythonu; je pomalý, protože váš kód k řešení daného problému používá nesprávné datové struktury a algoritmy. Použití kompilovaného jazyka, jako je C, problém pouze skryje. Ano, je to rychlejší, ale při neefektivním algoritmu je to rychlejší. Používání správných datových struktur a algoritmů se bude škálovat, téměř bez ohledu na to, v jakém jazyce je implementujete, a bez ohledu na to, s jakým množstvím dat se nakonec vypořádáte. rychlejší jazyk vytvoří pouze krátkodobé zisky. Algoritmus O (n!) je stále algoritmus O (n!), i když jej implementujete v jazyce C! Opravdu znalí inženýři to vědí a dokážou vytvářet aplikace, které jsou více než dostatečně rychlé a toto měřítko dobře, bez ohledu na implementační jazyk, protože používají správné struktury a algoritmy.
- Python byl (a pravděpodobně bude i nadále) primárně „lepidlovým“ jazykem; je velmi dobrý při připojování software, který nebyl původem Měl jsem v úmyslu spolupracovat přímo mezi sebou. Je také dobrý v automatizaci úkolů, které by se normálně prováděly ručně. Pro tyto účely je to více než dostatečně rychlé, protože hlavní práce se stejně děje jinde. U „rychlejších“ jazyků, jako je C, je tento typ práce s lepidlem tak bolestně pomalý a náchylný k chybám, že za to sotva stojí. Jakékoli zvýšení rychlosti provádění je více než vyváženo množstvím promarněného času vývojáře stráveného jeho uvedením do provozu. To je jeden obrovský důvod, proč je stále tak populární.
- Některé hrdla lahví jsou prostě mimo přímou kontrolu implementačního jazyka. IO je běžný. Právě teď mám na starosti aplikaci, kde je vše v Pythonu více než dostatečně rychlé. Vše se zpomalí pouze tehdy, když narazíme na síť, abychom vyhledali databázi. Moje profilování ukazuje, že i ty nejpomalejší části kódu Pythonu jsou ve srovnání s časem stráveným čekáním na síťovém IO zcela bezvýznamné. Nyní se snažím najít způsoby, jak zasáhnout databázi méně (ukládání do mezipaměti na straně klienta, vyhýbání se nadbytečným kontrolám zdravého rozumu proti datům atd.). I kdybych napsal aplikaci v assembleru, stále by to byl problém. Oprava tohoto problému s Pythonem je ve skutečnosti rychlejší a jednodušší, protože přichází s (velmi robustními) profilovacími knihovnami ve standardní knihovně. Mnoho „rychlých“ kompilovaných jazyků s tím tradičně nepřichází z krabice.
Morálka příběhu je: vývojářský čas téměř vždy převyšuje strojový čas. Když to tak není držet, pomalost je obvykle přesně určitá určitá úzká místa, která lze dostatečně snadno optimalizovat do externí knihovny nebo služby. Časy, kdy něco opravdu opravdu nelze optimalizovat do externí knihovny nebo služby, jsou neuvěřitelně vzácné. Stejně jako téměř neexistující.
Jedinou výjimkou je, když od začátku víte, že vaše aplikace vyžaduje co nejblíže výkonu v reálném čase a většina kódu bude výpočetně centrická. Dobrým příkladem jsou videohry nebo aplikace DCC. Ty by měly být co nejblíže real-time, jak je to možné, nebo nebudete mít uživatele základ, o kterém se dá mluvit.
Pokud tomu tak však není, mnoho vývojářů dává přednost zvýšení produktivity Pythonu, i když jen pro prototypování.