Newsgroup: it.comp.java
Titolo: Grande dilemma programmatorio.

Sono un giovane aspirante RJP (Real Java Programmer) di 15 anni, e,
sviluppando un piccolo giochino in Java mi sono iniziati a venire dei
dubbi esistenziali sulla programmazione ai quali spero qualcuno possa
rispondere.
Mi sono accorto che a voler seguire alla perfezione tutte le regole di
'etichetta' della programmazione ad oggetti, si rischia di perdere in
velocita' (intendo proprio velocita' di esecuzione).
Per esempio a voler tenere una totale incapsulazione dei dati, con i
vari metodi get..() e set..() il calcolatore si affatica di piu' che non
se si acceda direttamente ad i campi di un oggetto, soprattutto se in
termini di chiamate continue e ripetitive tipo eventi mouseMove() o
mouseDrag().
Questo dubbio mi e' venuto perche' mentre stavo sviluppando il mio
giochino, mi sono capitati sotto le mani dei sorgenti di alcuni giochini
simili al mio che erano formati da 1(!!?) sola classe e quindi
illegibili (oltretutto anche non commentati). Cio' nonostante
l'applettino non affaticava per niente il computer e devo dire che me la
sono sentita un po'.  Io ho creato 5 classi ed un paio di interfacce per
adesso, ma non escludo di aggiungere altre entita' (dopo aver terminato
il gioco vero e proprio)!!!
Sto cercando di limitare il piu' possibile il consumo di risorse, ma mai
quanto quei sorgenti che, secondo me, sono ridotti all'osso.
Ci tengo a precisare che lo scopo del mio programma e' quello di
imparare bene la programmazione ad oggetti, e nient'altro.
Comunque se, come credo, questo argomento non e' utile ad altre persone
che lo leggeranno, prego tutti di contattarmi via mail per colmare la
mia ignoranza, piuttosto che incasinare il newsgroup di roba che non
interessa nessuno.
Grazie in anticipo ed in ritardo a tutti quelli che mi risponderanno.
 
-- 
*******************************************
Stefano Cristiano
autodeclarated Java programmer
ovverosia --> Pagghiu
E-mail: 
spag...@tin.it
 ITALY
Wonderful JAVA
"Java is multi-platform, but not multi-browser..."
*******************************************

Come ti sei risposto da solo,
incapsulare i dati secondo le migliori tecniche OO riduce le
prestazioni (e alle volta allunga anche i tempi di sviluppo).
Se pero guardi Java come un ambiente di lavoro professionale,
e non solo per la realizzazione di giochi, ti spiego un concetto
molto semplice:
incapsulare oggi significa capire cosa modificare domani, anche
se non hai fatto tu il programma, a costi bastissimi.
Daltronde, l'hardware cresce cosi rapidamente che fra 6 mesi
il tuo giochino o SW gestionale girera due volte piu velocemente,
e ringrazierai il tempo perso nel progettare il tutto correttamente !!
Tieni presente che inoltre, nel campo java, oltre all'HW migliora
anche la JVM....


 Comunque se, come credo, questo argomento non e' utile ad altre persone...
Questo argomento mi sembra invece interessante. Ho tentato di risponderti io
anche se sono un principiante. Se ho detto qualcosa di sbagliato, correggetemi.
ciao
STefano

Sono un giovane aspirante RJP (Real Java Programmer) 
Ciao Stefano!
Io ti consiglio di scrivere prima del codice robusto, mantenibile, etc.. usando tutti i crismi della OOP.
Dopo con un profiler potrai individuare i colli di bottigli ed eventualmente scrivere versioni "truccate" delle classi.
Le versioni originali le custodirai per il futuro quando la chiarezza ti sarà piu' necessaria dell'efficenza.
Tieni presente che la qualità di un programmatore non si vede solo nella velocità che sa dare ma anche nella capacità di rispettare i tempi di consegna e nel non dare grane (leggi bug scoperti dopo la
pubblicazione).
Comunque ecco una pagina dedicata alle ottimizazioni in JAVA, spero sia utile a te ed agli altri-
http://www.cs.cmu.edu/~jch/java/optimization.html
Ciao !!!
#######################################################################
email:     remove "NoNoNo"
           rimuovi "NoNoNo"
homepage:  
http://www.geocities.com/SiliconValley/Pines/8427/
#######################################################################