Newsgroup: it.comp.java
Titolo: Iniziare ma non con java

Ciao a tutti
ho studiato per un po' java ma sopratutto per gioco.
Ora vorrei fare qualcosa di carino per 2 motivi:
1) ho un esame di programmazione java quindi sfrutterei il programma
come esame.
2) mi sono un po' stufato di fare i soliti giochini che propongono sui
libri.
A questo punto chiedo a voi che avete più esperienza:
ho optato per eclipse in quanto da sempre il mio preferito su netbeans
(nonostante sia ottimo anche lui).
Ho un rep svn sul mio account all'Università e ho già fatto il
collegamento con eclipse (con il plug subversion).
Siccome faccio fisica non ho mai fatto progettazione del software
quindi ecco i miei dubbi:
in linea di massima ho idea di come le cose andrebbero implementate
(naturlamente non sapendo niente di UML e niente di ingegneria del
software potrebbe capitare l'intera scrittura dell'applicazione...) ma
ai prof (che lo sanno) va bene anche un progetto non troppo curato
sotto questo punto di vista.
Come vi consigliate di creare il progetto?
Struttura delle directory?
Altre cose che ora non sto pensando sono comunque utili...
Per ora non svelo niente ma aspetto di avere qualcosa di pronto.
Che ne dite della gpl3?
Grazie in anticipo
--
Ciao Neo

 Struttura delle directory?
consiglio vivamente di utilizzare maven2 con il relativo plugin per eclipse.
la struttura delle directory è standard.
http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
-- 
 Fino all'anno scorso avevo un solo difetto. Ero presuntuoso.
http://softvalley.blogspot.com
http://www.flickr.com/photos/marko_po/

 la struttura delle directory è standard.
http://maven.apache.org/guides/introduction/introduction-to-the-stand.
..
Perfetto! Il plugin è disponibile in callisto? Altri consigli da darmi
per iniziare? Sai è la prima applicazione semi seria che provo a
fare...
--
Ciao Neo

Il plugin è disponibile in callisto?
A questo mi sono già risposto!
--
Ciao Neo

 fare...
non saprei. comunque ti preannuncio che il primissimo impatto con maven 
è leggermente ostico, ma ne vale la pena. si configura dal file pom.xml, 
il plugin di eclipse (tasto destro su questo file) ti fa gestire le 
dipendenze in modo semplicissimo, poi lanci i vari "goal" del lifecycle 
del progetto et voilà.
a occhio, non dovresti avere neanche bisogno di particolari plugin.


che progetto ??
-- 
Davide Consonni

 a occhio, non dovresti avere neanche bisogno di particolari plugin.
Ok ho installato il plugin e ora provo a fare delle prove in locale
prima di sminchiare il svn...
--
Ciao Neo

Come vi consigliate di creare il progetto?
Scrivi un sistema in cui un server genera tutti i numeri ISBN in un
determinato range e li passa ad uno o più client perché questi ultimi
scarichino - da fonti note (es.: 
www.isbin.com
) - tutte le
informazioni sui libri. Puoi avere più server che si smazzano range
diversi di ISBN (fino a saturare l'intero intervallo: circa due
miliardi di informazioni) e puoi connettere al volo dei nuovi client.
Se lo fai, me lo presti, perché mi serve :-)))

 che progetto ??
Diciamo che è una prova per imparare a lavorare in ambiente
distribuito. In effetti il tutto potrebbe essere fatto in locale senza
tante complicazioni ma che gusto ci sarebbe?
In ogni caso è una prima implementazione di un CAS con una particolare
attenzione al calcolo numerico (integrazione numerica per prima cosa),
però spero di riuscire a fare calcolo simbolico (una sorta di maxima
in java).
Ora faccio delle prove, finisco l'esame (magari rompo un po' qui per
l'implementazione) e poi magari lo pubblico con licenza gpl3 ma ora ci
penso ;). In ogni caso sempre open,
Stavo pensando di creare diverse sezioni a partire dal parser che
servirebbe a invenzare un linguaggio per fare i conti (con la sua
sintassi che sia il più possibile fedele alla notazione fisico/
matematica).
Poi il calcolatore che fa il lavoro sporco, e ho pensato a una
interfaccia che implementa i vari metodi astratti (tipo somme
sottrazioni ...) e poi li implemento nelle varie classi (penso ai
numeri complessi).
Il lavoro è tanto ma spero di riuscire a portarlo avanti.
Hai qualche consiglio da darmi? Non vorrei ritrovarmi a metà del
lavoro e dover riscrivere tutto... UML? E' veramente utile?
--
Ciao Neo

 Se lo fai, me lo presti, perché mi serve :-)))
coff coff... :)
--
Ciao Neo

 Ciao Neo
-- 
Andrea Francia
http://andreafrancia.blogspot.com/2008/06/macross-frontier.html


Ma a cosa può servire una cosa del genere?


 E' piu' utile che impari a fare i test di unità.
Ecco... Già non so cosa sono. Questa esperienza mi farà imparare tante
cose...
Grazie x le dritte
--
Ciao Neo

Ma a cosa può servire una cosa del genere?
Tranquillo. Serve.


Non dico che non serve. Sono solo curioso.


Non dico che non serve. Sono solo curioso.
Sto costruendo una base dati d'opere letterarie e vorrei consentire
all'utente di inserire solo il codice ISBN e recuperare in automatico
i dati del libro. 

 Ok quindi secondo te da dove dovrei iniziare? Dal parsing?
Inizia dallo scrivere i casi d'uso. La cosa piu' importante quando si 
comicia a sviluppare un software e determinare *cosa* deve fare.
Facendo questo rischi molto meno di arrivare ad un punto e dover rifare 
tutto.
Quali sono le diverse operazioni che puo' fare l'utente?
Fai un elenco. Quello è l'elenco dei casi d'uso. Magari postalo.
Per ogni caso d'uso descrivi l'iterazione tra l'utente e il Sistema.
Quello è il dettaglio dei casi d'uso.
Poi prendine uno alla volta e implementali.
Magari comincia con il fare l'elenco e postarlo.
 >> E' piu' utile che impari a fare i test di unità.
 >
 > Ecco... Già non so cosa sono. Questa esperienza mi farà imparare tante
 > cose...
Sono uno strumento che se usato bene ti può aiutare a scrivere codice 
robusto con meno bachi e piu' velocemente.
Di solito per implementarli in Java di solito si usa un framework 
chiamato junit.
L'idea e quella di scrivere un metodo per volta e vedere se funziona.
Magari lo fai già scrivendo il metodo e provandolo con il debugger.
Al posto di provarlo con il debbugger si fa un piccolo programmino che 
chiama il metodo e verifica che, per esempio, restituisce il valore 
giusto con certi input.
In questo modo hai un test automatico che è sempre disponibile.
Man mano che vai avanti e aggiungi metodi e classi al tuo programma 
parallelamente aggiungi dei programmini di test.
Questi programmini di test sono scritti usando junit che permette di 
chiamarli tutti seguito insieme e ti dice se qualche metodo è fallito.
Capita che durante lo sviluppo quando aggiungi o modifichi una nuova 
cosa ne rompi una che c'era già. Avendo i test di unità scopri subito se 
hai rotto qualcosa nel codice vecchio senza rifare tutte le prove a mano.
Un'altra concetto importante e scrivere prima i test della 
implementazione. Pensare prima ai test ti chiarisce meglio come deve 
comportarsi il metodo che andrai a scrivere. Sembra un lavorare al 
contrario ma funziona.



Ma nella tua base dati vuoi mettere tutte le opere catalogate?


 fare dei parser basate sulle grammatiche.
Si, piu' che utile, praticamente indispensabile se si intende fare qualche 
cosa di serio.
ANTLR e' davvero un ottimo strumento, e antlrWorks e' pure ottimo.
Poi se deve fare qualche cosa di veramente banale puo' anche scriversi un 
parser ricorsiv, ma io eviterei.... In un paio di ore impari l'ABC di Antlr 
e poi con poco sforzo ottieni risultati ottimi.
Tommy

 cose...
Guardati JUnit.
Tommy

 Quello è il dettaglio dei casi d'uso.
Secondo quello che abbiamo detto dovrebbe scrivere: Integrate(f(x), a,
b, n) con n numero di passi per l'integrazione, a quel punto il
programma interpreta e spara il risultato (con un metodo che fa il
calcolo numerico).
Grazie di tutto per ora!
--
Ciao Neo

 calcolo numerico).
Allora mi sembra di capire che hai tre casi d'uso.
  - L'utente specifica una funzione
  - L'utente avvia l'integrazione numerica
  - L'utente avvia la derivazione numerica
Dettaglio di alcuni casi d'uso:
L'utente specifica una funzione
-------------------------------
  * Il sistema chiede all'utente di inserire la funzione
  * L'utente specifica una funzione in x, per esempio
  5*x+x^2
  * L'utente da conferma.
L'utente avvia l'integrazione numerica
--------------------------------------
  * L'utente avvia il programma di integrazione
     per esempio
	java -jar prog.jar --integrazione
  * L'utente specifica la funzione (include L'utente specifica una funzione)
  * Il Sistema richiede a
  * L'utente specifica a
  * Il Sistema richiede b
  * L'utente specifica b
  * Il Sistema richiede n
  * L'utente specifica n
  * Il Sistema avvia l'integrazione.
I numeri a, b, c devono essere reali, se non sono reali il programma 
termina con un'errore.
Poi dovresti definire la grammatica del linguaggio usato per specificare 
la funzione e le possibili funzioni (pow, log, etc.)che si possono usare.
-- 
Andrea Francia
http://www.andreafrancia.it/

 la funzione e le possibili funzioni (pow, log, etc.)che si possono usare.
Si. Appena ho un po' di tempo guardo quei programmi per il parser.
--
Ciao Neo