Migliore risposta
Dai unocchiata a questo meme python
Risposta
Alcuni motivi:
- Ad un certo punto, il cervello umano non può percepire alcun miglioramento della velocità. Se reimplemento il mio codice Python in C e viene eseguito 200 volte più velocemente, lutente non si accorgerà nemmeno se il codice originale è già stato eseguito in 0,01 secondi. Diamine, probabilmente non si accorgeranno nemmeno se il codice originale è stato eseguito solo in 0,1 secondi. La differenza tra 0,1 secondi e 0,0005 secondi è effettivamente impercettibile per la maggior parte delle persone. Anche per le persone che possono effettivamente discernerlo, sembra completamente insignificante.
- La sua lentezza dipende molto da come lo stai usando. Il vero problema è che molte persone soffrono del problema dellottimizzazione prematura. Sì, Python è lento, ma è probabile che il tuo codice non sia effettivamente lento a causa di Python; è lento perché il tuo codice utilizza le strutture di dati e gli algoritmi sbagliati per risolvere un determinato problema. Usare un linguaggio compilato come C nasconde solo il problema. Sì, è più veloce, ma è più veloce solo con un algoritmo inefficiente. Lutilizzo delle strutture di dati e degli algoritmi corretti verrà scalato, praticamente indipendentemente dal linguaggio in cui li si implementa e indipendentemente dalla quantità di dati con cui si finisce per trattare. un linguaggio più veloce creerà solo guadagni a breve termine. Un algoritmo O (n!) è ancora un algoritmo O (n!), anche se lo si implementa in C! Ingegneri veramente esperti lo sanno e possono creare applicazioni che sono più che abbastanza veloci e scalano bene, indipendentemente dal linguaggio di implementazione, perché usano le strutture e gli algoritmi giusti.
- Python è stato (e probabilmente continuerà ad essere) principalmente un linguaggio “collante”; è molto bravo a connettere software che non erano originali lly intendeva lavorare direttamente luno con laltro. È anche utile per automatizzare attività che normalmente verrebbero eseguite a mano. Per questi scopi è più che abbastanza veloce, poiché il lavoro principale avviene comunque altrove. Per linguaggi “più veloci” come il C, questo tipo di lavoro collante è così dolorosamente lento e soggetto a errori di codifica che difficilmente ne vale la pena. Qualsiasi guadagno nella velocità di esecuzione è più che compensato dalla quantità di tempo sprecato dallo sviluppatore per farlo funzionare. Questa è una delle ragioni principali per cui continua ad essere così popolare.
- Alcuni colli di bottiglia sono semplicemente fuori dal controllo diretto del linguaggio di implementazione. IO è comune. Al momento ho a che fare con unapplicazione in cui tutto in Python è più che abbastanza veloce. È solo quando raggiungiamo la rete per interrogare il database che le cose diventano lente. La mia profilazione mostra che anche i pezzi più lenti del codice Python sono completamente insignificanti rispetto al tempo trascorso in attesa sullIO di rete. Ora sto cercando di trovare modi per colpire meno il database (memorizzazione nella cache lato client, evitando controlli di integrità ridondanti sui dati, ecc.). Anche se avessi scritto lapplicazione in assembler, questo sarebbe comunque un problema. Risolvere questo problema con Python è in realtà più veloce e più facile perché viene fornito con librerie di profili (molto robuste) nella libreria standard. Molti linguaggi compilati “veloci” tradizionalmente non vengono forniti con questo fuori dagli schemi.
La morale della storia è: il tempo dello sviluppatore ha la meglio sul tempo della macchina, quasi sempre. Quando questo non lo fa “t tenere, la lentezza è solitamente in grado di individuare determinati colli di bottiglia che possono essere ottimizzati in una libreria o servizio esterno abbastanza facilmente. I tempi in cui qualcosa di veramente non può essere ottimizzato in una libreria o servizio esterno sono sorprendentemente rari. Come in, quasi inesistente.
Uneccezione è se sai fin dallinizio che la tua applicazione richiede il più vicino possibile alle prestazioni in tempo reale e la maggior parte del codice sarà incentrata sullelaborazione. Un buon esempio sono i videogiochi o le applicazioni DCC. È meglio che siano il più vicino possibile al tempo reale o non avrai un utente base di cui parlare.
Tuttavia, a meno che non sia così, molti sviluppatori preferiscono i guadagni di produttività di Python, anche se solo per la prototipazione.