|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Oct 2010
Messaggi: 15
|
[Python] A caccia del Pitone
Salve popolo,
prima di incominciare chiedo scusa a tutti per il titolo, forse un po' eccentrico, ma è stato più forte di me Mi piacerebbe conoscere l'esperienza di chi lavora col Python o, quantomeno, ne conosce le caratteristiche. Gli aspetti a cui maggiormente sono interessato sono: a) Pregi e difetti in generale b) Protabilità\compatibilità dei suoi prodotti sui vari OS c) Come e con cosa è preferibile compilarlo d) Perché Python piuttosto che un altro linguaggio orientato ad oggetti Grazie a tutti coloro che parteciperanno alla discussione sperando che possa servire anche ad altri che vogliano avvicinarsi all'argomento Ultima modifica di Alekinos : 11-01-2011 alle 23:33. |
|
|
|
|
|
#2 | ||||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
- è sintetico - semplice da imparare e da scrivere; - facile da leggere (ma scrivere brutto codice in Python è sempre possibile, come per qualunque altro linguaggio; solo che oltre certi limiti non si può andare); - ti obbliga indentare il codice (niente codice modello "albero di natale / dente si sega"; - la differenza fra codice Python e pseudocodice è irrisoria; - tutto è un oggetto, ma è possibile "simulare" diversi paradigmi di programmazione oltre a quello a oggetti (quindi anche la classica strutturata/imperativa e funzionale); - supporti alcuni comodi costrutti della programmazione funzionale (iteratori, generatori, comprehension); - c'è la metaprogrammazione; - ci sono i decoratori; - ha diversi tipi "base" (compresi gli insiemi!) che coprono la stragrande maggioranza delle esigenze comuni; - ha una buona e abbastanza completa libreria in dotazione; - è fortemente tipizzato (non puoi sommare stringhe e numeri, ad esempio); - è modulare (nozione di modulo/unit e di package); - è interattivo (puoi sperimentare idee scrivendo provando al volo pezzi di codice); - può utilizzare facilmente librerie dinamiche scritte in qualunque altro linguaggio; - è pensato per essere esteso (con codice scritto in altri linguaggi) ed "embeddato". Difetti: nessuno. - è più lento di altri linguaggi staticamente tipizzati e compilati, a volte anche di due ordini di grandezza; - odio l'operatore != per la disuguaglianza (avrei preferito il <>), ma ormai dobbiamo tenercelo; - i booleani sono derivati dalla classe int, per cui si possono eseguire tutte le classiche operazioni con gli interi; - l'embedding e l'estensione richiedono più codice e attenzione rispetto ad altri linguaggi (come Lua), a causa della maggior complessità interna. Se mi viene in mente altro editerò il post. Quote:
E' possibile trovare VM Python anche per sistemi più rari (come AROS), anche se non godono della stessa cura e funzionalità. Quote:
Quote:
Comunque dal punto di vista che t'interessa tecnicamente è preferibile per i seguenti motivi: - ha l'ereditarietà multipla delle classi (quindi "simulare" di tutto; anche l'ereditarietà multipla tramite interfacce); - ha il duck typing per cui non è strettamente necessario che un oggetto derivi da una classe o implementi una determinata interfaccia per poter dire "lo uso come stringa, file, o altro"; è sufficiente che esponga i metodi che ci si aspetta con gli stessi parametri (esempio: i metodi read e write per scrivere "su file"); - puoi modificare, aggiungere e togliere metodi e attribuiti dinamicamente; - puoi modificare, aggiungere e togliere classi dinamicamente dall'elenco delle classi da cui eredita la tua; - puoi creare nuove classi a runtime, e costruirtele come ti pare; - hai le metaclassi per manipolare in maniera controllata e accurata la creazione di una classe (argomento abbastanza avanzato); - hai i decoratori di classe (che semplificano molto il punto precedente, oltre che a renderlo più elegante e di più semplice comprensione); - tutto è pubblico (niente visibilità privata/protetta/pubblica), a parte per alcuni meccanismi di importazione di moduli e accesso alle classi (ma è roba molto avanzata). Anche qui, se mi viene in mente qualcos'altro, editerò il post. Quote:
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
||||||
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12939
|
I difetti più grandi secondo me sono principalmente le prestazioni e poi la mancanza di un IDE completo (magari senza bug) che integri anche un designer di interfacce.
E' anche vero che con PyQt scrivere l'interfaccia manualmente non è un grosso sforzo, ma alla lunga si sente. Per il resto è un linguaggio eccezionale IMHO, ho cominciato a lavorarci "seriamente" per la tesi e mi ha impressionato. Una caratteristica dei linguaggi dinamici e che puoi di fatto lavorare con la meta-programmazione, ad esempio puoi far interpretare codice a run-time e magari creare una funzione (tramite le lambda) al volo Ad esempio, sto creando un filtro e le condizioni di filtraggio devono essere impostate/create a run-time, con python è molto facile passare ad una prima funzione una stringa con la condizione, tipo "x > 20" e il programma a run-time crea una funzione che poi potrà essere usata in un ciclo per testare ripetutamente quella condizione senza perdere troppo tempo. C'è da dire che spiazza un po' chi ha esperienza di linguaggi C++/Java, dove magari si è un po' più attenti alle prestazioni e quindi si è tentati di fare delle pseudo-ottimizzazioni poco inclini alla natura di python (spesso partendo da premesse sbagliate). Ultima modifica di WarDuck : 11-01-2011 alle 12:10. |
|
|
|
|
|
#4 | |||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
Quote:
Certo, con linguaggi come Python lo si sente molto di più proprio perché abbastanza diverso da quelli a cui siamo stati abituati. Nell'approccio alla risoluzione dei problemi mi rendo conto che ho una visione molto diversa da quella che avevo prima.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|||
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
A proposito di IDE per Python, le funzionalità di refactoring sono adeguate alle esigenze che ti possono capitare, nella tua esperienza?
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Nella mia esperienza sì, per l'uso che ne faccio sono sufficienti, ma oggettivamente le funzionalità esposte sono poche e andrebbero ampliate.
In ogni caso c'è da dire che tirare fuori strumenti di rifattorizzazione che tenga fermamente fede a questo nome è difficile in Python, perché si tratta di un linguaggio dinamico. Me ne sono accorto nel tempo: più sono passato a utilizzare la sua dinamicità, e più le righe "segnate in rosso" (presunti errori) sono aumentate, pur essendo i sorgenti sicuramente corretti. E' il prezzo da pagare per ottenere una produttività elevata. D'altra parte NetBeans ha pure un buon supporto per lo unit testing in Python, per cui il lapis della maestra non mi preoccupa più di tanto.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#7 |
|
Junior Member
Iscritto dal: Oct 2010
Messaggi: 15
|
Bene,
sono contento di aver avviato una discussione utile e, spero, interessante. Grazie a tutti voi, con particolare riguardo a Mauro, e permettetemi di dedicarvi Five to One dei mitici Doors che sto ascoltando mentre vi scrivo Aggiungo, a titolo informativo, una notizia ricevuta poco fa che risulterà utile agli utenti MacOS: I possessori di un melacomputer interessati al Python, oltre che provare i vari editor disponibili in rete, possono compilarlo tranquillamente dal terminale (ovviamente tramite interfaccia a riga di comando) digitando il comando python. Questo discorso vale per le versioni di Leopard dalla 10.2 in poi. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Ehm, mi chiamo Cesare, non Mauro.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2001
Città: Parma
Messaggi: 817
|
Su snow leopard c'è python 2.6 non il 3.0...e ovviamente puoi fare tutto da terminale
Un piccolo consiglio da nabbo quale sono : dai una occhiata anche a ruby,sempre incluso in macosx...ha sintassi molto più simile alla lingua naturale,manca di indentazione obbligatoria ed soprattutto è usato in ruby on rails per la programmazione (veramente easy e model-view-controller) per il web Ci ho fatto un piccolo portale per il lavoro e dopo 2 giorni era finito...ero scandalizzato da quanto è stato facile. Poi ho provato a fare la stessa cosa con django (che usa python) e mi è venuto male Ma penso che la cosa si possa applicare a tutti i framework al di là di rails ahaha |
|
|
|
|
|
#10 | ||
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12939
|
Quote:
Quote:
Questo anche perché C# e Java hanno delle librerie grafiche ben più utilizzabili di quelle fornite di default da Python, che ti costringe a rivolgerti a librerie di terze parti come le Qt (seppur ottime IMHO). |
||
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Ho capito, e concordo. Non ho usato NetBeans su Linux, per cui non ti so dire.
Riguardo al debugger, ho usato quello di Eclipse +PyDev, ma soltanto un paio di volte ed era ottimo. Per il resto preferisco nettamente lo unit testing e qualche print dove serve.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
Quote:
Per il resto quoto Cesare. |
|
|
|
|
|
|
#13 | ||
|
Junior Member
Iscritto dal: Oct 2010
Messaggi: 15
|
infatti non ce l'avevo con te
Quote:
Si, mi sono imbattuto nel ruby parecchie volte, pare interessante. Magari, se ti va possiamo approfondire il discorso in un altro thread senza rischiare di andare ot. Quote:
|
||
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
No, supporto ne trovi abbastanza, e in continuo miglioramento (grazie alla diffusione sempre più elevata, e un'ottima comunità che ci sta dietro).
Semplicemente a livello di interfaccia grafica non c'è un supporto "standard" (o di serie che dir si voglia), come invece avviene con altri linguaggi (i già citati C# e Java). Per cui si deve ricorrere integrando strumenti di terzi parti. Ma l'importante è che ci siano, in fin dei conti.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:11.




















