Ide o editor ?

Giovedì 27 Ottobre 2005 - 09:00

di Gabriele Farina

PHP e Open Source

Ieri sera ero in pizzeria con un amico che ha iniziato a programmare molto prima che io decidessi di dedicarmi a questa attività. Tra i vari argomenti di cui abbiamo dibattuto quello affrontato più frequentemente riguardava l’utilizzo di editor testuali per lo sviluppo di codice oppure l’utilizzo di IDE.

La discussione è nata dopo la lettura degli articoli di DEV che preannunciavano le feature della nuova versione di Visual Studio che, a quanto pare, integrerà in un’unica suite una serie di strumenti necessari a coprire in modo più o meno completo l’intero processo di sviluppo di un software. Secondo gli ingegneri Microsoft (cosa con cui mi trovo parzialmente d’accordo) il software attualmente non si può più permettere lunghi periodi di sviluppo, altrimenti rischia di essere obsoleto al momento del rilascio. Per questo motivo, a loro parere, un IDE dovrebbe integrare una serie di strumenti che facilitino l’organizzazione e la produzione e, di conseguenza, diminuiscano i tempi di ricerca e sviluppo.

Nulla da togliere al fantastico IDE di Microsoft, ma quello su cui si dibatteva ieri era una leggera sfumatura di questa argomentazione: lo strumento che dovrebbe aiutarci a diminuire i tempi di sviluppo dovrebbe essere l’ambiente che utilizziamo oppure gli strumenti (linguaggio di programmazione e correlati) stessi che abbiamo deciso di usare ? Dovrebbe essere i C# della situazione ad essere un linguaggio capace di diminuire i tempi di sviluppo oppure l’IDE che ci permette di utilizzarlo ? A mio parere (molti di voi non saranno d’accordo e mi interessa particolamente l’altrui opinione in questo caso) è il linguaggio stesso che deve velocizzare i tempi di sviluppo. Non è molto utile uno strumento potente se poi non si è in grado di utilizzarlo per raggiungere completamente i propri obiettivi.

Sinceramente non so quali siano le reali differenze a livello di tempi di sviluppo tra tutti i linguaggi esistenti, ma, se posso fare un esempio specifico, utilizzo Python e PHP da molto tempo e devo dire che con loro i tempi di sviluppo sono relativamente brevi. Certo, PHP avrà delle lacune dal punto di vista delle funzionalità, sarà più prono agli errori, ma è indubbio che un’applicazione web venga sviluppata più celermente con PHP che con altri linguaggi suoi concorrenti. Per non parlare di Python: i tempi di sviluppo non sono neppure paragonabili a quelli necessari per effettuare applicazioni simili in Java o C++. Ovviamente non è sono solo i tempi di sviluppo che contano nella produzione di software, ma ormai sono i più importanti. E’ vero che i linguaggi che facilitano i RAD (Rapid Application Development) spesso mancano di alcune funzionalità che potrebbro essere utili (vedi il type checking in fase di compilazione per esempio), ma non sono indispensabili e spesso possono essere emulate senza grandi difficoltà. La libertà è di movimento all’interno del linguaggio è quella che diminuisce i tempi di sviluppo: un sistema completo di Code Coverage in Python può essere scritto con pochissime righe di codice. Non so quanto ci voglia a fare lo stesso in C++, ma penso tempi nettamente più lunghi.

Tornando al discorso iniziale, nel momento in cui è il linguaggio stesso a fornirci strumenti sintattici che ne facilitano la stesura, diventano parzialmente inutili gli IDE troppo complessi o ricchi di funzionalità. Personalmente utilizzo per lo sviluppo web Notepad++, e per lo sviluppo desktop rispettivamente IDLE per Python e DEV-CPP per C/C++. Di questi il più avanzato è sicuramente l’ultimo, anche se il 70% delle funzionalità mi sono del tutto estranee perchè non le utilizzo. Ritengo veramente utile solo la colorazione della sintassi, ed in rari casi il class browser. Il resto è puro condimento, che può essere reso quasi totalmente utile se si utilizzano gli strumenti giusti e con il gisto approccio. Se uniamo all’editor pure e semplice una libreria per lo Unit Test siamo a cavallo. Non pretendo che le mie parole siano oro colato, e mi interesserebbe sentire il parere di qualcun’altro sull’argomento. A risentirci …

Tags:

Categoria: PHP e Open Source | Permalink

Commenti

1

Non è un problema né di editor/IDE né di linguaggio, secondo me.
Il linguaggio ha una sua notevole importanza, certo, ma riguarda solo la fase di codifica.
La codifica però è solo una parte, e non la più importante, del ciclo di sviluppo software.
Per ridurre i tempi di sviluppo occorre agire sulle fasi precedenti (e concorrenti) del ciclo, quindi analisi e progettazione.
Il problema dello strumento va quindi visto in ottica di progetto: quali strumenti e linguaggi di progetto mi consentono di ridurre i tempi di sviluppo totale?
E risulta evidente che più si sposta l’attenzione e lo sforzo sulla progettazione, meno tempo sarà necessario in codifica, e minori saranno anche gli errori nel codice. La tendenza è proprio questa.

# - postato da Skid X - 27 Ottobre 2005 - 12:37

2

tutto ha importanza … sia il linguaggio sia l’editor

prendi ad esempio la realizzazione di interfacce grafiche sviluppate manualmente

quando ho dovuto realizzare l’interfaccia in gtk per php per il client irc per il phpday dell’anno scorso ho impiegato di 3 giorni per disegnarla … e non è che ci fosse chissa che cosa … 1 giorno per scrivere il client irc o per meglio dire la classe che si interfaccia con il server e 3 per l’interfaccia (parlo solo di comporre la gui non di renderla funzionale)

credo che sia improponobile una cosa del genere

C# è ottimo perché ti offre la velocità di sviluppo del vb con la potenza del linguaggio C7C /Java … ma senza uno strumento di sviluppo appropriato che ti permettà di velocizzare il processo di realizzazione del codice in tutte le sue parti (auto completamento, guida in tempo reale, editor per le interfacce e cosi via) secondo me si perrde ben più di una buona metà del tempo di sviluppo a costruire la GUI

perché linguaggi come python, perl … o ruby … sono poco usati per realizzare applicativi grafici pure essendo NOTEVOLMENTE potenti e diffusi? perché manca un’editor per le gui BEN fatto e stabile (per python ne ho provati svariati ma mi hanno deluso tutti) e in questo devo dire che l’IDE/RAD della microsoft li batte tutti :)

Un’altro esempio può essere il DevCPP … fantastico … ma siamo sempre li … rispetto al vs non permette la realizzazione di interfacce grafiche rendendo quindi i tempi di sviluppo notevolmente più elevati …

se devo provare un font diverso o devo mettere un grassetto per vedere come sta graficamente con il resto dell’interfaccia e ho necessità di modificare il codice sorgente, ricompilare e arrivare alla schermata triplico (almeno) i tempi di sviluppo :)

almeno questo è quello che posso dire per le mie esperienze che per’altro è anche il motivo per il quale ho iniziato a sviluppare in C# piuttosto in python (come VS c’è anche SharpDevelop e devo dire che la nuova versione è DECISAMENTE potente!)

# - postato da daniele_dll - 27 Ottobre 2005 - 13:19

3

Ciao Daniele ;)

A dir la verità, se c’è una cosa che non sopporto è che un programma scriva codice al posto mio. Quindi una cosa su cui non sono (e penso non sarò mai :) ) d’accordo è utilizzare le funzionalità che ti permettono di creare interfacce grafiche automaticamente.

Mi è spesso capitato di scrivere a mano interfacce grafiche, e quando conosci la libreria abbastanza bene i tempi di sviluppo non sono così differenti (anzi, tenderei a dire che scrivere a mano a volte semplifica e velocizza le cose).

Usando programmi simili oltretutto non hai molto controllo sull’operato: ci sono situazioni (molte) in cui il codice autogenerato non va affatto bene (vuoi perchè hai un sistema personalizzato di recupero risorse, vuoi perchè i widget devono assumere funzionalità e comportamenti dipendenti dal contesto) e necessita di revisioni che rischiano di allungare molto i tempi.

Per carità, data la mia filosofia è da un po’ che nn uso editor simili, quindi potrei anche ricredermi … ma nn è che ne abbia molta voglia ;)

Comunque pure io ritengo C# un ottimo linguaggio, lo uso ma non ho MAI utilizzato la generazione automatica delle interfacce grafiche (cavolo, nn mi viene in mente il nome tecnico oggi!!) ed ho sempre fatto tutto a mano.

hasta!

# - postato da Darkbard - 27 Ottobre 2005 - 15:06

4

si chiamano RAD (Rapid Application Devlopment) gli IDE con gli Editor per le GUI :)

personalmente mi muovo molto bene con le Windows.Forms ma comunque dipende cosa devi sviluppare

andare a creare un’interfaccia con 30 campi di testo e relative label dentro un panel scrollabile ed una lista di selezione dati che aggiorna quei 30 campi richiederebbe una quantità immane di tempo per essere sviluppato a mano

in tutta sincerità sono stati pochi i casi nei quali mi sono trovato in difficoltà con l’editor per le gui del .net ed ho aggirato il problema semplicemente creando il componente a manina dopo che veniva richiamato il codice del desginer della gui

alla fin fine continui ad ottenere un risultato elegante, il codice funzionale e flessibile e anche una facile revisionabilità … il codice che butta fuori il designer delle gui è strutturato in modo banale … tutte le proprietà inerenti ad un’oggetto sono consecutive ed il form contenente il tutto è alla fine … di conseguenza se c’è TANTO codice basta un colpo di CTRL F per trovare dove devo cercare

cmq ti ripeto … personalmente mi sono trovato benissimo e col tutto che sono abituati a scrivere le interfacce a mano (con php mica ci sono editor … o meglio ci sono ma tirano fuori immondizia e io li odio per questo) devo dire, e devo essere sincero anche se odio ms con tutto il cuore, che il codice che tira fuori sia il VS sia SD (SharpDevelop) è ben fatto, ben strutturato e molto semplice da modificare a mano :)

# - postato da Daniele - 27 Ottobre 2005 - 15:32

5

Concordo con daniele_dll, sono importanti entrambe le cose. Il linguaggio può velocizzare le cose integrando delle funzioni per le operazioni più comuni, se per implementare una caratteristica nel mio programma devo scrivere 50 righe perdo tempo rispetto ad usare una funzione che fa già quello che mi serve (chiaramente parlo di funzioni comuni, se voglio che la mia applicazione mi faccia il caffè connettendosi a infrarossi con l’apposita macchinetta è un problema mio :D).
L’ambiente di sviluppo deve mettere a disposizione strumenti che consentano di avere sott’occhio il prima possibile il risultato visivo finale o comunque qualcosa di molto vicino, perchè giustamente se devo riscrivere del codice, ricompilare etc solo per cambiare la posizione di un pulsante i tempi di sviluppo ne risentono molto.
Verissimo però anche quanto detto da skidx, molto importa anche la fase di progetto. Meglio progetto una cosa e meno “cambi in corsa” dovrò effettuare, sicuramente il fatto che nascano spesso nuove tecnologie e nuove applicazioni a volte compilca le cose, perchè viene quasi spontaneo dire “toh, è uscita una cosa nuova, ora la aggiungo anche io” quando magari richiede troppo tempo rispetto ai vantaggi che porta.

# - postato da Broly - 27 Ottobre 2005 - 15:32

6

Credo che ormai il mercato abbia da tempo decretato la vittoria dei linguaggi che potevano confidare su solidi IDE in grado di supportare un framework ufficiale.
Il Visualstudio si è posto come anello di congiunzione tra i diversi linguaggi e le tonnellate di codice e librerie disponibili rendendo l’interazione dei due elementi molto più agevole.
Lo stesso si può dire circa gli IDE per il Java (avete visto il futuro netBeans?)
Un buon IDE migliora la qualità del codice, grazie ad esempio al controllo della sintassi, a potenti debugger integrati, all’uso di snippets di codice collaudato. Il framework da parte sua permette a linguaggi ostici la possibilità di realizzare potenti applicazioni in poche righe (avete visto l’Hello World delle QT4? non sembra C )
Inoltre lo sviluppo collaborativo, l’utilizzo di sistemi di versioning, il refactoing, l’integrazione con diversi server di database, la creazione automatica di documentazione, sono tutte attività che trovano grande giovamento dall’uso di potenti IDE.
I recenti progetti di Zend (realizzazione di un IDE basato su Eclipse e dello Zend PHP Framework) sono una conferma a tutto ciò.
Un linguaggio di programmazione non potrà mai essere tanto migliore dei suoi predecessori da far risultare inutili gli IDE.

# - postato da Gianni_T - 27 Ottobre 2005 - 15:40

7

Cavolo, non tutti contro di me, altrimenti rischiate di convincermi a cambiaare filosofia!

A parte gli scherzi sono d’accordo con voi su Visual Studio: se c’è una cosa di cui NON ci si può lamentare di Microsoft è la potenza, versatilità e completezza degli IDE. Sono solamente ancora molto dubbioso sul fatto che sia utile o meno un ambiente RAD (ah, finalmente la parolina giusta!) soprattutto per la applicazioni di un certo livello.

Concordo in parte col discorso di Skid; il planning è fondamentale ma a mio parere non deve interferire con la stesura di codice in modo diretto. Deve aiutare a stendere codice migliore, ma non deve interferire.

Dimenticavo: w le QT ;)

# - postato da Darkbard - 27 Ottobre 2005 - 19:09

8

percarità … non voglio essere contro di te … poi i fatti sono veramente quello che importano e se tu riesci a essere produttivo tanto quanto o di più ti posso solo fare i complimenti perché io c’ho provato e mi sono esaurito ^_^

se devo essere sincero non avevo letto il post di skidx ed ora che l’ho fatto non posso far altro che quotarlo al 100%

Ma questo fa venire a galla una cosa: non solo l’ide … il rad … il linguaggio … la progettazione … ma TUTTE le altre parti, tutte le altre sezioni o fasi della progettazione di un software devono essere ben portate avanti … e se vogliamo suddividerle con un qualcosa tipo

- informazioni dal cliente
- progettazione del software
- sviluppo del software
- testing del software

possiamo solo dire che se anche una sola di queste parti viene portata avanti male succede un casotto!
Immaginate, nella peggiore delle ipotesi, che non si capisca PERFETTAMENTE ciò che il cliente richiede … succederebbe una catastrofe … o che durante lo sviluppo siccome il rad cicciobello tira fuori codice di cacca uno debba usarlo e poi addobbare perdendo non solo il doppio del tempo ma aumentando il codice e di conseguenza i bug … o ancora il testing viene eseguito da persone che hanno sviluppato il software o viene eseguito usando tecniche e mezzi non adatti … ognuna di queste cose ha un peso … differente, ma lo hanno tutte

Ad esempio non ho mai usato CVS perché la configurazione è da esaurimento … ma da quando ho scoperto SVN gestisco TUTTO il mio codice li su … mai avuti problemi … molto spesso essenziale!
Quando scrivo qualche componente in C# NUnit è comodissimo e dimostra la sua effettiva utilità quando hai 600 librerie che si richiamano a vicenda!!! (cosa vuol dire … che una libreria magari restituisce dei dati corrotti ma l’errore lo visualizza un’altra ecco … in quei casi è fondamentale)

posso dire solo una cosa … non è tanto importante lo strumento che viene usato ma è molto di più conoscere BENE lo strumento che si sceglie di usare … o per meglio dire gli strumenti che si scelgono di usare! :)

# - postato da Daniele - 27 Ottobre 2005 - 21:19

9

sono alla disperata ricerca di uno strumento RAD per python. qualcuno di voi può suggerirmene uno?
ringrazio sin d’ora per le risposte.

# - postato da Cosimo - 22 Aprile 2007 - 16:36

10

salve
da poco … anzi voglio iniziare a programmare in JAva, dopo aver scaricato tutto l’occorrente, ho visto che il NetBeans 5.0 ovviamente è in inglese.
esiste un manuale in italiano del netbeans e anche del sun java creator?
grazie

# - postato da gaetano - 10 Maggio 2007 - 15:09

Inserisci il tuo commento:





(puoi usare i seguenti tag HTML per formattare il testo -
a href, b, i, br/, p, strong, em, ul, ol, li, blockquote, pre):

 

Anteprima del commento