[RELug] [OT]: Java
Luca Bigliardi
shammash@artha.org
Sab 25 Mar 2006 12:35:13 CET
On Sat, Mar 25, 2006 at 10:31 AM, Vecchi Giovanni wrote:
> In questo suddetto corso, oltre ad esaltare le doti di portabilità e del
> vantaggio di avere un linguaggio tutto ad oggetti
Ecco, cominciamo ad esempio da questo (che immagino ti abbian detto quelli
dell'ifoa). In java non mi pare che tutto sia orientato agli oggetti,
esistono infatti quegli stracazzo di tipi primitivi. Ora, qualcuno mi
spieghi perche' ci deve essere il tipo primitivo int e la classe Int.
Questo direi che va contro ad uno dei requisiti fondamentali di un
linguaggio: l'ortogonalita'; e gia' mi dovrebbe dare un segnale molto forte
su come sia fatto il resto.
Se qualcuno dice "beh, l'han fatto perche' cosi' puoi ottimizzare" io
rispondo con "col cazzo, quelle ottimizzazioni le deve fare in modo
trasparente il compilatore bytecode!"
La convenzione di programmazione orientata agli oggetti (nota: non ho
scritto paradigma ma convenzione) di per se e' un'ottima idea, ma java
e' una schifosissima implementazione e questo lo vedi subito nel momento
in cui prendi in mano un altro linguaggio oo che non sia il C++.
Altro esempio: quando programmi in modo orientato agli oggetti ti capita
di dover ereditare da piu' classi, come fai?
I javisti dicono "non si fa', e' pericoloso", ma io chiedo: cosa c'e' di
pericoloso nell'idea "una palla e' un oggetto sferico ed anche un oggetto
che rimbalza"? Per me e' naturale che una persona ragioni anche per
associazione di idee, quindi perche' non puoi pensare un'ereditarieta'
multipla che non sia pericolosa? Con Ruby ad esempio hai la possibilita'
di fare dei 'mixin'.
Poi, programmando ad oggetti direi che capita spesso di avere a che fare
con delle collezioni su cui iterare. Come fai?
for (Iterator i = container.iterator(); i.hasNext(); ) {
Content content = (Content) i.next();
...
}
Ah bella roba!
Finalmente con la 5.0 hanno sostituito con una cosa piu' umana:
for (Content content : container) {
...
}
Solo che ci son voluti 10 anni per farglielo capire!
Con altri linguaggi hai la keyword 'yield' che mi pare comunque migliore
di queste due soluzioni.
> siamo andati oltre, ci siamo interessati anche e soprattutto alla parte
> Enterprise, che prende il nome di J2EE e che con tutti sti container
> e ste migliaia di classi già fatte è così comodo.
Averlo e' comodo, ma anche in questo java non e' l'unico.
> Per le JVM sinceramente ho "esperienza" per quanto piccola sia in Win XP
> che nella mia piccola Debian e tutto va liscio.
Ecco, esci da quelle due piattaforme ed e' un bagno di sangue. L'altro
giorno in facolta' mi e' arrivato vicino il solito javista in tesi
disperato perche' aveva fatto il suo softwarino per java 5.0 su win e lo
doveva far girare su un macosx. Solo che trovare un osx con una jvm che
non sia 1.4.2 non e' facile (forse non c'e' nemmeno la 1.5 per osx, non
so..)
Ti invito anche a provare a far girare le varie applicazioni java nella
jvm di ibm (unica scelta se vuoi usare certe architetture): unammerda!
Ci terrei a dire anche che nella mia misera esperienza lavorativa
non ho mai trovato un prodotto scritto in java che funzionasse bene
(questo si presta a varie considerazioni, alcune delle quali offensive).
Dopo l'aspetto tecnico c'e' ovviamente anche il lato 'umano':
http://www.gnu.org/philosophy/java-trap.html
luca
--
What's the best thing you could be working on, and why aren't you?
Paul Graham, Good and Bad Procrastination
http://shammash.homelinux.org/ - http://www.artha.org/ - http://www.yue.it/
Maggiori informazioni sulla lista
RELug