Paras vastaus
Tarkista tämä python-meemi
Vastaus
Muutama syy:
- Tietyssä vaiheessa ihmisen aivot eivät voi havaita nopeuden parannuksia. Jos toteutan Python-koodini uudelleen C: ssä ja se toimii 200x nopeammin, käyttäjä ei edes huomaa, jos alkuperäinen koodi juoksi jo 0,01 sekunnissa. Helvetti, he todennäköisesti eivät edes huomaa, jos alkuperäinen koodi juoksi vain 0,1: ssä sekuntia. 0,1 sekunnin ja 0,0005 sekunnin välinen ero on käytännössä huomaamaton useimmille ihmisille. Jopa ihmisille, jotka voivat todella erottaa sen, se silti tuntuu täysin merkityksettömältä.
- Sen hitaus riippuu suuresti siitä, miten käytät sitä. Todellinen asia on, että monet ihmiset kärsivät ennenaikaisen optimoinnin ongelmasta. Kyllä, Python on hidas, mutta on todennäköistä, että koodi ei todellakaan ole hidas Pythonin takia; se on hidasta, koska koodisi käyttää vääriä tietorakenteita ja algoritmeja tietyn ongelman ratkaisemiseen. Käännetyn kielen kuten C käyttäminen vain piilottaa ongelman. Kyllä, se on nopeampi, mutta nopeampi vain tehottomalla algoritmilla. Oikeiden tietorakenteiden ja algoritmien käyttö skaalautuu, melkein riippumatta siitä, millä kielellä käytät niitä, ja riippumatta siitä, kuinka paljon dataa päädyt käsittelemään. nopeampi kieli tuottaa vain lyhytaikaisia voittoja. O (n!) -algoritmi on edelleen O (n!) -algoritmi, vaikka otat sen käyttöön C: ssä! Todella asiantuntevat insinöörit tietävät tämän ja voivat tehdä sovelluksia, jotka ovat yli tarpeeksi nopeita ja tämä mittakaava on toteutuskielestä riippumatta, koska ne käyttävät oikeita rakenteita ja algoritmeja.
- Python on ollut (ja tulee todennäköisesti olemaan) ensisijaisesti ”liimakieli”; se on erittäin hyvä yhteyden muodostamisessa ohjelmistot, jotka eivät olleet alkuperäisiä Tarkoitin työskennellä suoraan keskenämme. Se on myös hyvä automatisoimaan tehtäviä, jotka normaalisti suoritettaisiin käsin. Näihin tarkoituksiin se on enemmän kuin tarpeeksi nopea, koska pääteos tapahtuu joka tapauksessa muualla. ”Nopeammille” kielille, kuten C, tämän tyyppinen liimatyö on niin tuskallisen hidasta ja virheitä altis koodaamaan, että se on tuskin edes vaivan arvoinen. Suoritusnopeuden mahdolliset voitot kompensoivat enemmän kuin kehittäjän hukkaan kuluva aika, joka kuluu sen saamiseen töihin. Tämä on yksi valtava syy, miksi se on edelleen niin suosittu.
- Jotkut pullonkaulat eivät yksinkertaisesti ole suoran kielen hallinnassa. IO on yleinen. Olen tekemisissä sovelluksen kanssa, jossa kaikki Pythonissa on enemmän kuin tarpeeksi nopeaa. Vasta kun osumme verkkoon kyselemään tietokantaa, asiat hidastuvat. Profilointini osoittaa, että Python-koodin edes hitaimmat kappaleet ovat täysin merkityksettömiä verrattuna IO-verkossa odottamiseen käytettyyn aikaan. Yritän nyt löytää tapoja päästä tietokantaan vähemmän (asiakaspuolen välimuistiin tallentaminen, välttäen tarpeettomia terveystarkastuksia tietoihin jne.). Vaikka kirjoitin sovelluksen assemblerissa, tämä olisi silti ongelma. Tämän ongelman korjaaminen Pythonilla on itse asiassa nopeampaa ja helpompaa, koska sen mukana tulee (erittäin vankka) profilointikirjastoja vakiokirjastossa. Monilla ”nopeasti” käännetyillä kielillä ei perinteisesti tule tätä pakkauksesta.
Tarinan moraali on: kehittäjän aika työntää koneen aikaa melkein aina. Kun se ei pitoisuus, hitaus pystyy yleensä tunnistamaan tietyt pullonkaulat, jotka voidaan optimoida riittävän helposti ulkoiseen kirjastoon tai palveluun. Ajat, jolloin jotain todella ei voida optimoida ulkoiseksi kirjastoksi tai palveluksi, ovat hämmästyttävän harvinaisia. Kuten tavallaan, sitä ei ole lainkaan.
Yksi poikkeus on, jos tiedät alusta alkaen, että sovelluksesi vaatii mahdollisimman lähellä reaaliaikaista suorituskykyä ja suurin osa koodista on laskentakeskeinen. Hyvä esimerkki ovat videopelit tai DCC-sovellukset. Nämä ovat parempia mahdollisimman lähellä reaaliaikaista tai sinulla ei ole käyttäjää perusta puhua.
Ellei näin ole, monet kehittäjät suosivat kuitenkin Pythonin tuottavuuden kasvua, vaikka vain prototyyppien luomiseen.