|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2006
Città: Catania
Messaggi: 742
|
Java o c
Mi sono iscritto questo anno all'universita, facoltà di scienze informatiche.
e da quando è iniziato il corso ho un dubbio che mi martella la testa... Ma perchè studio java quando il 90% dei programmi è fatto in c/c++? Perchè ovunque, in internet, leggo che il linguaggio "migliore" è java quando tutto il mondo opensource ruota su c/c++? Non mi risulta che emule e tantissimi altri programmi sono scritti in java.Anzi... Il 99% dei programmi in linux sono scritti in c++... PERCHE JAVA ALLORA? |
|
|
|
|
|
#2 | |
|
Junior Member
Iscritto dal: Oct 2006
Messaggi: 23
|
Quote:
1. Il 90% dei programmi consumer è in c/c++ ma le piattaforme di servizi delle principali aziende NON sono in c/c++ (pensa all'home banking, al dvb, ecc...). 2. Java non è il linguaggio migliore ma semplicemente perchè non esiste! Migliore rispetto a quali parametri? 3. Non puoi avere come riferimento il mulo...conosci eclipse? E' solo UN esempio di programma scritto in java. E non è vero che TUTTO il mondo open source ruota sul c, eclipse è open source! Credo sia corretto studiare Java per alcuni motivi (sono solo alcuni) : 1. E' un linguaggio OOP. 2. E' ampiamente diffuso. 3. E' lo standard di riferimento di molti prodotti commerciali e open source. 4. Ampio supporto alla programmazione distribuita, SOA, web services... Quindi il consiglio è: studia sia il c/c++ che Java! ma anche python, .net, pl/sql...
__________________
Ultima modifica di telepuglia : 15-10-2006 alle 14:23. |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2006
Città: Catania
Messaggi: 742
|
Allora perchè linux è scritto interamente in c/c++, e non in java?
A questo punto sarebbe piu comodo sviluppare il software in java, lo usi su linux, mac e windows allo stesso tempo. Bho io continuo a non capire La risposta che mi ha dato il prof all'uni è stata: La maggior parte dei programmi in linux è scritta in c perchè i programmatori sono persone che sono mature e ai loro tempi non esisteva ancora il java -.- Ultima modifica di feboss : 15-10-2006 alle 13:00. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
Quote:
__________________
My gaming placement |
|
|
|
|
|
|
#5 | |
|
Junior Member
Iscritto dal: Oct 2006
Messaggi: 23
|
Riflessioni su Java
Quote:
Il codice Java compilato (bytecode) viene interpretato dalla virtual machine, per questo non è performante come un linguaggio compilato (vedi il c; con i jit le cose cambiano). Non è questo il target di Java...
__________________
Ultima modifica di telepuglia : 15-10-2006 alle 14:22. |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 1944
|
Quote:
Le performance sono disastrose in Java. Java si basa su un qualcosa, la JVM, che non si può supporre sempre di avere. La JVM ha tanti bugs, e fino alla versione 1.4 la sua evoluzione era diciamo "sconsiderata" In Java le librerie grafiche hanno raggiunto solo negli ultimi anni livelli umani di usabilità e gradevolezza estetica. Java è lento Java è lento Java è lento Diciamo che i motivi sono più o meno questi. Mettici che programmare imperativo ha un grado di difficoltà in meno del programmare a oggetti, e che per un progetto piccolo scritto da 4 persone, difficilmente si fanno Use Cases o analisi di complessità. E quindi il gioco Java non vale la candela. Java è fondamentale in alcuni contesti, in cui C o C++ ti aiutano veramente poco. Penso ai servizi Web, alle applicazioni distribuite, all'integrazione fra macchine con diversi sitemi operativi, e via dicendo. Java non lo puoi usare quando le prestazioni sono fondamentali. A quel punto ti devi ingegnare con C o C++, perchè con Java ti potresti trovare davanti al programma più ottimizzato del mondo, ed avere ancora tempi di risposta indecenti. Avrai tempo di imparare perchè Java non è utile. Ma condiera anche che, se sai programmare in Java, imparare C è poca cosa, imparare C++ è pochissima cosa. L'esperienza, poi, è un altro conto...
__________________
"Oggi è una di quelle giornate in cui il sole sorge veramente per umiliarti" Chuck Palahniuk Io c'ero |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Jan 2005
Città: Roma
Messaggi: 481
|
Quote:
C'è un progetto di gente che sta riscrivendo il kernel in C++, e già questo è considerato "sperimentale" nonostante il C++ conservi , per esempio, la possibilità di gestire la memoria in maniera diretta o la possibilità di usare l'asm inline ( nel kernel se ne fa larghissimo uso ) senza dover ricorrere a trucchi come JNI ( il metodo con cui java usa codice non java ). Come vedi i motivi sono molteplici: uno di questi è senz'altro l'estrema lentezza di java, ma non è assolutamente l'unico nè il più importante. Comunque, come ti è stato detto, fare un confronto C/C++ vs Java in questi termini non ha senso, e col tempo imparerai a capire anche perchè. |
|
|
|
|
|
|
#8 | |
|
Junior Member
Iscritto dal: Oct 2006
Messaggi: 23
|
Quote:
Ovvio pagare in fase di startup una maggiore lentezza, ma molto dipende anche dal programmatore...basta saper scrivere del codice che "in un qualche modo" porta a dei risulati per definirsi guru del linguaggio! Non è così! C'è ancora chi fa uso esteso della classe thread-safe Vector! Per non parlare dei JIT! Basta dare un'occhiata ai benchmark...
__________________
Ultima modifica di telepuglia : 15-10-2006 alle 14:19. |
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quote:
|
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 1944
|
Quote:
Cmq, fammele notare queste corbellerie, dato che sono condivise da molti. Io ho programmato in Java per 5 anni convinto che fosse uno dei migliori linguaggi del mondo. Dicevo anche io che la "lentezza" era limitata. Poi mi sono trovato davanti a problemi diversi, più complessi del solito DB distribuito o del sitarello in JSP, e ho capito come l'indirezione della JVM peggiori in modo estremo le prestazioni di alcuni software in alcuni campi. E' vero sicuramente che un programmatore deve ottimizzare a vari livelli, ma alcune volte ottimizzare è impossibile. Talvolta, si devono memorizzare una tal mole di informazioni che la sola memoria per contenerle tutte, SENZA STRUTTURAZIONE, è maggiore di quella del server a cui viene tolta quella della JVM e dei programmi esterni Altre volte, sei davanti ad un algoritmo con complessità lineare (sappiamo cosa vuol dire, vero? altrimenti è inutile parlare) ma la mole di dati in ingresso è talmente alta che, nonostante tu abbia la complessità migliore possibile, le operazioni a costo "unitario" sono talmente tante da impedire la realizzazione del lavoro stesso. Io non ho detto che Java fa schifo e che non va mai usato. Ho detto solo che ci ho sbattuto seriamente la testa davanti alla differenza di prestazioni di uno stesso algoritmo in Java ed in C, e mi sono accorto che in questi casi il rapporto è realmente di 1:10, come descritto da qualche accanito sostenitore di C. La cosa mi spiace, perchè C ha talmente tanti limiti come strutturazione, documentazione, ereditarietà e polimorfismo, che realizzare un programma in C equivale spesso a creare un artefatto difficilmente comprensibile e manutenibile. Eppure Java ha delle limitazioni oggettive che non possono essere dimenticate, e che vanno tenute in conto in molti contesti. In altri contesti, Java va benissimo, come sottolineato.
__________________
"Oggi è una di quelle giornate in cui il sole sorge veramente per umiliarti" Chuck Palahniuk Io c'ero Ultima modifica di Scoperchiatore : 15-10-2006 alle 15:43. |
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 1944
|
Quote:
Non sarò un guru, ma qualche esperienza l'ho accumulata Cosa discrimina l'utilzzatore di Vector da quello che usa BlockingQueue? ![]() Capito da solo: hai letto anche tu qua: http://www.idiom.com/~zilla/Computer...benchmark.html Anche questo articolo, molto a favore di Java, sottolinea che Java oggi come oggi ha fatto passi da gigante, ma può essere ancora reso lento, se si vuole. Inoltre, l'articolo non cita che esistono Gargage Collector anche per C/C++, che in C è possibile ottimizzare l'allocazione di memoria manualmente sovrascrivendo la malloc (che è spesso un passo seguito dall'installazione di una gargage collector) e via dicendo Qui, invece, il tizio dice che Java si è comportato bene, e che rispetto alla versione 1.0.2 si sono fatti passi da gigante: http://mathsrv.ku-eichstaett.de/MGF/...nch/Bench.html ma se poi vedi i benchmark, abbiamo il 15% di lentezza in più, in media. Considera il mio caso: algoritmo di complessità lineare, che deve aprire un file di testo da almeno 10 Gb, se non di più. L'elaborazione deve essere completata entro 18 ore, che è il resto del tempo disponibile in un giorno, tolto quello dedito allo scaricamento. Il tempo non è un problema: il problema è la memoria (2.6 GB occupati nella versione ottimizzata). Ti pare che con questi presupposti potevo affidarmi a Java? Per un calcolo parallelo su matrici, la JVM allocata con 512 Mb di Ram è morta a una matrice 10.000x10.000 = 10 miliardi di elementi. Io devo leggerne un numero comparabile, solo che invece di essere numeri, sono informazioni strutturate e anche spesso ridondanti (per mantenere l'elaborazione lineare rispetto al numero di record in input). In questo contesto, l'indirezione della JVM mi pesa, il non poter controllare personalmente l'allocazione della memoria mi pesa, anche solo 1 byte di overhead per memorizzare "Integer" mi pesa da morire. E quindi Java va scartato a priori. Il discorso non è così "di nicchia" se ci pensate bene. Servizi che si occupano dell'incrocio di informazioni enormi derivati da piccole osservazioni locali, di processamento di volumi di dati provenienti da fonti differenti sono molto comuni oggi. E sinceramente io non investirei tempo nel provare un'implenentazione Java di queste cose se non si è certi che si possa garantire il servizio Inoltre, l'indirezione di una macchina virtuale è evidente nelle applicazioni web. Io non so voi, ma non ho mai visto un sito JSP più veloce di un sito PHP. Che poi il sito JSP sia "meglio" dal punto di vista della struttura, delle potenzialità e della grfica, è quasi sempre vero. Ma se c'è bisogno di un tempo di servizio molto basso, anche JSP è una scelta a rischio.
__________________
"Oggi è una di quelle giornate in cui il sole sorge veramente per umiliarti" Chuck Palahniuk Io c'ero |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jun 2006
Messaggi: 1077
|
Si studia Java perchè è il linguaggio OOP per eccellenza(dopo smalltalk naturalmente).
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Interamnia Urbs
Messaggi: 2125
|
non capisco perché ti poni il problema, tanto dovrai imparare a conoscerli tutti e tre, ed a questi aggiungine altri se vuoi stare al passo coi tempi e non farti trovare impreparato nel momento in cui andrai a lavorare
__________________
Un wormhole (buco di tarlo, in italiano), detto anche Ponte di Einstein-Rosen, è una ipotetica caratteristica topologica dello spaziotempo che è essenzialmente una "scorciatoia" da un punto dell'universo a un altro, che permetterebbe di viaggiare tra di essi più velocemente di quanto impiegherebbe la luce a percorrere la distanza attraverso lo spazio normale. Go to a Wormhole |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Sep 2006
Città: Catania
Messaggi: 742
|
Mi sono posto il problema, perchè non riuscivo a capire come mai queste persone si aggrappavano a java come se fosse la salvezza del mondo, quando poi in java vedo ben poco.troppo poco.
Cmq grazie Scoperchiatore, Finalmente qualcuno che mi ha dato una risposta decente |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Interamnia Urbs
Messaggi: 2125
|
Guarda, io penso tu ti debba guardare un pò in giro perché non è assolutamente vero che poca roba è scritta in Java. Il problema che ti devi porre tu come programmatore è: che devo fare, e come lo devo fare, quale linguaggio mi conviene usare? Il resto è contorno.
__________________
Un wormhole (buco di tarlo, in italiano), detto anche Ponte di Einstein-Rosen, è una ipotetica caratteristica topologica dello spaziotempo che è essenzialmente una "scorciatoia" da un punto dell'universo a un altro, che permetterebbe di viaggiare tra di essi più velocemente di quanto impiegherebbe la luce a percorrere la distanza attraverso lo spazio normale. Go to a Wormhole |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Non è che ti sei posto il problema perché hai iniziato l'università
e non riesci a capire il paradigma a oggetti? ![]() Sai, la storiella della volpe che non riesce ad arrivare in cima all'albero...
__________________
|Java Base| |
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quote:
|
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
io trovo il java secondo al c solo per applicazioni videouliche.
Per l'univ. ho fatto un lavoro di gestione economica....molto grosso. Ho usato Java e va benissimo...... Forse è vero, chi non capisce OO penserà che è stupido, ne ho fatto di litigate con chi dice che c è meglio a prescindere, ma semplicemente non è vero, il tutto dipende dai contesti......
__________________
My gaming placement |
|
|
|
|
|
#19 | |
|
Junior Member
Iscritto dal: Oct 2006
Messaggi: 23
|
Quote:
sbaglio o si testa fino al JDK 1.2? un pò datato come test...si apprezzano comunque i miglioramenti dalla 1.0.2 e del jit.Sull'uso errato delle classi thread safe si parla sui principali libri di programmazione, il primo che mi viene in mente è TIJ! Non voglio discutere del linguaggio ideale perchè (a mio parere) non esiste, ma è errato affermare "Le performance sono disastrose in Java" o "Java è lento..."! Occore guardare obiettivamente le tecnologie ed assumere decisioni razionali per la risoluzione del problema.
__________________
|
|
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
Quote:
__________________
My gaming placement |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:43.












|
un pò datato come test...si apprezzano comunque i miglioramenti dalla 1.0.2 e del jit.








