di  -  martedì 27 Aprile 2010

Semplicità o complessità? Strumenti estremamente potenti e completi o minimali e affidabili?

Chiunque abbia messo mano alla stesura del codice sorgente di una applicazione si sarà scontrato con questo profondo dilemma. È meglio fare affidamento su un IDE completo o su un semplice editor di testo con supporto all’evidenziazione della sintassi e poco più?

Tipico “ambiente” composto da fido editor e shell a portata di mano :D

Oggi vorrei raccontare la mia esperienza. Sono sempre stato allergico agli IDE, li ho sempre visti come una inutile barriera tra me e la risoluzione del problema vero. Ho sempre creduto che trovarsi di fronte il puro e semplice codice mi aiutasse a mantenere il focus sul lavoro da svolgere piuttosto che sullo strumento utilizzato.
Praticamente tutti i miei progetti sono nati utilizzando un mix di editor di testo e script di vario genere costruiti ad-hoc per le operazioni ripetitive. Questa metodologia in passato non mi ha mai lasciato a piedi.

Essendo però curioso di natura e sapendo che molti hanno aumentato la propria produttività attraverso l’utilizzo di ambienti di sviluppo ho deciso di mettere in discussione le mie convinzioni. Memore degli insuccessi precedenti mi sono affidato a quello che da molti è definito il miglior IDE open source in circolazione: Eclipse.

Utilizzando principalmente python come linguaggio di programmazione ho optato nello specifico per l’estensione Pydev di aptana. Tale necessità è stata dettata dal fatto che eclipse è storicamente legato al linguaggio Java.

L’esperienza all’inizio è stata abbastanza negativa. Ho riprovato quella strana sensazione che mi ha tenuto lontano da programmi di questo tipo per molto tempo: il dubbio di star lavorando “per l’IDE” e non “con l’IDE”.

I primi disagi li ho avuti per integrare al meglio le funzionalità di django (framework web sviluppato in python) all’interno di Eclipse. Devo ammettere che  una coincidenza sfortunata ha contribuito a innervosirmi. Praticamente ho passato una giornata a cercare di creare un ambiente amichevole per scoprire che il giorno dopo sarebbe stata rilasciata una nuova versione di pydev con il supporto integrato a django.

Mettendo da parte l’ennesima dimostrazione della validità universale della Legge di Murphy appena raccontata, devo ammettere che una volta configurato l’ambiente e capite le meccaniche ho iniziato ad apprezzare tutte quelle piccole comodità che un IDE sa offrire.

Esempio di esplorazione contestuale del codice in Eclipse

La cosa che per prima mi ha convinto a continuare a utilizzare Eclipse è stato il completamento automatico del codice. Questa piccola caratteristica che non avevo mai visto di buon occhio ha abbattuto di molto il tempo che in precedenza passavo sulla documentazione ufficiale delle librerie utilizzate. Poter esplorare metodi e possibilità in maniera contestuale alla stesura del codice è indubbiamente comodo. Altra comodità che in passato affidavo al semplice “trova e sostituisci” è quella di poter fare refactoring in maniera molto rapida grazie allo strumento fornito dall’IDE.

Ultima ma non ultima per importanza è l’integrazione con i sistemi di controllo versione del codice (esistono plugin per git,mercurial o subversion). Anche in questo caso sostituire gli script ad-hoc ha richiesto un po di fatica all’inizio. Fatica anche in questo caso ben ripagata.

A questo punto molti lettori si staranno chiedendo il perché di questo post. Tutto sommato chiunque scrive codice conosce i vantaggi di un approccio rispetto all’altro. Quello che volevo evidenziare con questa storia è che spesso capita di fare scelte e di crearsi dei pregiudizi riguardo ad alcune tecnologie.
Pregiudizi che si alimentano senza un particolare motivo se non l’abitudine e la naturale tendenza umana a scegliere sempre e comunque la strada battuta. Provare, mantenere aperti i propri orizzonti e mettere costantemente in dubbio le proprie convinzioni spesso porta a scoperte positive.

Lascio la parola a voi lettori per capire come siete abituati a lavorare in questo ambito e magari “rubarvi” qualche buona idea o pratica.

66 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
    Cesare Di Mauro
     scrive: 

    Penso che abbia già detto tutto tu: è sempre questione di pregiudizi.

    Personalmente è dai tempi del Turbo Pascal 3.0 che ho iniziato ad apprezzare gli IDE, e a usarli ove possibile. Non dico che editor e shell siano da bandire, ma da utilizzare quando serve, perché per il resto la produttività è decisamente migliore con un buon IDE.

    Ho utilizzato anch’io Eclipse con PyDev e mi sono trovato abbastanza bene, ma dopo aver provato NetBeans (con relativi plugin Python) … ci sono rimasto. Fra gli IDE open source lo ritengo il migliore, quello “a misura di programmatore”.

    Eclipse ha sicuramente dei plugin più maturi (in genere), ma a livello di IDE, come ambiente, NetBeans a mio avviso lo sovrasta.

    La differenza l’ho notata particolarmente sul netbook da 10″ che ho preso di recente. Fatto partire NetBeans, e avevo l’ambiente simile a quello che uso in produzione, con un po’ di spazio orizzontale in meno. Posso, insomma, lavorare agevolmente (con tutti i limiti della tastiera che, purtroppo, non è full-size; ma d’altra parte ho voluto un netbook e non un notebook, per cui ne ero e ne sono ben consapevole).

    Fatto partire Eclipse (che ha impiegato una vita in più rispetto a NetBeans, che è già abbastanza pesante di suo), beh, mi sono ritrovato davanti a un’accozzaglia confusa di toolbar che mi hanno lasciato uno spazio microscopico per il sorgente. Un incubo, insomma.

    Comunque da pythonista penso che ti manchi un ultimo gradino per migliorare notevolmente la produttività personale: una shell interattiva “avanzata”. Utilizzo DreamPie allo scopo (dopo aver passato parecchio tempo con quella in dotazione a Python), che è decisamente spettacolare.

    A mio avviso non c’è proprio paragone col classico pattern “edita il codice, compilalo, lancialo e vedi se funziona”. Con la shell interattiva i pezzi di codice si provano “al volo”, dandogli in pasto dei dati reali e controllando che i risultati siano quelli desiderati.
    Hai un’idea? Provala subito. E non appena il risultato ti soddisfa, fai copia & incolla sull’editor dell’IDE per integrarlo col resto del progetto.

    E’ una cosa che non ha prezzo. Poi con shell come DreamPie è ancora più spettacolare, perché ti autocompleta il codice. Hai un oggetto, digiti il classico puntino, e ti visualizza subito l’elenco dei metodi “live” dell’oggetto in questione.
    Oppure in funzioni come open che aspettano un path, ti fa scorrere in maniera interattiva file e cartelle della directory corrente, fino a quando non premi invio e ti piazza sul cursore la stringa col file o cartella selezionato.

    Provalo e fammi sapere. ;)

  • # 2
    Jonnycorvo
     scrive: 

    ECLIPSE E’ IL MIO MIGLIOR AMICO

  • # 3
    Gurzo2007
     scrive: 

    concordo con cesare…al momento netbeans come ide è superiore ad eclipse…poi il tutto va a gusti e abitudine

  • # 4
    Emanuele Rampichini (Autore del post)
     scrive: 

    @Cesare
    Proverò sicuramente DreamPie. Grazie della dritta… è proprio quel genere di consigli che volevo estorcere con questo articolo! :D

    @Jonnycorvo
    Diciamo che il mio è un rapporto meno intimo. :D

    @Gurzo2007 @Cesare
    A questo punto proverò anche Netbeans per vedere come va. Mi avete incuriosito.

  • # 5
    Emanuele
     scrive: 

    Non é una questione solo emotiva, nello sviluppo web, dove le tecnologie coinvolte sono tante e anche molto vaste come quantità di istruzioni, comandi e altro, dove il progetto é composto da un numero di file considerevole, un IDE con completamento automatico é una manna dal cielo, anche perché passano gli anni e la mia memoria non é piu quella di una volta…

    Io pure voto netbeans come the best!

  • # 6
    D
     scrive: 

    Domanda agli esperti. Code::Blocks merita oppure no ?

  • # 7
    Notturnia
     scrive: 

    quando programmavo in pascal non ne sentivo molto l’esigenza e facevo tutto con l’editor di testo.. compilavo e filava sempre tutto liscio.. quando sono passato al C/C++ ho apprezzato il sistema della borland.. non era evoluto come quelle cose che ci sono oggi.. parlo di 10 e olrte anni fa.. 13-15 forse.. ma il fatto di avere un ambiente dove programmare era meglio che starne fuori.. si potevano fare cose che non si potevano pensare con l’editor.. poi sono arrivati questi nuovi mostri che fanno di più.. aiutano a creare i programmi.. è strano… ci si sente come un pezzo della macchina e non più l’ideatore del programma perchè chi ha fatto quel programma ci sta aiutando..

    ma aumenta non poco la velocità di esecuzione e spesso migliora la nostra visione del programma che realizziamo..

    io ormai sono anni che gioco solo con il Vbasic per le mie esigenze.. ma mi piacerebbe tornare al C..

    buon lavoro a tutti

  • # 8
    Giulio85
     scrive: 

    A mio modo di vedere il miglior editor è quello che necessita di essere configurato il meno possibile, e quando va fatto, mi consenta di farlo nella maniera più semplice possibile.

    Eclipse e CodeBlocks sono abbastanza lontani da questo concetto IMHO.

  • # 9
    biffuz
     scrive: 

    Anch’io preferisco NetBeans a Eclipse come usabilità. Ma hanno entrambe due grossi difetti:

    – sono scritti in Java, e quindi più lenti di un editor nativo (e pregasi notare che adoro Java).
    – hanno un’interfaccia a finestra singola, una finestrona con dentro tutto.

    Quando sono sul Mac preferisco di gran lunga Xcode. E’ nativo e puoi mettere tutte le finestra che vuoi, su più workspace e più monitor.
    Peccato che non supporti nativamente PHP e non abbia il client database come gli altri due…

  • # 10
    Wolf01
     scrive: 

    Bhe che dire, da quando ho iniziato a programmare (Basic 1.0 sull’Amstrad) ho sempre preferito gli editor di testo, quando poi è arrivata la colorazione della sintassi ad aiutare , sotto windows con i vari programmer’s notepad etc.. ho tirato un gran respiro di sollievo.
    Poi sono passato a VB6 e l’IDE mi ha aiutato veramente molto, anche perchè semplificava un mondo la procedura di disegno delle form.
    Ora programmando sia in VB6/.Net che in C/C++ uso un po’ questo e un po’ quello.
    Trovo gli IDE molto pesanti e preferisco avere un software leggero che mi permetta anche con un pc scrauso di poterlo aprire e chiudere in breve tempo, inoltre evito come la peste toolbar e finestre di informazione che assolutamente non mi servono in ogni momento.
    Se ho bisogno del debugger lo apro all’occorrenza, se ho bisogno della lista dei file del progetto la apro all’occorrenza e così pure la barra degli strumenti di VB.
    Però ci sono varie cose di cui non potrei mai fare a meno, ad esempio l’intellisense sul Visual Studio.
    Per il resto preferirei avere io il controllo di cosa deve essere fatto nel progetto, ad esempio i progetti in C/C++ che programmo con VS poi li compilo da riga di comando e makefile perchè è tutto un pasticcio con i reference e il debugging e non si riesce mai a districarsi da tutti i rampicanti che mettono dentro in quel labirinto, pensando magari di semplificare la vita al povero programmatore :P

  • # 11
    Cesare Di Mauro
     scrive: 

    @D: Code::Blocks lascialo perdere. Per il C++ utilizza VisualStudio (la versione Express è completamente gratuita).

    @biffuz: a me Java non piace (come tutti i linguaggi C-like :D), ma NetBeans merita. Certo, se lo riscrivessero in Python sarebbe molto più piccolo, consumerebbe anche meno risorse, e i tempi di sviluppo si potrebbero ridurre anche di un ordine di grandezza; oltre al fatto che mi farebbero contento. :D

    Il fatto che sia a finestra singola non è un problema, perché usa le tab ottimamente.

    Di XCode, invece, i miei colleghi che sviluppano per iPhone non ne parlano proprio bene. Anzi.

    @Wolf01: io ho risolto tenendo quasi sempre aperto l’IDE. Tanto sono un programmatore, e lo uso praticamente sempre, per cui ha poco senso aprirlo e chiuderlo ogni volta.
    Specialmente sul netbook, dove i tempi di caricamento sono più lunghi, e dove utilizzo pure l’ibernazione per ridurre al minimo lo startup del sistema.

  • # 12
    Drizzt
     scrive: 

    Discutere di preferenze tra IDE ed editor di testo, nel 2010, con la complessita’ che hanno raggiunto le moderne applicazioni, e’ ovviamente follia.

    Non e’ questione di pregiudizi o cosa, e’ questione di produttivita’ e, volendo, anche di necessita’. Necessita’ nel senso che se si programma per vivere, con clienti medio normali, la produttivita’ e la qualita’ del codice non sono un optional, ed i soldi per un IDE serio si sono. Chiaro che se si parte da un IDE open source scaricato da codeproject, spesso e volentieri Notepad++ e’ meglio…ma certamente uno che usa un IDE del genere non puo’ certo aspirare a realizzare in modo decente software complesso con qualche decina di migliaia di righe di codice in un team di sviluppo (anche solo di tre persone, per dire)

    Poi, per carita’, i miei mini siti per qualche cliente piccolo li faccio principalmente anche io in Notepad (addirittura quello normale, non il ++), gli script anche…ma realizzare l’ennesimo gestionale usando il notepad…e’ follia.

  • # 13
    ice00
     scrive: 

    Netbeans è magnifico e l’ho scelto quando ancora non era ai livelli di oggi (del resto configurare Eclipse a quei tempi era di per se un impresa), pur avendo prima lavorato con JDeveloper di Oracle. Dicono che, per Java, le librerie grafiche di Eclipse (di derivazione IBM) siano migliori per progettare interfacce grafiche. Può essere, comunque con Matisse, anche in Netbeans si procede spediti nella creazione delle interfacce grafiche.

    Ha una integrazione perfetta con CVS, Subversion, ecc, che ti permette di vedere sempre evidenziate le modifiche apportate al precedente commit. La compilazione durante la digitazione del codice funziona a meraviglia, come pure il completamento automatico dei metodi/variabili e il refactoring. Comunque penso che queste siano tutte caratteristiche che ogni IDE odierno implementa.

  • # 14
    Massimo M
     scrive: 

    Io ODIO profondamente Eclipse. Non lo sopporto, sarà questione di pelle. Purtroppo mi ci dovrò abituare …

  • # 15
    Master_T
     scrive: 

    [quote]La cosa che per prima mi ha convinto a continuare a utilizzare Eclipse è stato il completamento automatico del codice. Questa piccola caratteristica che non avevo mai visto di buon occhio[/quote]

    Non so perchè non la vedessi di buon occhio, è praticamente LA feature che rende preferibile un IDE, anche se non usi nessuna delle altre funzioni di un integrated dev enviroment… il mero aumento della velocità della stesura del codice fa si che ne valga la pena, spesso trovo più rapido scorrere i metodi proposti dall’intellisense (l’autocompletatore di VS) e beccare quello che mi serve dalla descrizione/nome piuttosto che aprire la documentazione della libreria o assembly che sto usando.

    Altra cosa a mio avviso essenziale è il debugger integrato nella maggior parte degli IDE, decisamente una comodità in più poter semplicemente dare un F5 e debuggare al volo rispetto a usare un tool esterno.

  • # 16
    Emanuele Rampichini (Autore del post)
     scrive: 

    @Master_T

    Non so perchè non la vedessi di buon occhio, è praticamente LA feature che rende preferibile un IDE, anche se non usi nessuna delle altre funzioni di un integrated dev enviroment…

    Diciamo che probabilmente questa strana convinzione è data anche dal fatto che il python ha dei bei metodi per ispezionare gli oggetti direttamente dalla shell interattiva. Suppongo che è per questo che non ho sofferto in particolar modo questa mancanza in passato.
    Idem per il debugging.

    Sicuramente con linguaggi di più basso livello avrei sentito prima la necessità di un IDE.

  • # 17
    Valerio
     scrive: 

    Io lavoro con Visual Studio, Netbeans ed Eclipse. Premettendo il fatto che spesso quando si usa una certa tecnologia scegliere l’ide non è possibile. Soprattutto per ambiti specifici in cui un produttore rilascia un plugin per una piattaforma piuttosto che per un’altra, vedi Android, o piattaforme SOA o .Net, ci sono tantissimi esempi.
    A livello personale le ritengo valide nell’ordine in cui sono scritte, la potenza ed immediatezza di VS rimane ineguagliata, così come rimane ineguagliato il mal di testa provocato dal versioning dei plugin di eclipse :D

  • # 18
    Emanuele Rampichini (Autore del post)
     scrive: 

    @Cesare
    Lo sto usando da una mezz’ora e sono già drogato di DreamPie. Grandissima dritta. :D

  • # 19
    WarHammer
     scrive: 

    @cesare: come mai non ti piace Java (o i linguaggi c-like)? qualche motivo particolare? (pura curiosità personale ;) )

  • # 20
    Cesare Di Mauro
     scrive: 

    Questione di gusti. Mi piacciono i linguaggi più leggibili, che usano meno simboli e più keyword.

    Per questo C & co. per me sono agli antipodi (come pure certi linguaggi funzionali), mentre adoro Python e i linguaggi di derivazione Pascal.

    Premetto che ho lavorato e lavoro tuttora in C (la notte, al mio progetto, wpython), per cui non parlo per sentito dire, ma con anni di esperienza alle spalle (e decine e decine di linguaggi usati e/o studiati).

    @Emanuele: il prossimo articolo ci riporterai le tue impressioni, allora. :D

  • # 21
    WarHammer
     scrive: 

    @Cesare: assolutamente, non intendevo metterlo in dubbio (anzi, ti reputo una persona di grandissima competenza, che traspare chiaramente dalla qualità dei tuoi articoli, specialmente quelli molto tecnici), era giusto una curiosità personale :)

  • # 22
    Valerio
     scrive: 

    @Cesare: d’accordissimo sulla leggibilità del codice, infatti Java tende ad essere abbastanza prolisso, da quello che dici dovresti essere innamorato pazzo di C#, tante keyword e figlio diretto del Pascal :D La cosa che non comprendo molto è il tuo raggruppare trasversalmente linguaggi dinamici e non, io vedo molta più differenza tra queste due categorie che tra due linguaggi strong typed.

    PS: dai una occhiata al tipo “dynamic” in c# 4.0 :P

  • # 23
    Cesare Di Mauro
     scrive: 

    @WarHammer: ho preferito precisare, perché non si sa mai. :)

    @Valerio: per me prolisso non necessariamente significa leggibile. Per questo non mi piacciono né Java né C#, perché ti costringono a ripetere le stesse keyword in continuazione per gli stessi elementi. Qui preferisco nettamente l’approccio di Turbo Pascal prima, e di Delphi poi: metti la keyword private, ad esempio, e da lì in poi tutti gli elementi definiti saranno privati.

    C# non mi piace soprattutto perché usa una montagna di simboli. Mi viene la nausea già solo a vedere certi pezzi di codice, specialmente quando si usano i generic.

    Il “dynamic” di C# 4.0 mi ricorda i vecchi tempi di Delphi e del tipo Variant (simile al VisualBasic). Ma in Python non mi serve nemmeno quella keyword: è già così “di default”. :P

    Altra cosa, Python è, sì, un linguaggio dinamico, ma fortemente tipizzato. Ad esempio non ti permette di sommare una stringa con un numero. Per questo lo apprezzo particolarmente, come Pascal & Delphi, che ti bacchettano sulle manine se ci provi.

    Al contrario PHP, Perl, Ruby, linguaggi “weakly typed” (non mi viene il termine in italiano), pur essendo dinamici.

    Detto ciò, Python ti forza anche a indentare correttamente il codice, che ne guadagna in leggibilità. E non ha tanti “fronzoli”: è molto semplice e immediato come sintassi, permettendoti di esprimere in pochi simboli dei concetti anche complessi, ma senza per questo diventare mostrusamente illegibile come i tre precedenti (in particolare Perl, che è una vera piega; ma anche C++ non scherza).

    Non a caso qualcuno definisce il codice Python “pseudocodice eseguibile”. Mai termine fu più azzeccato. :)

  • # 24
    Arunax
     scrive: 

    Eheh, una guerra antica!!! Non sono un informatico, ma in questo periodo sto facendo un tirocinio su un progetto in VHDL (un linguaggio di descrizione hardware) e ho avuto modo di apprezzare particolarmente le funzionalità di autocompletamento (in questo caso nel vetusto editor di testo Emacs e non in un IDE, ma vabbè).

  • # 25
    Cesare Di Mauro
     scrive: 

    A proposito di “VHDL”: http://www.myhdl.org/doku.php/start O:-)

    Scusate lo “spam”. :D

  • # 26
    Valerio
     scrive: 

    Non mi pare un esempio significativo per giudicare Java e c# comunque ho intuito cosa intendi e piuttosto che farne un esempio direi che sono gusti :D Potrei dirti che esplicitare la security rende il codice più leggibile perché non devi andare a cercare dove è stata dichiarata e cosa vi ricada :P si ricade pienamente nel punto dell’articolo.

    Che c# avesse tanti simboli rispetto ad altri linguaggi OO non mi sembrava, al massimo tante keyword, per quello avevo commentato sotto la tua frase precedente.

    In ogni caso sono consapevole della natura miltiparadigma di Python, quello a cui facevo riferimento è che c# è stato creato e tuttora guidato nell’evoluzione dal padre del Pascal e Delphi.

    Quello che volevo intendere è che con l’introduzione dei tipi dynamic anche c# è comparabile a python in quanto entrambi utilizzano la stessa tecnica di duck typing e sono appunto strongly typed.

    Non dico che uno sia migliore dell’altro, perchè si confrontano cose troppo differenti soprattutto per quello che circonda i linguaggi stessi. Si tratta di gusti, perchè a livello espressivo ormai non vedo più grosse differenze, anzi c# tra Linq e dynamic sta diventando molto, forse troppo ricco :D

  • # 27
    Marco
     scrive: 

    “consumerebbe anche meno risorse”

    Premesso che adoro la sintassi di Python, ma purtroppo paga un pesante dazio a Java sul fronte delle prestazioni (parlando delle implementazioni mainstream, non branch sperimentali), almeno di un fattore 5x.
    Meglio Jython :-D che tuttavia si porta dietro il fardello della jvm.

  • # 28
    Gennaro Tangari
     scrive: 

    Ne ho usati parecchi: HyperCard su Macintosh, Turbo Pascal, Visual Studio, Eclipse e XCode.

    Personalmente preferisco Visual Studio ad Eclipse, ma non fosse per il debugger la mia preferenza (vabbé sono pur sempre un mac user :-P) andrebbe ad XCode.

  • # 29
    iva
     scrive: 

    Nessuno ha parlato di Qt Creator mi pare, vi consiglio di provarlo.

    Qualche anno fa lavoravo su un progetto abbastanza grande (qualche centinaio di migliaio di righe di codice) sotto Linux con Qt e nonostante questo preferivo utilizzare il mio editor preferito di quel tempo (emacs!) piu’ l’apposita shell.
    In primis la scelta era condizionata l’unidirezionalita’ di lavoro tra Qt Designer e il codice vero e proprio.
    Per il debugging, visto che lavoravo sull’implementazione di codice parallelo, alla fine un ide mi avrebbe aiutato poco visto che a quel tempo era tutto ancora molto primitivo.

    Qualche mese fa, per divertimento, ho iniziato un paio di progetti per conto mio e ho provato QtCreator: diciamo che hanno fatto passi da gigante!
    Il debugging e’ moooolto buggoso (!) e primitivo ma tutto il resto e’ fatto decisamente bene e, soprattutto, si lavora in maniera trasparente su OS differenti (programmo in Linux ma poi devo fare una build in Windows visto che gli utenti vogliono utilizzare il programma li’).

  • # 30
    Pleg
     scrive: 

    @ iva

    Non ho ancora provato Qt Creator, uso KDevelop (con cui mi sto trovando benissimo per programmare in C++ e Qt). Li hai provati entrambi?
    Il problema e’ che ancora non e’ integrato bene col processo di creazione della UI.

  • # 31
    Riuzasan
     scrive: 

    Maremma maiala e chi ha portato il povero amighista a usare per anni CygnusED :D

    PS
    Su amigaOS l’unico “IDE” serio era quello dell’Amos :/

  • # 32
    Pleg
     scrive: 

    @ Cesare

    Ommioddio che e’ quella roba? :DD

    Curiosamente, non ho vai visto nessun ASIC Designer usare python, ma solo TCL (per i tool) e Perl (per tutto il resto).

  • # 33
    Emanuele Rampichini (Autore del post)
     scrive: 

    Qt creator e kdevelop li ho utilizzati (e li tengo installati nella mia linux box) ma sono strettamente legati allo sviluppo Qt e C++. Per kdevelop ci sono anche plugin vari per il supporto ad altri linguaggi come ruby o python ma ancora non sono abbastanza maturi.

    Altro IDE che ho provato è Eric IDE che dovrebbe essere particolarmente adatto per lo sviluppo in PyQt… basta cercare un’immagine dell’ambiente su google per capire perché mi sono spaventato e l’ho abbandonato prima ancora di provare a scrivere qualche riga di codice.

    http://eric-ide.python-projects.org/images/eric4-screen-01.png

    :D

  • # 34
    dargor17
     scrive: 

    Premesso che non sono un programmatore ma un fisico, e quindi lavoro normalmente su codici in C++ di qualche migliaio di righe, senza source control e per lo più da solo, io non posso vivere senza vim.

    Ho iniziato per pura curiosità vedendo che lo usava il mio professore di C, ma dopo aver acquisito familiarità mi sono reso conto che un editor modale è decisamente più comodo e veloce per modificare il codice.
    Operazioni come copiare un intero blocco delimitato da parentesi o virgolette, commentare o mettere sotto #ifdef DEBUG una sezione di codice, e così via, si fanno premendo due, tre tasti.
    Ho provato a usare un po’ VisualStudio per C++, ma mi da troppo fastidio non avere più tutti i trucchetti a cui sono abituato. Senza contare che lasciavo un sacco di “:w” nel codice :)

    Con un po’ di pazienza e di plugin (e un abbondante uso di exuberant ctags) si può avvicinare molto vim a un IDE, e per ora sono soddisfatto così, però ho in progetto prima o poi di vedere quanto è facile integrare vim a qualche IDE

  • # 35
    Cesare Di Mauro
     scrive: 

    @Valerio: indubbiamente, e come avevo detto prima, rimane una questione di gusti.

    Conosco la storia di C# (e .NET), e ci ritrovo parecchi elementi di Delphi, ma ciò non toglie che come linguaggio continua a non piacermi per la sintassi, anche se adesso hanno introdotto il dynamic binding (ma non è la stessa cosa).

    Linq è interessante, ma da qualche tempo mi sono scritto una libreria che mi permette di fare robetta come questa:

    DB.Anagrafica[Nome, Cognome].GroupBy[Nome, Cognome].OrderBy[Cognome, Nome][ : 10].List(Cognome.Like(‘D%) & (Nome.Len < 10)) che genera una query del genere: SELECT Nome, Cognome FROM Anagrafica WHERE (Cognome LIKE '%D') AND (LENGTH(Nome) < 10) GROUP BY Nome, Cognome ORDER BY Cognome, Nome LIMIT 0, 10 e mi ritorna una lista di tuple costituite dai due elementi che m'interessavano. Quando avrò tempo aggiungerò anche il supporto alle JOIN, e ci metterò una pietra sopra. O:-) @Marco: hai ragione, e sono stato poco chiaro. Per quanto riguarda i tempi di calcolo, nulla da dire: Java è nettamente più veloce di Python (d'altra parte mediamente ha prestazioni equivalenti al C). Nello specifico e riferendomi alla scrittura di un IDE in Python, quest'ultimo ha il vantaggio non indifferente di un minor consumo di memoria e tempi di caricamento ridotti rispetto a Java, dove per far apparire una finestrella con sù scritto "Hello, world!" e un bottone con OK si devono caricare circa 600 classi con AWT e circa 800 SWT (questo senza ricorrere a strumenti più sofisticati come i class-loader). Python non deve portarsi dietro una libreria pachidermica. Il che è un vantaggio per i suddetti motivi, ma anche uno svantaggio perché si deve ricorrere a librerie esterne (ma esistono eccellenti binding, come il già citato PyQT, ma anche wxPython, PyGTK, e altri ancora: c'è l'imbarazzo della scelta). @iva: finora non ho mai scritto applicazioni dotate di GUI con Python (anche perché preferisco Delphi, che a mio avviso ha l'ambiente RAD più comodo finora esistente), ma prima o poi smanetterò con PyQT, che a quanto pare va per la maggiore (sempre che non mi rimetta a scrivere qualche giochino con PyGame per la mia PSP :D). @Pleg: lascia perdere KDevelop. Prova Visual Studio Express col C++. Per quanto riguarda MyHDL, si tratta di un prodotto giovane, e sicuramente agli occhi di un esperto "navigato" del settore può sembrare astruso :D, ma t'invito a dargli una bella occhiata perché personalmente l'ho trovato molto interessante (anche per la possibilità di generare automaticamente codice Verilog o VHDL, tra le altre cose). :P Sarebbe bello leggere le tue impressioni, prima o poi. O:-) @dargor17: quando sono arrivato in azienda ho provato a usare vi/vim, ma dopo qualche ora ho chiesto gentilmente al sysadmin di installarmi joe, che è un editor decisamente più "umano" (e sarà pure perché sono affezionato ai comandi di WordStar, vecchissimo text editor della prima metà degli anni '80: ebbene sì, sono con un piede nella fossa :D). Comunque VisualStudio per il C++ è impagabile (anche se prima preferivo il Borland C++).

  • # 36
    Emanuele Rampichini (Autore del post)
     scrive: 

    DB.Anagrafica[Nome, Cognome].GroupBy[Nome, Cognome].OrderBy[Cognome, Nome][ : 10].List(Cognome.Like(‘D%) & (Nome.Len < 10))

    che genera una query del genere:

    SELECT Nome, Cognome FROM Anagrafica WHERE (Cognome LIKE ‘%D’) AND (LENGTH(Nome) < 10) GROUP BY Nome, Cognome ORDER BY Cognome, Nome LIMIT 0, 10

    Ti sei fatto un ORM casereccio… io grazie a sqlalchemy non scrivo una query SQL da parecchio tempo. Non che la cosa mi spaventi ma quando posso evito! :P

    Ti lascio il link ma sicuramente lo conoscevi già:

    http://www.sqlalchemy.org/

  • # 37
    iva
     scrive: 

    @pleg:
    si, ma KDevelop non mi ha mai “preso”, fa moltissime cose… di cui non ho bisogno.
    Pero’ ricordo che l’help era fatto molto bene, c’era l’impossibile.

    E come dici tu il tallone d’achille e’ l’integrazione della UI (o almeno era l’ultima volta che l’ho provato, diversi mesi fa).
    In Qt Creator l’integrazione e’ fatta come si deve, finalmente.

    Facci un progettino veloce veloce e secondo me in meno di un’ora ti rendi conto se ti puo’ essere utile o meno.

    Alla fine, secondo me, un qualsiasi ambiente deve fare MOLTO BENE quelle 4/5 cose che ti servono per quel particolare progetto o modus operandi, punto.

    ps per chi l’ha citato prima: cygnus ed rocks!! ma ve la ricordate la velocita’ di scrolling su un’Amiga 500 rispetto agli altri editor del tempo?!?!? :)

  • # 38
    homero
     scrive: 

    in principo era Hisoft DevPac Amiga assembler
    in seguito fu emacs+gcc su UNIX
    passando per il borland C++ IDE
    oggi parto da carta e penna e poi scelgo l’editor ed il linguaggio piu’ adatto per tradurre operativamente il progetto…
    aprire l’editor è l’ultima cosa che faccio e spesso cerco di farla fare agli altri…

    con questo metodo di lavoro si ottengono due risultati fondamentali
    i programmi mediamente risultano di dimensioni ridotte rispetto alla media a parità di funzioni…
    e le prestazioni delle funzioni risultano mediamente migliori…

  • # 39
    Giulio85
     scrive: 

    I linguaggi dinamici non mi fanno impazzire molto, soprattutto perché è difficile trovare IDE che abbia un buon auto-completamento (ergo: senza bug) per quel linguaggio.

    Per me l’auto-completamento è fondamentale e per il momento funziona veramente bene solo con i linguaggi statici.

  • # 40
    Cesare Di Mauro
     scrive: 

    @Emanuele: conoscevo SQLAlchemy di fama, ma non l’avevo mai visto prima, per cui ho approfittato del tuo link per dargli un’occhiata. Per alcuni aspetti la sintassi gli somiglia molto, ma il mio modulo è molto lontano da un ORM. E’ “semplicemente” un wrapper “pythonico” a SQL; non c’è nessun concetto di classe e relative istanze, che “mappano” tabelle e relazioni. Tant’è che per aggiungere un record, ad esempio, faccio così:

    DB.Anagrafica += Nome == ‘Pico’, Cognome == ‘De Paperis’

    e questo mi genera (ed esegue) immediatamente la seguente query:

    INSERT INTO Anagrafica (Nome, Cognome) Values(‘Pico’, ‘De Paperis’)

    Non fa nient’altro. Niente controlli né memorizza informazioni varie.
    In compenso tiene conto delle transazioni, utilizza eventualmente un pool di connessioni, e nel caso che quella corrente sia giù (“MySQL server is gone away”, ecc.”), la butta via, ne ricrea un’altra, e riprova l’operazione.

    Mi serviva soltanto un strato di più alto livello, e astratto (infatti ho dei “mini driver” scritti per MySQL e FireBird, ma posso aggiungerne facilmente altri), robusto e fault-tolerant, su un engine SQL esistente. Uno strumento agile e semplice per lavorare per come faccio abitualmente con Python. ;)

    @iva: su Amiga CygnusEd era il mio editor preferito. Per programmare in assembly, però, utilizzavo l’Hisoft Devpac citato da homero.

    @Giulio85: considerata la natura prettamente dinamica, i plugin esistenti per Python fanno un ottimo lavoro. Comunque è vero che è difficile riuscire a gestire l’autocompletamento, e mi sono accorto che più utilizzavo Python quasi come un linguaggio statico, più questi strumenti ci azzeccavano, mentre da un po’ di tempo a questa parte sfruttando particolarmente la dinamicità NetBeans spesso mi colora di rosso l’editor. :D

    Comunque usando DreamPie risolvo, perché ho “live” tutti i metodi e attributi di un oggetto, e… non si scappa: sono quelli sicuramente perché sto fisicamente interrogando l’oggetto. ;)

    Per il resto il vantaggio nell’uso di un linguaggio dinamico è notevole: arrivo a scrivere codice impiegando anche un ordine di grandezza inferiore di tempo. Questo perché mi concentro sul problema e la sua risoluzione, piuttosto che sui dettagli “di macchina”.

    E la produttività s’impenna! (cit.) :D

  • # 41
    Marco
     scrive: 

    @Cesare
    D’accordissimo! Fosse per me scriverei solo in Python :) Sono altresì fiducioso in un prossimo incremento di prestazioni (tipo http://code.google.com/p/unladen-swallow/) e maggior accettazione nel mondo enterprise/middleware.

    @iva
    Cygnus su Amiga e BBEdit su Mac, due pietre miliari! Poi per uniformità sono passato a ViM (nato proprio su Amiga) per tutte le piattaforme. Assieme a emacs (anche quello incluso in AmigaOS nella versione “micro”) oramai hanno talmente tante features da avvicinarsi ad un vero e proprio IDE.

  • # 42
    iva
     scrive: 

    @Cesare: eheh, lo stesso qui, di solito tengo cygnus ed aperto su un altro schermo per fare il browsing veloce degli include o file di documentazione.

    Anzi, ti diro’ di piu’, l’ho comprato usato di recente (trovato su amibay) da un ragazzo norvegese dopo aver preso l’A4000!

    Aspetto il prossimo articolo a tema, mi raccomando :)

  • # 43
    ReaToMe
     scrive: 

    @Cesare Di Mauro
    Capisco che tu possa non bazzicare molto per .NET Framework, ma quanto dici è relativo esclusivamente a LINQ to SQL.
    Il “paradigma” LINQ (se così si può definire) è ben più esteso e non riguarda esclusivamente l’acceso a DB.

  • # 44
    federico
     scrive: 

    a voler essere pignoli una sorta di autocompletamento, almeno per il c, ce l’ha anche vim (ctrl+p).
    Tornando al discorso ide le mie preferenze vanno ad eclipse, sarà che è stato il mio primo ide per java, sarà che ormai ho imparato a memoria quasi tutte le scorciatoie da tastiera, ma netbeans lo trovo più pesante e macchinoso nonostante debba ammettere che sia più completo (per quanto riguarda il supporto a framework e tecnologie rivolte al web in generale).

  • # 45
    Cesare Di Mauro
     scrive: 

    @Marco: conosco il progetto Unladen Swallow, ma non ha ancora raggiunto gli obiettivi che s’era prefisso. Però dietro c’è Google (più “enterprise” di lei… :D), per cui mi aspetto grandi cose in futuro. :)

    @iva: la prossima settimana tocca di nuovo al mondo Amiga. :P

    @ReaToMe: conosco LINQ, e le sue potenzialità. Python offre già un po’ di costrutti funzionali che permettono di fare più o meno cose simili ( http://docs.python.org/py3k/howto/functional.html ).

    A me serviva soltanto uno strumento pratico per l’accesso al db, che in qualche modo gli somiglia, ma volendo lo posso estendere a qualunque cosa. ;)

    @federico: prova a far partire Eclipse e NetBeans su un netbook, e poi mi dirai tu qual è il più “pesante”. :D Ma, soprattutto, prova a lavorarci. :P

  • # 46
    programmatore
     scrive: 

    voi siete pazzi a criticare il c#!

  • # 47
    Ennio
     scrive: 

    Ciao, articolo interessante perchè tempo fa ragionavo come te però devo dire due cose.

    Nel mondo J2EE non si può fare a meno di Eclipse che è un ottimo strumento ( a parte le diatribe con Netbeans ).

    Visto che dici di usare Python, io ci lavoro moltissimo e ti consiglio Komodo IDE, non ne potrai più fare a meno :)

    Saluti

  • # 48
    Marco
     scrive: 

    “a voler essere pignoli una sorta di autocompletamento, almeno per il c, ce l’ha anche vim (ctrl+p)”

    Ci sono conf e plugin per tutti i gusti, io uso questo:
    http://insenvim.sourceforge.net/screen_shots.htm

    Oltre all’autocompletamento, le caratteristiche che in determinati ambiti secondo me lo rendono insostituibile:
    – completamente scriptabile (anche in python)
    – vimdiff per gestire diff, merge, patches, ecc.
    – motore regex perl-like integrato
    – folding/unfolding, mark
    – gestione archivi gzip, bzip2…
    – ftp, http, ssh integrato e trasparente
    – split e tabbed windows
    – ottima integrazione con make, gcc, gdb, ma anche java e immagino molto altro
    – lightweight, multipiattaforma e comodo da usare anche da un terminale 80×25, o comunque da macchine prive di una GUI.

  • # 49
    leoniDAM
     scrive: 

    Cesare (insieme agli altri amanti di Python) forse potresti apprezzare questo: http://ironpython.codeplex.com/

  • # 50
    ReaToMe
     scrive: 

    @Cesare di Mauro
    Stiamo finendo un po’ OT, ma giusto per non lasciarla in sospeso.
    LINQ non è assimilabile a quanto mi hai linkato.
    A dirla tutta ci assomiglia vagamente.
    Non ho dubbi che tu possa estendere quanto hai scritto per l’accesso al DB, verso funzionalità offerte di default da LINQ.
    LINQ stesso è pensato per permettere la sua estensione.
    Basti pensare ai vari provider di terze parti per l’Entity Framework.
    Pur lavorando in C# regolarmente ho imparato a sfruttare correttamente e proficuamente LINQ solo dopo un buon mese di .NET Framework 3.5, accompagnando il tutto da letture cartacee e non.
    Daltronde “C’e più di quel che vedi” è una frase che ben si applica all’informatica.

  • # 51
    Lazarus
     scrive: 

    Consiglio a tutti Lazarus/FreePascal, un IDE che funziona su:
    – Windows
    – Linux
    – Mac OSX
    – FreeBSD
    – molto altro

    Il motto e’ “Scrivi una volta, compila ovunque”

    Puoi creare applicazioni per:
    – Win32
    – Win64
    – WinCE
    – GTK1
    – GTK2
    – QT
    – Cocoa
    – Carbon
    – fpGUI

    scrivendo il codice una sola volta. Nessun framework necessario. Niente .NET, niente Java Environment. Semplicemente appicazioni native per il sistema operativo dove si compila.

    http://lazarus.freepascal.org

  • # 52
    Nicola
     scrive: 

    Confermo Visual Studio(anche Express) per C/C++, impareggiabile, specialmente nel debug anche di codice concorrente. Ottimo anche NetBeans per la varietà di tecnologie che supporta, e la modularità che ti permette di scegliere(e di avere a video) solo quello che realmente ti serve.

    A me comunque, per quanto riguarda Java, è sempre piaciuto il Together for Eclipse della Borland. Sarà che sono un tipo a cui piace avere una visione “di progetto” anche per piccoli lavori, ma la gestione dell’UML e dei vari refactoring al volo, mi ha sempre affascinato…….

  • # 53
    khelidan
     scrive: 

    x biffuz

    il problema su Mac OS X non è che Eclipse è scritto in java allora è lento, è proprio che l’implementazione Apple della jvm( chissà poi perchè devono fare la loro e non usare quella ufficiale) fa schifo, ma schifo veramente

  • # 54
    Gianluigi Biancucci
     scrive: 

    Eclipse è sicuramente uno degli IDE più “solidi” in circolazione. Grazie anche ai numerosi plugin ed alla qualità di questi.
    Concordo con Cesare pero quando elenca i vantaggi di netbeans: maggior spazio di lavoro e velocità a mio parere lo fanno di gran lunga preferire ad eclipse :) Anche se non è da molto che lo utilizzo.
    In generale, lavorare con un semplice sistema editor+shell è molto immediato, ma si fa più difficoltà a mantenere una visione globale del progetto. Un IDE in questo aiuta moltissimo.
    La sceltà dell’IDE rimane comunque una questione di gusti, quello che non è soggettivo invece, è l’estrema importanza di un buon IDE ,con cui acquisire familiarità, per la propria produttività :)

  • # 55
    Griso
     scrive: 

    Eclipse e Visual Studio 2008 (con visual assist) i miei preferiti :)

  • # 56
    Cesare Di Mauro
     scrive: 

    @programmatore: il diritto di critica è sacrosanto. Se a te C# piace, non è detto che piaccia anche agli altri, e non per questo possiamo metterci il bavaglio per non “offendere la tua sensibilità”.

    @leoniDAM: IronPython lo conosco, ma finora non l’ho mai provato. Esattamente come Python 3.0 e 3.1.

    Purtroppo in azienda lavoriamo soltanto con macchine Linux (e siamo fermi a Python 2.5 al momento) e non c’è alcuna intenzione di provare tecnologia basata su .NET. Peccato, perché poter usare IronPython con tutto quel ben di dio che offre .NET a livello di librerie non farebbe che aumentare ulteriormente la produttività.

    @ReaToMe: non metto in dubbio che sotto LINQ ci sia molto di più. Anche se non lo uso, lo conosco. Comunque concordo che non sia il caso di continuare su quest’argomento. :P

    @Lazarus: FreePascal e Lazarus sono interessati per i motivi che esponi. L’unico, grosso, neo di quest’ultimo è il fatto che non abbia ancora raggiunto la piena compatibilità con la libreria VCL di Borland (per Delphi e CBuilder), che ritengo ancora oggi una delle migliori mai concepite (non a caso .NET ha diversi punti di similitudine).

    Poi l’IDE non è ancora ai livelli di Delphi, ma c’è parecchio lavoro dietro, e lo posso capire.

    @Nicola: UML? Vade retro. :D

    @khelidan: ma Sun (adesso Oracle) perché non si lamenta? A Microsoft, in condizioni simili, fece una causa, la vinse, e impose l’uso della sua JVM…

    @Gianluigi Biancucci: per me il futuro è rappresentato da shell interattive dotate di autocompletamento, come la DreamPie di cui parlavo prima.

    Non avete idea della comodità e dell’enorme passo avanti in termini di produttività.

    L’IDE rimane sicuramente uno strumento molto importante, ma ormai lo uso principalmente come “collante” / “collettore” fra i pezzi di codice che scrivo e provo al volo con DreamPie.

  • # 57
    Jabberwock
     scrive: 

    Anche io uso Eclipse per Java (partii, anni fa, con il notepad, ma, provato quell’IDE, non l’ho piu’ lasciato)… ma stavo cercando qualcosa per il C++ (qualche tempo fa avevo provato i plugin per Eclipse, ma ci persi una giornata a farlo andare): vedo che VS va per la maggiore… MSDNAA offre gentilmente tutte le versioni, inclusa la Ultimate: merita?

  • # 58
    Cesare Di Mauro
     scrive: 

    Direi proprio di sì. Se hai quel tipo di licenza c’è VisualStudio 2010 che è arrivato giusto da pochi giorni. ;)

  • # 59
    Nicola
     scrive: 

    @Cesare

    eheh lo so, UML non è proprio na bella cosa, io sono uno che preferisce post-it e quadernoni, ma quando ti obbligano….

    cmq a me piaceva il together perchè sono un tipo che, purtroppo, ha bisogno di “vedere” le cose, cioè avere sotto gli occhi come è strutturato il progetto, altrimenti mi confondo e faccio casini..è un mio limite :-(

  • # 60
    khelidan
     scrive: 

    x Cesare
    Sinceramente non lo so, me lo sono chiesto anchio, sarà questione di market share!
    Purtroppo però gli sviluppatore Java su piattaforma OS X sono pesantemente penalizzati, un piccolo esempio, per startare jboos su win/linus ci mette 30 secondi piu o meno, su OS X un centinaio di secondo se non di più, senza ear annessi, ti lascio imamginare la reattività di Eclipse

  • # 61
    khelidan
     scrive: 

    va bhe linus, jboos…non fateci caso! :)

  • # 62
    Gennaro Tangari
     scrive: 

    @khelidan
    Vero, JBoss su OS X è un pianto greco (almeno per farlo partire ..). Ti posso però confermare che la release corrente di Eclipse, specialmente quella Cocoa a 64bit, gira molto bene.

  • # 63
    Pluto
     scrive: 

    Trovo che il C# sia molto interessante sotto molti punti di vista, sopratutto per il supporto al lambda calcolo che io uso molto.

    Purtroppo la versione per Linux di C# (Mono) è rimasta indietro rispetto a quella per Windows. Non ho mai guardato se esiste un plugin di Eclipse per il C#.

    Java, che mi sembra essere in diretta concorrenza con C#, credo si sia arenato. A quando la versione 1.7?

  • # 64
    TheKaneB
     scrive: 

    Da programmatore C/C++ e Java, non posso che confermare la mia preferenza per Visual Studio (C/C++) e Netbeans. A dire il vero ho usato con piacere Netbeans anche per il PHP e per il C/C++, quest’ultimo però solo quando lavoro con Linux.

    Ho lavorato un po’ anche con CoderWarrior per Nintendo DS, e XCode… help! Il primo è una schifezza, veramente… il secondo all’inizio sembra carino, ma poi inizi a notare i difetti dell’integrazione con SVN, difetti nel gestire la sincronizzazione con l’iPhone che mi costringeva a volte a spegnere e riaccendere la macchina, perchè non c’era verso di recuperare (continuava a caricare la versione vecchia dell’eseguibile, nonostante i ripetuti clean&rebuild), e altre piccole cose che ti fanno storcere il naso (perlomeno a me che non sono un utente mac “abituale”, ma ho dovuto usare quella piattaforma per lavoro).

  • # 65
    khelidan
     scrive: 

    Quello del vecchio eseguibile era un baco classico del Dev C++ che però è un software non più sviluppato dal 2001 credo, averlo in xcode mi sembra grave!

    P.s: ma come ci si iscrivr su Appunti Digitali per evitare di inserire ogni volta il captcha?Sarò stordito ma non trovo il link

  • # 66
    Stas
     scrive: 

    Il mio editor di codice preferibile è Codelobster – http://www.codelobster.com

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.