2009/1/22 Pietro Battiston <too...@email.it>: > O intendi solo che è meno efficiente nei calcoli (ad esempio del C)? E > questo ha qualche relazione con il fatto che sia o meno ottimizzabile?
L'efficienza è una bella sfida. Se per efficienza intendi il numero di operazioni che riesce a fare in un determinato tempo, allora più il linguaggio è facile da utilizzare per i programmatori meno efficiente risulta la sua esecuzione. Se dovessimo fare una classifica, dal più efficiente a quello più "pesante", sarebbe qualcosa del tipo: Assembler -> C -> C++ -> Python Ho semplificato molto. In realtà l'efficienza dipende da tanti fattori, e visto che i programmatori sono persone umane più un sistema è pulito meno errori di programmazione si fanno, e più è facile concentrarsi sulle cose veramente importanti. Ritornando al discorso precedente, è meglio concentrarsi nel fare un algoritmo che faccia meno cicli possibile, piuttosto che scrivere tonnellate di righe solo per gestire una variabile e lo spazio che occupa in memoria. Molti programmatori costretti a concentrarsi su Malloc e puntatori finivano poi per fare funzioni che venivano richiamate migliaia di volte più dello stretto necessario, ed in questi casi per pareggiare devi avere un linguaggio mille volte più veloce! Questo aumenta con l'aumentare della complessità dei progetti: un linguaggio pulito ti permetterà di organizzare meglio il codice e questo si rifletterà anche sulle performance, perché meno lavoro deve fare il programmatore per la gestione che sta attorno agli algoritmi più lavoro potrà dedicare all'ottimizzazione delle parti importanti. Inoltre i programmi oggi dipendono da tante cose, come ad esempio l'accesso al Database, all'I/O, ecc. Utilizzare delle funzioni di alto livello per la gestione dei tipi di file specifici, ad esempio, ti permette di riutilizzare il codice più efficiente (a meno che non si pensi di poterlo migliorare, difficilmente si riesce a fare di meglio di quello che fanno le librerie standard). Se invece per efficienza intendiamo il tempo necessario per sviluppare l'applicazione, allora il Python ha pochi rivali. Basta confrontare gli "Hello World!" Dai un'occhiata qui: http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/ Il python con psyco è circa 10 volte più lento del codice in C++ scritto con il doppio delle righe. praticamente tutti i linguaggi sono più complessi del python. Finché il programma è di 40 righe la differenza di performance sarà sempre a vantaggio dei linguaggi come il C++ che lavorano a più basso livello, ma quando sono 10'000 o più, sono sicuro che la stessa attenzione all'ottimizzazione viene meno e quindi il divario diminuisce, a vantaggio del linguaggio che dimezza le linee di codice e quindi anche il rischio di commettere errori. -- Alessandro Ronchi Skype: aronchi http://www.alessandroronchi.net SOASI Soc.Coop. - www.soasi.com Sviluppo Software e Sistemi Open Source Sede: Via Poggiali 2/bis, 47100 Forlì (FC) Tel.: +39 0543 798985 - Fax: +39 0543 579928 Rispetta l'ambiente: se non ti è necessario, non stampare questa mail _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python