PDA

View Full Version : [Python] - Informazioni


gugoXX
16-03-2008, 10:04
Cercando quanto piu' possibilimente di non scatenare Flame o altro, dato che non e' proprio il caso,
Non so assolutamente nulla di Python. Conosco molti altri linguaggi, delle piu' svariate piattaforme.

Sto leggendo da un paio di giorni che il Python permetterebbe di risolvere problemi (alcuni problemi?) in modo molto piu' semplice e snello rispetto ad altri linguaggi. Vorrei avere qualcosa in piu' nel mio bagaglio culturale, anche solo per risolvere piu' in fretta quei tipi di problemi.
Piu' in fretta per me significa meno linee di codice, che normalmente implica anche meno errori.
Ho cercato tra le guide, ma non ho trovato quanto cercavo.
Potrebbe essere possibile avere un elenco di queste funzionalita' altrimenti difficili da ottenere negli altri linguaggi?
Una sorta di confronto.
E' ovvio che quasi tutto si puo' fare con quasi tutti i linguaggi. Tutto si puo' fare I.E. in assembly, ma non ritengo che sia lo strumento piu' adatto.
Mi piacerebbe conoscere cio' che potrebbe distringuere Python dagli altri (dai piu' comuni almeno)
Qualcosa tipo: quando ti trovi in questa situazione, in Java, in C etc non puoi non fare cosi'. In Python invece puoi fare cosa'...
No flame, per favore.

^TiGeRShArK^
16-03-2008, 12:53
+ che altro io fino ad ora ho usato sia python che ruby per fare degli sciptini per risolvere in maniera mirata e semplice dei piccolo problemi che mi capitavano sottomano...
Ad esempio quand'ero a roma avevo fatto uno script in python che prendeva l'output dal cvs, lo parsava, lo formattava e lo inviava ad uno scriptino in ruby che accedeva a javaRT e aggiornava automaticamente il trouble ticket con tutte le informazioni necessarie....
In generale, per quello che ho potuto vedere io, mi trovo meglio con ruby per quanto riguarda la programmazione verso web & co. e con python per operazioni su files e programmi che devono girare in locale.
Comunque tra i due ruby mi piace molto di + a livello di "linguaggio" vero e proprio.
ah..
dimenticavo..
una limitazione imho piuttosto grave di entrambi i linguaggi e la mancanza del multi-threading nelle loro reference implementation scritte in c++....
In pratica anche scrivendo un programma multi-threaded con quei linguaggi, alla fine girerà sempre sul thread dell'interprete.
Però altre implementazioni, ad esempio jpython e jruby supportano tranquillamente il multi-threading.
Altro dettaglio è che entrambi i linguaggi, essendo interpretati, sono meno prestanti di linguaggi compilati staticamente o che utilizzano un JIT.
In particolare ruby, fino alla versione 1.8.6 era molto + lento di python per certe operazioni.
Dalla versione 1.9.0 in poi tale divario si è assottigliato ulteriormente.
Certo che oggi come oggi però la velocità di un linguaggio dovrebbe essere praticamente l'ultima cosa di cui preoccuparsi..
Molto + importante la velocità cui è possibile scrivere codice :p

cdimauro
17-03-2008, 08:45
Confrontare Python con gli altri linguaggi di programmazione su due piedi non lo trovo pratico: sempre meglio sperimentare e constatare le differenze.

Guarda qui intanto http://en.wikipedia.org/wiki/Comparison_of_programming_languages#Expressiveness

come vedi Python ha il più elevato indice di "espressività" (cioé permette di risparmiare righe di codice e, quindi, tempo di sviluppo).

Se vuoi confrontarlo con gli altri linguaggi potresti prendere questa http://shootout.alioth.debian.org/ suite di test, che ti permette di effettuare un confronto con gli altri linguaggi.
Ad esempio puoi prendere la pagina dedicata a Python http://shootout.alioth.debian.org/debian/python.php e clickare sui link della colonna "Program & Logs" per visualizzare il sorgente in questo linguaggio. Puoi fare lo stesso con un altro linguaggio, e poi effettuare un confronto.

E' un confronto che lascia il tempo che trova (anche perché dipende dall'abilità e delle capacità di chi ha scritto quei sorgenti), ma almeno hai qualcosa.

Molto meglio, comunque, fare qualche prova da solo, magari seguendo una guida introduttiva, e tastare con mano quanto sia semplice e produttivo lavorare con questo linguaggio. ;)

dupa
17-03-2008, 08:56
Piu' in fretta per me significa meno linee di codice, che normalmente implica anche meno errori.


Questa implicazione è falsa.


come vedi Python ha il più elevato indice di "espressività" (cioé permette di risparmiare righe di codice e, quindi, tempo di sviluppo).


idem.

banryu79
17-03-2008, 08:59
Questa affermazione è falsa.

Potresti spiegarci il perchè? :confused:

cdimauro
17-03-2008, 09:04
Questa implicazione è falsa.

idem.
Ti sei dimenticato di leggere il termine "normalmente" (o, anche "mediamente").

dupa
17-03-2008, 09:08
Ti sei dimenticato di leggere il termine "normalmente" (o, anche "mediamente").
Nella tua non c'era :p

Potresti spiegarci il perchè? :confused:

Se hai mai visto demo asm, ti ritrovi con poche righe di codice, totalmente incomprensibili (tranne forse per chi le ha scritte) che fanno cose assurde :)

gugoXX
17-03-2008, 09:13
Nella tua non c'era :p



Se hai mai visto demo asm, ti ritrovi con poche righe di codice, totalmente incomprensibili (tranne forse per chi le ha scritte) che fanno cose assurde :)

Proprio li' sta il punto.
Meglio scrivere 200 righe di codice ASM, oppure
qsort(pippo,pluto,paperino);

cdimauro
17-03-2008, 09:20
Nella tua non c'era :p
Se vogliamo cavillare, sicuramente. Ma i casi particolari non tolgono nulla alla "norma". ;)
Se hai mai visto demo asm, ti ritrovi con poche righe di codice, totalmente incomprensibili (tranne forse per chi le ha scritte) che fanno cose assurde :)
Visto che ho passato buona parte della mia vita a scrivere codice assembly, posso smentirti: sono necessarie (normalmente) PARECCHIE (anche centinaia) righe di codice per realizzare cose che con linguaggi come Python risolvi con una sola istruzione...

Le demo che citi sono casi MOLTO particolari: sono contest in cui, oltre all'efficienza del codice (che non puoi avere con Python, anche se esistono dei buoni compilatori JIT), richiedono l'occupazione di poco spazio (e Python richiede il caricamento della virtual machine).

"Per tutto il resto c'è Python..." - (C) 2008 cdimauro :p

dupa
17-03-2008, 09:33
Personalmente faccio molti meno errori programmando in Java rispetto a quando programmo in PHP, anche se quando programmo in Java scrivo più righe di codice rispetto a PHP.

Poi ad esempio non mi piace non avere variabili non tipizzate, trovo terribile fare nomi di variabili variabili (come PHP consente), gestione degli include alla "cacchio" come fa PHP...

Probabilmente queste feature del linguaggio consentono anche di scrivere meno righe di codice, ma, a parte il fatto che scrivere meno righe nn vuole dire impiegare meno tempo, e sicuramente per fare meno errori è meglio avere un codice leggibile piuttosto che un codice breve.

Comunque personalmente il mio tempo da programmmatore lo passo per il 90% su Java EE, per il 9% su PHP e per l'1% a fare scriptini del cacchio tipo bash.

Sono un fan boy di google, e sicuramente se loro usano Python ci sarà un perchè, ma personalmente non saprei dove collocare python nel mio stack di linguaggi.

^TiGeRShArK^
17-03-2008, 09:34
Personalmente faccio molti meno errori programmando in Java rispetto a quando programmo in PHP, anche se quando programmo in Java scrivo più righe di codice rispetto a PHP.

Poi ad esempio non mi piace non avere variabili non tipizzate, trovo terribile fare nomi di variabili variabili (come PHP consente), gestione degli include alla "cacchio" come fa PHP...

Probabilmente queste feature del linguaggio consentono anche di scrivere meno righe di codice, ma, a parte il fatto che scrivere meno righe nn vuole dire impiegare meno tempo, e sicuramente per fare meno errori è meglio avere un codice leggibile piuttosto che un codice breve.

Comunque personalmente il mio tempo da programmmatore lo passo per il 90% su Java EE, per il 9% su PHP e per l'1% a fare scriptini del cacchio tipo bash.

Sono un fan boy di google, e sicuramente se loro usano Python ci sarà un perchè, ma personalmente non saprei dove collocare python nel mio stack di linguaggi.
vabbè..
e grazie...
PHP non è un linguaggio :asd:

EDIT: sicuramente gli scriptini del cacchio sono molto indicati per python :p
io lo usavo principalmente per quello....

cdimauro
17-03-2008, 09:37
Personalmente faccio molti meno errori programmando in Java rispetto a quando programmo in PHP, anche se quando programmo in Java scrivo più righe di codice rispetto a PHP.

Poi ad esempio non mi piace non avere variabili non tipizzate, trovo terribile fare nomi di variabili variabili (come PHP consente), gestione degli include alla "cacchio" come fa PHP...

Probabilmente queste feature del linguaggio consentono anche di scrivere meno righe di codice, ma, a parte il fatto che scrivere meno righe nn vuole dire impiegare meno tempo, e sicuramente per fare meno errori è meglio avere un codice leggibile piuttosto che un codice breve.

Comunque personalmente il mio tempo da programmmatore lo passo per il 90% su Java EE, per il 9% su PHP e per l'1% a fare scriptini del cacchio tipo bash.

Sono un fan boy di google, e sicuramente se loro usano Python ci sarà un perchè, ma personalmente non saprei dove collocare python nel mio stack di linguaggi.
Vabbé, se mi prendi PHP come "linguaggio" ci credo... :asd:

Con Python hai codice più breve E leggibile (oltre che manutenibile), e al posto di quella porcata di immagine di include del PHP hai i moduli: è sufficiente per te? :O