di  -  martedì 5 luglio 2011

Introduzione

Fino a questo momento abbiamo analizzato attraverso esempi varie tecniche presenti in videogame in 2D e di conseguenza come utilizzare la libreria pygame per realizzare il nostro videogioco. Non mi sono mai soffermato su un aspetto molto importante ed il più delle volte sottovalutato, ovvero quali tools si possono utilizzare per scrivere i propri progetti.

“Sottovalutato” nel senso che si può risparmiare tempo prezioso semplicemente utilizzando uno di questi programmi (che vedremo di seguito) insieme alla documentazione ufficiale della libreria che stiamo utilizzando (qualsiasi essa sia).

Naturalmente mi concentrerò su quelli che utilizzo (rigorosamente multipiattaforma e liberamente utilizzabili, per permettermi facili spostamenti tra i vari OS), ma nessuno vieta di utilizzarne degli altri, visto che la scelta è molto ampia.

Sicuramente queste cose non sono nuove a nessuno di voi che abbia già letto gli altri pezzi o che programmi già da tempo, ma vorrei che questo articolo serva anche per confrontarsi e per dare ulteriori spunti che riguardano questo argomento, come esperienze personali o preferenze.

Editor

Gli editor disponibili per il linguaggio python sono un’infinità : http://wiki.python.org/moin/PythonEditors

Si può optare per soluzioni semplici e veloci, come Vim o Scite oppure per soluzioni non altrettanto leggere ma con molte funzionalità. Tra quelli di quest’ultima tipologia io utilizzo in particolare Komodo-Edit. Komodo oltre a supportare in modo eccellente gli ultimi linguaggi disponibili, ha la possibilità di gestire progetti anche se non in modo dettagliatissimo. Essendo sempre multipiattaforma e free (non è open-source però) non riscontra particolari problemi nel suo utilizzo e per chi ha più OS nella propria macchina potrà apprezzare molto questo tool.

Gli editor sono strettamente necessari se non si vuole perdere troppo tempo nelle modifiche del proprio codice. Permettono un’immediata comprensione dei costrutti presenti ed offrono (per lo meno la maggior parte di essi) suggerimenti e/o informazioni riguardo quello che si sta scrivendo. Come ho già accennato, insieme ad una documentazione ufficiale della libreria che si sta utilizzando, gli editors costituiscono uno strumento essenziale per ogni programmatore.

IDE

Subito dopo abbiamo gli Integrated Development Environments, che di base si distinguono per una migliore gestione le progetto e del file che si sta attualmente editando e per aver integrato un debugger o la possibilità di eseguire l’interprete (anche se questa feature è presente anche in qualche editor).

Anche se la lista non è lunga come quella degli editor, credo che ognuno possa trovare quello che più lo aggrada : http://wiki.python.org/moin/IntegratedDevelopmentEnvironments

Per progetti open-sourse WingWare rappresenta un’ottima soluzione. Anche il plugin per Netbeans è un’ottima alternativa, peccato che dalla versione 7 non è più disponibili e si spera che il supporto ritorni nei futuri aggiornamenti (del plugin si intende). Tra le soluzioni disponibili personalmente ho scelto di utilizzare il plugin PyDev per Eclipse. Più precisamente ho installato Aptana che contiene al suo interno PyDev. Aptana supporta anche linguaggi come Ruby e Html 5 ed è molto utile per chi sviluppa applicazioni web.

Eclipse e PyDev sono una coppia perfetta per gestire i propri progetti e sono molto personalizzabili. Richiedono qualche configurazione iniziale (come tutti gli IDE del resto), ma hanno risolto anche molti dei miei problemi, come per esempio la coesistenza di due interpreti python (2.7 e 3.1) e quindi la possibilità di utilizzarli indipendentemente (sia in modalità debugger che in esecuzione) per ogni progetto in corso.

Condivisione delle risorse

Anche se può sembrare fuori luogo, vorrei sottolineare come le modalità di condivisione del codice siano fondamentali quando si lavora insieme. Per la mia personale esperienza posso dire di essere stato molto soddisfatto nell’utilizzo dei due seguenti programmi:

Il primo, se utilizzato su server che lo supportano, è molto utile per tenere traccia delle modifiche effettuate dai vari collaboratori (si sposa perfettamente con Google Code). Ringrazio Emanuele Rampichini per avermi fatto conoscere questo “distributed source control management tool”.

Il secondo rappresenta un programma fondamentale per condividere tra più fonti lo stesso progetto, senza curarsi troppo dei dettagli. Basta infatti creare una cartella e condividerla con i propri colleghi ed il tutto all’interno del sistema operativo, senza nessuna necessità di affittare costosi server.

Per i progetti open-source la cosa è più semplice è affidarsi a servizi come SourceForge e Google Code, che affiancano la realizzazione del programma. Ma se si ha la necessità di creare un proprio software (magari anche con il fine di venderlo) con pochi mezzi a disposizione, Dropbox può essere una buona rampa di lancio.

Conclusioni

Come avete potuto constatare, le alternative per scrivere codice e gestire progetti sono moltissime e ce ne sono per utti i gusti. Mi piacerebbe conoscere le vostre opinioni a riguardo, per capire cosa utilizzate ed il perché. Condividere questi punti di vista può aiutare molto, sopratutto quando si cerca di collaborare in gruppo o in un team.

Non pensate minimamente che sia tempo perso, perché l’utilizzo di questi applicativi vi può far risparmiare molte ore di coding, lasciandovi più rilassati e preparati per il prossimo task.

Nel prossimo articolo inizieremo un nuovo percorso che ci porterà ad esplorare una nuova dimensione…

13 Commenti »

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.

  • # 1
    Giuseppe
     scrive: 

    Per la condivisione del codice non converrebbe usare un GIT repository?

  • # 2
    sidew
     scrive: 

    Oppure Subversion (svn)

  • # 3
    Emanuele Rampichini
     scrive: 

    @Giuseppe
    Git, mercurial, bazaar, bitkeeper sono tutti dcvs che fanno più o meno lo stesso lavoro (chi meglio chi peggio). Capiti i concetti fondamentali puoi passare da uno all’altro senza problemi. Oggi mi sentirei di consigliare git per un solo e semplice motivo: github.

    @sidew
    Svn va benissimo se si è “lone coder” (anche per un progetto su cui lavora un gruppo ristretto e fisicamente vicino) anche se preferirei comunque un dcvs per l’estrema facilità di creare branch e per le migliori funzioni di merge. Il punto è che puoi usare un dcvs come se non fosse distribuito… ma non puoi fare il contrario. :P

  • # 4
    Emanuele Rampichini
     scrive: 

    P.S.
    @Mirco
    Grazie per la citazione :D

  • # 5
    Antonio Barba
     scrive: 

    Scusate l’ignoranza, ma Dropbox supporta lo storico e il diff dei files? Se non li supporta (come penso), non è un pochino inutile come sistema di versioning?

  • # 6
    Dario S.
     scrive: 

    @Antonio:

    Dropbox certamente supporta lo storico, puoi andare a ripescare tutti i vecchi salvataggi di un file senza problemi.
    Per il diff, però, non saprei.

    Dario

  • # 7
    sidew
     scrive: 

    @Emanuele
    svn lo usiamo in ufficio anche per progetti consistenti.
    Fino a qualche anno fa, esisteva solo VSS ( io ho dovuto fare un lavoro di “indottrinamento, specialmente ai vari capiprogetto per poter adottare un server aziendale, specialmente dopo diversi “incidenti” al file di indexing globale di vss)

    Solo recentemento ho potuto anche dare una occhiata ai git e concordo te per la presenza di github, sarebbe stato comodo anche per me con la possibilita di lavorare anche fuori ufficio e sincronizzare alla fine con quello centrale.

  • # 8
    Mirco Tracolli
     scrive: 

    @ Antonio

    Scusa se non ho approfondito l’argomento, credo che questo risolva ogni tuo dubbio:

    https://www.dropbox.com/help/8

    Come vedrai, Dropbox usa la differenza binaria tra i file per trasferire meno dati possibili e quindi velocizzare i processi. Certo è una cosa molto più blanda e meno dettagliata dei concorrenti, ma di ottimo impatto. :D

    @ Emanuele

    Di nulla ed ancora una volta hai sollevato il mio interesse, questa volta verso github… :P

  • # 9
    Cesare Di Mauro
     scrive: 

    Personalmente preferisco l’accoppiata NetBeans (6.9.1) con relativo plug-in. Ho preferito, infatti, non passare a NetBeans 7.

    Ho usato per parecchio tempo anche Eclipse col plug-in PyDev, che è sicuramente più maturo e completo (la versione a pagamento) di quello per NetBeans, ma purtroppo Eclipse è un IDE molto confusionario (da patchwork) e ho preferito abbandonarlo per quello che ritengo essere un IDE progettato a misura di programmatore. Ho sentito parlare molto bene di WingIDE, ma è a pagamento e pertanto non ho avuto la possibilità di provarlo (no, non mi scarico la trial per rimanere poi a sbavarci dietro perché mi sono assuefatto |-Q______).

    Altra cosa molto importante, utilizzo DreamPie come shell interattiva avanzata. Uno dei vantaggi di Python è che permette di lavorare interattivamente aumentando enormemente la produttività. Ebbene, con DreamPie lo si molto meglio.

    Ho usato anche Subversion e Mercurial. Il primo è più semplice da utilizzare, mentre il secondo più complesso (ma ovviamente offre MOLTO di più; è anche questo il motivo). Per semplificarmi la vita li ho usati in versione GUI (TortoiseSVN e TortoiseHg rispettivamente).

    DropBox lo uso molto spesso, ma non lo consiglierei per gestire progetti condivisi. Meglio affidarsi a Mercurial. Per scambiare file senza versionamenti è decisamente comodo (anzi, è comodissimo).

  • # 10
    Antonio Barba
     scrive: 

    @Mirco: non ci siamo capiti… Dropbox ti consente di fare questo? http://winmerge.org/about/screenshots/filecmp.png
    Inoltre, ti traccia l’autore di ogni commit come fanno i software di versioning? oppure è semplicemente una banale cartella condivisa?

  • # 11
    Mirco Tracolli
     scrive: 

    @ Antonio

    Scusa non mi sono spiegato bene, utilizza la differenza binaria solo ed esclusivamente per il trasferimento dei file. Non tiene conto delle varie differenze fatte da vari utenti. Effettivamente è una banale cartella condivisa. Come ha detto Cesare è comodo per scambiare file senza versionamenti. :D

    @ Cesare

    Mi hai ricordato Tortoise e DreamPie… Grazie mille!!!

  • # 12
    Antonio Barba (TheKaneB)
     scrive: 

    @Mirco: ah ok. Il fatto è che non lo uso, quindi magari ho fatto qualche domanda un po’ banale :-D

    Tortoise tutta la vita, il miglior client di sempre ^^,

  • # 13
    Mirco Tracolli
     scrive: 

    @ Antonio

    La domanda non è affatto banale, anzi sottolinea il fatto che dropbox può essere utilizzato solo per lo scambio di semplici file (immagini, audio, testo ecc…). L’utilità è tutta lì, niente di più! :D

Scrivi un commento!

Aggiungi il commento, oppure trackback dal tuo sito.

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.