[Flug] iava iava iava [era: info su linux]
Gian Uberto Lauri
GianUberto.Lauri@eng.it
Ven 30 Gen 2009 10:20:13 CET
>>>>> "AZ" == Andrea Zagli <azagli@inwind.it> writes:
AZ> Il giorno gio 29 gen 2009 16:03:43 CET, Gian Uberto Lauri ha
AZ> scritto:
>> [...]
>>
>> (peraltro, a fare alcune cose in php4 si impazzisce, a farle in
>> Java e bene ci si mette molto meno, nonostante la presenza del
>> codice di Apache).
AZ> non sono esperto in nessuno dei due linguaggi, quindi mi fido di
AZ> quello che dici
AZ> (comunque siamo al php5 che e' un po' piu' evoluto del 4)
Peccato che avrei dovuto usare il 4 :>.
AZ> anche se ci sono dei test che lo affermano, io non posso che dire
AZ> che java (e per java intendo "tutto il sistema") e' piu' baraccone
AZ> (cioe' piu' esoso di risorse) di c e php
Beh, il C è nato per avere il massimo controllo sulle risorse,
peraltro è provato da anni di codice scritto che sono pochi quelli che
riescono a scrivere codice C che non presenti problemi di sicurezza.
E non ci sono santi, o hai delle buone librerie su cui appoggiarti
oppure devi lavorare tanto di più. Nota: da Redmond mi giunge
testimonianza che in uno dei loro prodotti vengano usati oltre dieci
tipi stringa diversi, ed una cosa genere è probabile anche altrove
dove non ci sia un 'dittatore' a fare auditing del codice...
Per progetti oltre una certa dimensione temo che il PHP possa portare
molte rogne per un altro motivo, che ci vuole MOLTA disciplina per
scrivere codice pulito.
La jvm, dovendo fare un lock su tutto lo heap quando avvia il GC,
tende ovviamente a allocare nuova memoria per non dover far peggiorare
le prestazioni.
E qui si distinguono i sistemisti che ci hanno capito qualcosa dagli
altri.
Un sistemista che non ci ha capito niente assegnerà alla JVM una
memoria enorme, la più larga disponibile. Il sistemista che ci capisce
qualcosa cercherà di fare del monitoraggio per aggiustare la
dimensione dello heap massimo. Il primo provoca questo effetto, la
macchina virtuale periodicamente starà ferma immobile mentre si
spazzola tutti i giga allocati per raccogliere l'immondizia.
Mi è capitato di dover gestire la differenza di semantica nella
gestione dei file mappati in memoria tra Windows e GNU/Linux, che
sotto Windows i file rimanevano locked fintanto che non veniva
terminato l'oggetto.
Per risolvere il problema (e non caricare in memoria il file, come
avrebbero fatto altri) ho iniziato a mettere chiamate al GC, sperando
che la JVM le onorasse (la chiamata gc() più che altro "consigla" al
thread del GC di fare pulizia). Ho dovuto ridurne la quantità che le
prestazioni erano andate a quel paese, e sono riuscito a trovare un
buon equilibrio.
AZ> anche se capisco benissimo che potrebbe dipendere principalmente
AZ> da come e' scritta l'applicazione, ma per adesso non ne ho trovata
AZ> una buona scritta in java: sara' un caso ma cosi' per me e'
Non è un caso. Penso che il numero di programmatori nel mondo andrebbe
ridotto di oltre 10 volte...
AZ> sinceramente pensavo fosse evidente che parlavo del java non come
AZ> linguaggio fine a se stesso, ma compreso di jvm e ammenicoli vari
AZ> (dato che da solo non esiste)
No non lo era, e sinceramente è una musica che sento troppo e molto
spesso da gente che in pratica non sa nemmeno cosa dice.
Per lavoro uso Java, come linguaggio è elegante, anzi è decisamente
più elegante di C++ (che peraltro può avere i suoi simpatici problemi
quando cominci ad usare metodi virtuali e allocazione dinamica).
Meglio di altri linguaggi "mainstream" del passato.
AZ> se vuoi ti posso raccontare dei pochi programmini java che ho
AZ> fatto io e su cui ho avuto le stesse brutte esperienze (anche se
AZ> ormai sono passati diversi anni e sicuramente le cose saranno
AZ> migliorate); sicuramente saranno stati scritti da cane ma le
AZ> stesse cose riscritte male in c mi sono venute molto piu' meglio
AZ> assai
Scrivere codice in Java come lo si sarebbe scritto in C non è una
buona cosa.
Mi piacerebbe avere più tempo per approfondire il LISP, che col C è un
altro capolavoro. Ma tra i due c'è un abisso mentale enorme,
affascinante.
--
Gian
Friends will be friends
right to the end!
Maggiori informazioni sulla lista
flug