Cel mai bun răspuns
Verificați acest meme python
Răspuns
Câteva motive:
- La un moment dat, creierul uman nu poate percepe nicio îmbunătățire a vitezei. Dacă îmi implementez din nou codul Python în C și rulează cu 200 de ori mai repede, utilizatorul nu va observa niciodată dacă codul original a rulat deja în 0,01 secunde. Heck, probabil că nu au câștigat nici măcar dacă codul original a rulat doar în 0,1 secunde. Diferența dintre 0,1 secunde și 0,0005 secunde este efectiv imperceptibilă pentru majoritatea oamenilor. Chiar și pentru persoanele care îl pot discerne, se simte complet complet de neremarcabil.
- Lentitudinea sa depinde foarte mult de modul în care îl utilizați. Adevărata problemă este că mulți oameni suferă problema optimizării premature. Da, Python este lent, dar este posibil ca codul dvs. să nu fie de fapt lent din cauza Python; este lent deoarece codul dvs. folosește structuri de date greșite și algoritmi pentru a rezolva o problemă dată. Utilizarea unui limbaj compilat precum C ascunde doar problema. Da, este mai rapid, dar este mai rapid doar la un algoritm ineficient. Folosirea structurilor și algoritmilor de date corecți se va scala, practic indiferent în ce limbă le implementați și indiferent de cât de multe date ajungeți să vă ocupați. un limbaj mai rapid va crea numai câștiguri pe termen scurt. Un algoritm O (n!) este totuși un algoritm O (n!), chiar dacă îl implementați în C! Inginerii cu adevărat cunoscuți știu acest lucru și pot face aplicații suficient de rapide și această scară este bună, indiferent de limbajul de implementare, deoarece utilizează structurile și algoritmii potriviți.
- Python a fost (și va continua să fie) în primul rând un limbaj „adeziv”; este foarte bun la conectare software-uri care nu erau originale Am menit să lucrez direct unul cu celălalt. De asemenea, este bun la automatizarea sarcinilor care în mod normal ar fi făcute manual. În aceste scopuri, este mai mult decât rapid, deoarece lucrarea principală se întâmplă oricum în altă parte. Pentru limbaje „mai rapide”, cum ar fi C, acest tip de lucru cu lipici este atât de dureros de lent și predispus la erori, încât nu merită nici măcar efortul. Orice câștiguri în viteza de execuție sunt mai mult decât compensate de cantitatea de timp pierdut de dezvoltator petrecut pentru ca acesta să funcționeze. Acesta este un motiv imens pentru care continuă să fie atât de popular.
- Unele gâturi de sticlă sunt pur și simplu în afara controlului direct al limbajului de implementare. IO este unul comun. Am de-a face cu o aplicație în momentul în care totul în Python este mai mult decât suficient de rapid. Abia când accesăm rețeaua pentru a interoga baza de date, lucrurile devin lente. Profilarea mea arată că chiar și cele mai lente bucăți ale codului Python sunt complet nesemnificative în comparație cu timpul petrecut așteptând pe IO-ul rețelei. Încerc acum să găsesc modalități de a accesa mai puțin baza de date (stocarea în cache a clientului, evitarea oricăror controale de sănătate redundante împotriva datelor etc.). Chiar dacă aș scrie aplicația în asamblare, aceasta ar fi totuși o problemă. Rezolvarea acestei probleme cu Python este de fapt mai rapidă și mai ușoară, deoarece vine cu biblioteci de profilare (foarte robuste) din biblioteca standard. Multe limbi compilate „rapide” în mod tradițional nu vin cu acest lucru din cutie.
Morala poveștii este: timpul dezvoltatorului depășește timpul mașinii, aproape întotdeauna. Când acest lucru nu este rețineți, încetineala este de obicei capabilă să identifice anumite blocaje care pot fi optimizate într-o bibliotecă sau serviciu extern suficient de ușor. Momentele în care ceva cu adevărat nu poate fi optimizat într-o bibliotecă sau serviciu extern sunt uimitor de rare. Ca și în cazul, aproape inexistent.
O excepție este dacă știți de la început că aplicația dvs. necesită cât mai aproape de performanțele în timp real și majoritatea codului va fi centrat pe calcul. Un exemplu bun îl reprezintă jocurile video sau aplicațiile DCC. Acestea sunt mai bine cât mai aproape de timp real sau nu vei avea un utilizator bază despre care să vorbim.
Cu toate acestea, cu excepția cazului în care acesta este cazul, mulți dezvoltatori preferă câștigurile de productivitate ale Python, chiar dacă numai pentru prototipare.