Newsgroup: it.comp.java
Titolo: iniziare da zero

Salve,
vorrei dare consigli ad un ragazzo (il mio figlioccio) che sta iniziando a 
programmare ad una scuola media superiore.
La mia esperienza di programmazione � stantia, obsoleta e da autodidatta. 
Riesco a dargli consigli generici che si rivelano essere normalmente esatti 
e che lo indirizzano correttamente, ma le necessit� del mio lavoro mi 
portano pi� vicino allo scripting che alla programmazione. Non voglio far 
danno.
Vorrei che iniziasse bene... e contemporaneamente � venuta voglia anche a me 
di re-iniziare (io col tempo che ho).
Vi chiedo dunque un po' di consigli, se vorrete (� Natale!!!) darmeli:
- libri indispensabili per 1) iniziare (se serve qualcosa che non sia 
precisamente "java" ma sia essenziale per capire, ditemi anche quello!) 2) 
proseguire bene e "irrobustirsi" quando si siano terminati i primi "morbidi" 
sui fondamentali
- quali siano i pacchetti essenziali da scaricare per iniziare subito a 
lavorare su quel che si legge
- ambiente di sviluppo, sia per "essere un po' pi� scomodi ma imparare" sia 
per chi ha pi� bisogno di lavorare velocemente.
- indirizzi indispensabili su web, punti di riferimento per newbie e poi 
invece "quick reference" che voi stessi utilizzate sempre se avete bisogno.
Grazie e auguri a tutti ;-) 

 Grazie e auguri a tutti ;-)
Salve,
sono la persona meno indicata per dare consigli visto che sono un
principiante in Java.Considerato però che provengo da altri linguaggi
ho trovato l'ambiente di sviluppo NetBeans veramente ottimo. Completo,
in italiano, gratuito, personalizzabile e ben supportato.
Buon inizio
Biagio

 invece "quick reference" che voi stessi utilizzate sempre se avete bisogno.
Potresti consigliargli di frequentare (anche solo virtualmente) qualche 
JUG. In Italia ce ne sono molti, quindi probabilmente anche vicino al 
luogo in cui abitate:
http://maps.google.com/maps?f=q&hl=en&geocode=&q=http:%2F%2Fsv-web-jug.dev.java.net%2Fkml%2Fjug-leaders.kml&ie=UTF8&om=1&ll=41.787039,11.481644&spn=13.671528,33.815918&z=6
Ciao
   Lucio
-- 
Lucio Benfante
JUG Padova           
http://www.parancoe.org
 ...have a look at it!
www.jugpadova.it
 
http://www.jugevents.org

 Grazie e auguri a tutti ;-)
Per me sarebbe una buona idea adottare un buon libro Java, l'unico ed
ultimo libro che si possa comprare sull'argomento. Perchè secondo me è
necessario avere comunque un riferimento immediato.
Bisogna comunque prestare attenzione perchè molti testi Java
pretendono che il lettore abbia già una (anche minima) infarinatura.
Quindi un testo completo che parta dai tipi di dati e arrivi fino alla
presentazione del J2EE è una buona scelta.
In rete si trovano molte informazioni sull'argomento Java, ma
seguendole (secondo me) c'è il rischio di prendere strade sbagliate e
che portano solo ulteriori confusioni sull'argomento.
Sono uno sviluppatore e lavoro con dei "Senior Developer" che non
sanno come creare una eccezione. (solitamente 4°/5° capitolo di un
testo java). Con questo voglio dire che un percorso eseguito
correttamente sarà utile per non trovarsi di fronte a problemi
concettuali in un futuro.
Spero di esserti stato di aiuto..
Auguri
Luigi
p.s. Il titolo del testo che ho adottato te lo direi se solo fossi a
casa mia vicino alla libreria... Ma "ahimè" sono in vacanza, lontano
da casa... :)

 a programmare ad una scuola media superiore.
Permetti due domande:
- a scuola con cosa programmano (linguaggio, IDE, eventuali librerie, 
sistema operativo, etc.)?
- testi solo in italiano o possono andare bene anche in inglese?
Ciao,
Pablo

Come ambiente, suggerirei eclipse, come libro, probabilmente "Thinking
in Java"
Personalmente preferisco i testi in inglese, poiche' a volte (spesso)
le traduzioni possono lasciare a desiderare.
Oliver


grazie!

 - testi solo in italiano o possono andare bene anche in inglese?
per me potrebbero andare bene anche in inglese (e quindi dimmi pure) ... ma 
per lui immagino di no... dato che anche questa � una materia che deve 
imparare... potrebbe essere un buono spunto per impararle tutte e due... ma 
lui � alle superiori e tutto � "una palla" ... ma io cerco di fare in modo 
che si accorga un domani che "quanto � stato utile imparare questo a scuola 
invece che dopo!!!" :-) 

 da casa... :)
allora aspetto che torni!!! :-) 

   Lucio
grazie anche a te Lucio! 

 in italiano, gratuito, personalizzabile e ben supportato.
grazie anche a te Biagio!
Ovvio che tenderemo ad ascoltare maggiormente i consigli di un veterano... 
ma intanto io raccolgo! I veterani potrebbero anche non rispondere mai :-)
E ringrazio molto, tutti.

 a programmare ad una scuola media superiore.
Ti consiglio molto caldamente bluej ( 
www.bluej.org
 )come IDE specifica 
per la didattica di Java e OO programming.
Non ha supporto per la costruzione di GUI ma ha dei tools che lo rendono 
unico se si vuole veramente capire la programmazione ad oggetti (giusto 
per citarne uno la possibilita' di istanziare quasiasi oggetto e 
controllarne lo stato).
Inoltre,  se non ci sono problemi con l' inglese c'e' anche un testo 
molto ben fatto (trovi il link sulla home page).
Giorgio

 questo a scuola invece che dopo!!!" :-)
Conosco e capisco bene la difficolt� di suscitare interesse negli 
adolescenti. Un augurio! :-)
IMHO ad oggi non vale la pena comprare testi cartacei, vista la qualit� 
media di quelli italiani, la prolissit� (giustificata solo dalla 
possibilit� di aumentare il costo) e, appunto, il prezzo.
Al limite un "pocket" da una decina di euro tanto per avere un 
riferimento a portata.
- How to Think Like a Computer Scientist (Java version, en):
www.greenteapress.com/thinkapjava/thinkapjava.pdf
Esiste anche la versione italiana ma al momento non trovo il link. Se 
interessa ho quello della versione Python (un'occhiata la darei):
http://www.python.it/doc/Howtothink/Howtothink-html-it/index.htm
- Thinking in Java, l'ultima versione (4a) � a pagamento, le precedenti 
sono reperibili qui:
http://www.mindview.net/Books/TIJ/
Della versione 2 dovrebbe esserci anche una traduzione in italiano.
Altre risorse qualitativamente meno valide ma utili (e probabilmente pi� 
semplici e comprensibili) come punti di partenza e tutte in italiano:
Wikibooks ha un manuale ancora in fase di preparazione ma adatto a un 
ragazzo che stia iniziando ora:
http://it.wikibooks.org/wiki/Java/
Sui siti 
javaportal.it
 e 
html.it
 (ignorando la troppa pubblicit�) si 
trovano delle guide abbastanza dettagliate e curate. Non ho i link a 
portata (e la rete, la loro presumo, oggi fa le bizze).
Premettendo che non sono interessato a flame: personalmente quando 
faccio corsi di programmazione a novizi completi parto con Python.
Meno prolisso, supporta pi� paradigmi di programmazione (procedurale e 
in parte funzionale), con meno vincoli nei nomi (non serve un file per 
classe o nomi directory uguali a nomi package) e dei comandi da 
prompt/shell pi� facili da imparare (es. compilazione � automatica, 
niente path/classpath).
Visto che il primo impatto, il primo "gradino" � quello pi� difficile da 
superare in questo modo lo "aggiro". Quando si inizia la maggior parte 
degli errori e delle difficolt� sono in cose assolutamente banali, 
solitamente errori di sintassi o di case sensitive e difficolt� nel 
leggere in trace degli errori; con Python � pi� lineare il processo di 
scrittura -> esecuzione -> debug del codice.
Poi quando iniziano a prendere mano (di solito bastano pochi giorni) 
passo al linguaggio "ufficiale" del corso (di solito Java, ma non solo).
Non uso IDE ma "semplici" editor e riga di comando: mi interessa (e 
interessa anche ai committenti) formare programmatori Java, non Eclipse 
o Netbeans.
Buono studio,
Pablo

 molto ben fatto (trovi il link sulla home page).
grazie! 

 Pablo
grazie molte professore! ;-))) 

 grazie molte professore! ;-)))
Sfotti poco! ;-)
Ciao,
Pablo

 approfondirla/capirla.
A mio avviso infatti, superato lo scoglio iniziale di dover imparare a 
programmare (e in questo senso quasi sempre un linguaggio vale l'altro), 
se l'obiettivo � diventare ottimi programmatori Java, sarebbe meglio 
studiare in maniera approfondita il linguaggio stesso, cosa che permette 
poi di affrontare con tranquillit� qualunque altro problema, magari 
affidandosi semplicemente alla "googlata".
A questo scopo, il libro migliore � sicuramente "The Java programming 
Language" di Arnold, Gosling & Holmes (non per niente uno degli autori � 
Gosling).
Ma soprattutto...programmare � come imparare a lanciarsi con il 
paracadute: non basta leggere un libro. Occorre soprattutto tanta 
pratica...altrimenti...splash! :) (ok, forse programmare non � cos� 
pericoloso)
Il modo migliore per fare pratica � partecipare a progetti open-source, 
sia iniziandone di propri da zero, ma soprattutto cercando di 
partecipare a progetti esistenti, esaminando quindi il modo di lavorare 
di altri, e iniziando a fare i propri esperimenti su codice reale.
<modalit� auto-promozione>
Questi sono alcuni di quelli che gestisco io:
http://code.google.com/p/minimark/
http://code.google.com/p/scarabocio/
http://code.google.com/p/jslideshare/
http://code.google.com/p/lambico/
http://code.google.com/p/parancoe/
http://code.google.com/p/jugevents/
Se qualcuno � interessato a contribuire...mi faccia un fischio, o scriva 
nelle mailing-list del progetto.
</modalit� auto-promozione>


 nelle mailing-list del progetto.
Quoto la tua auto-promozione ;)
Ciao,
Pablo

 pi� recenti.
Io credo di aver usato una seconda edizione inglese, e ho acquistato 
come aggiornamento la sesta pocket in italiano (del 2004). Sempre ottima.
Inoltre Horstman, � uno che si aggiorna costantemente, sia dal punto di 
vista tecnico, che didattico.


 invece "quick reference" che voi stessi utilizzate sempre se avete bisogno.
Google e wikipedia ;)
 - 
http://www.google.it/
 - 
http://wikipedia.org/
Un'ultima cosa, quel che ci riesce meglio è, solitamente, quel che ci
piace di più! Se gli piace la programmazione, non è detto che gli
piaccia tutta!
Alcuni amano lo sviluppo di User Interfaces, quindi javascript e
librerie (jquery), css ed HTML. Altri odiano qualsiasi cosa abbia
grafica, allora java è perfetto. Altri ancora preferiscono vedere le
cose nell'insieme ed essere autonomi ed usano .net, che con il suo IDE
maschera molta complessità. Chi ama i prodotti mobile, usa objective C
e sviluppa su iPhone (fico) o android.
*La vera cosa che conta è che si diverta!*
Spero di esser stato di aiuto.
Buon anno, Davide.

 Buon anno, Davide.
GRAZIE molte anche a te Davide!!! e ancora auguri (per la Befana, oggi!!!)
ciao! :-) 

 Sfotti poco! ;-)
Dai che sei prof!!! :)
si o no? ;-)
insegnare � un'arte.
comunque RINGRAZIO MOLTISSIMO!!! :) 

 </modalit� auto-promozione>
he he!! :)
interessante
grazie anche delle tue considerazioni!!! 

 Quoto la tua auto-promozione ;)
piano, piano!!! ;-))
grazie a tutti voi 

 si o no? ;-)
S�, ma solo come attivit� saltuaria e secondaria :)
Buono studio! ;)
Pablo

 Pablo
grazie mille di tutto anche a te 

 conosco!!!) sbaglio?
S�, e queste conoscenze sono erroneamente considerate accessorie. Al 
giorno d'oggi dovrebbero essere parte fondamentale del bagaglio 
culturale di uno sviluppatore, forse anche pi� importanti della 
conoscenza del linguaggio. Dopotutto, a che serve saper programmare, se 
poi non si riesce a gestire il codice che si produce?
La collaborazione con progetti open-source � utilissima anche per 
imparare le pratiche e gli strumenti di gestione di un progetto.
CVS? ....roba vecchia (comunque ancora molto usato). Oggi si usa 
soprattutto Subversion, e anche questo incomincia ad essere rimpiazzato 
da sistemi di controllo di versione distribuiti, ad esempio Mercurial 
(che � quello che uso di solito) o Git.


 se poi non si riesce a gestire il codice che si produce?
ok allora fai conto che stia iniziando il thread di nuovo ( hey!!! vale per 
tutti!!! ^__^ )... per questa parte, dove si impara passo passo, dove sono 
le basi? ci sono dei libri? qualcosa che spiega i concetti e poi la pratica?
grazie! :) 

 poi la pratica?
Rimanendo nel campo dei sistemi di gestione dei sorgenti (SCM - Source 
Code Management), e considerando solo i principali:
Subversion: 
http://svnbook.red-bean.com/
Mercurial: 
http://hgbook.red-bean.com/
Git: 
http://book.git-scm.com/
CVS direi che � da considerare obsoleto. Comunque se toccasse usarlo, 
l'utilizzo � praticamente identico a Subversion.
Ovviamente dopo gli SCM ci sarebbe un'infinit� di altre cose da 
approfondire, che non riguardano la conoscenza del linguaggio, ma che un 
buon sviluppatore dovrebbe usare. Ad esempio: programmazione assistita 
dai test (lo so, � una dicitura non-convenzionale, ma a me il TDD non 
piace, e di solito li uso in maniera pi� light), pratiche di continuous 
integration, sistemi di issue management, scrittura della 
documentazione, qualit� del software, ecc. ecc... Un'infinit�, appunto.
Un libro interessante e ad ampio spettro:
http://www.pragprog.com/titles/prj/ship-it
...ovviamente � solo il primo passo.
Se poi volete dare un'occhiata alla mia libreria (purtroppo � un po' che 
non la aggiorno, manca qualche acquisto dell'ultimo anno, e forse 
qualcosa di pi�...ma cercher� di aggiornarla...prima o poi):
http://www.librarything.com/catalog/benfante/yourlibrary



vai qui:
http://www.claudiodesio.com
scarica il book:
Object Oriented && Java 5 (II Edizione)
che � gratis e in italiano, puoi scaricare anche l'editor EJE
di cui sono forniti anche i sorgenti per vedere come � fatta una 
applicazione desktop

 
http://www.librarything.com/catalog/benfante/yourlibrary
quando la aggiorni l'indirizzo � sempre lo stesso, no? :)
ottimo ottimo!!! ancora grazie a tutti per il supporto! 

 applicazione desktop
intanto subito _grazie_ anche a te!
secondo: questo tratta di gestione del codice? subversion, CVS ecc ecc?