Java vs C++ per algoritmi
Moderatore: Staff
Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
-
Szat
- Linux 1.x

- Messaggi: 118
- Iscritto il: ven 5 ago 2005, 0:00
- Slackware: current
- Kernel: linux-2.6.27.7
- Desktop: Kde4.2
- Distribuzione: Kubuntu
- Località: Torino
Java vs C++ per algoritmi
Ciao a tutti
inutile dire che non avrebbe senso far scontrare java con C++ senza inquadrare il campo di utilizzo...
Ma se uno ha bisogno di scrivere algoritmi numerici cosa potrebbe usare tra Java e C++?
In ultimo le prestazioni: alla luce delle nuove virtual machine e dei nuovi hardware Java è ancora così lenta come poteva essere in passato?
Grazie in anticipo
inutile dire che non avrebbe senso far scontrare java con C++ senza inquadrare il campo di utilizzo...
Ma se uno ha bisogno di scrivere algoritmi numerici cosa potrebbe usare tra Java e C++?
In ultimo le prestazioni: alla luce delle nuove virtual machine e dei nuovi hardware Java è ancora così lenta come poteva essere in passato?
Grazie in anticipo
- raffaele181188
- Packager

- Messaggi: 789
- Iscritto il: ven 7 set 2007, 21:40
- Nome Cognome: Raffaele
- Slackware: current
- Kernel: 2.6.29.6
- Desktop: KDE 4.3
- Distribuzione: Ubuntu
- Località: DearSkin (FG)
Re: Java vs C++ per algoritmi
Algoritmi numerici del tipo? Ho letto recentemente che, in molti benchmark che utilizzano _SOLO_ calcoli Java è addirittura più veloce del C++. Appena posso linko
Va anche detto che per il puro scopo computazionale Java non è preso in considerazione di solito
Se vuoi conoscere empiricamente come va Java sul tuo computer (così da poter fare un paragone) scaricati NetBeans e giocaci un po'. E' tutto in Java, ed è l'unico programma di un certo livello (tra quelli che conosco) ad usare swing per l'interfaccia. Quindi pure java code
edit: Ecco due link. Ma secondo me lasciano il tempo che trovano...
http://kano.net/javabench/
http://www.idiom.com/~zilla/Computer/ja ... hmark.html
Va anche detto che per il puro scopo computazionale Java non è preso in considerazione di solito
Se vuoi conoscere empiricamente come va Java sul tuo computer (così da poter fare un paragone) scaricati NetBeans e giocaci un po'. E' tutto in Java, ed è l'unico programma di un certo livello (tra quelli che conosco) ad usare swing per l'interfaccia. Quindi pure java code
edit: Ecco due link. Ma secondo me lasciano il tempo che trovano...
http://kano.net/javabench/
http://www.idiom.com/~zilla/Computer/ja ... hmark.html
-
Szat
- Linux 1.x

- Messaggi: 118
- Iscritto il: ven 5 ago 2005, 0:00
- Slackware: current
- Kernel: linux-2.6.27.7
- Desktop: Kde4.2
- Distribuzione: Kubuntu
- Località: Torino
Re: Java vs C++ per algoritmi
Wow!raffaele181188 ha scritto:Algoritmi numerici del tipo? Ho letto recentemente che, in molti benchmark che utilizzano _SOLO_ calcoli Java è addirittura più veloce del C++. Appena posso linko
Va anche detto che per il puro scopo computazionale Java non è preso in considerazione di solito
Direi cose del tipo integrali numerici, equazioni differenziali, sistemi lineari (piusttosto grandi), sistemi di equazioni differenziali e cose simili.
Si netbeans lo conosco, ma preferisco eclipse. Comunque va abbastanza bene, non ho grandi rallentamenti. Ma anche eclipse è in java giusto? Solo che non usa swingraffaele181188 ha scritto: Se vuoi conoscere empiricamente come va Java sul tuo computer (così da poter fare un paragone) scaricati NetBeans e giocaci un po'. E' tutto in Java, ed è l'unico programma di un certo livello (tra quelli che conosco) ad usare swing per l'interfaccia. Quindi pure java code
edit: Ecco due link. Ma secondo me lasciano il tempo che trovano...
http://kano.net/javabench/
http://www.idiom.com/~zilla/Computer/ja ... hmark.html
- shark1500
- Linux 3.x

- Messaggi: 785
- Iscritto il: gio 3 apr 2008, 14:33
- Slackware: current
- Kernel: 2.6.27.7-smp
- Desktop: kde
- Località: Modna
Re: Java vs C++ per algoritmi
Io mi butterei sul C/C++, non penso siano paragonabili in termini di prestazioni (non ho letto gli articoli per mancanza di tempo, parlo per esperienza personale)
- absinthe
- Iper Master

- Messaggi: 2354
- Iscritto il: dom 15 mag 2005, 0:00
- Nome Cognome: Matteo Nunziati
- Slackware: 12.1 - defunct
- Kernel: 2.6.32-5-amd64
- Desktop: gnome
- Distribuzione: debian squeeze
- Località: Prato
- Contatta:
Re: Java vs C++ per algoritmi
se hai bisogno di lavorare il real-time usa il c niente roba object oriented nè c++ nè java. se non vai in real time python o matlab/scilab/octave vanno benissimo e ti risparmi un sacco di righe di codice
M
M
-
Szat
- Linux 1.x

- Messaggi: 118
- Iscritto il: ven 5 ago 2005, 0:00
- Slackware: current
- Kernel: linux-2.6.27.7
- Desktop: Kde4.2
- Distribuzione: Kubuntu
- Località: Torino
Re: Java vs C++ per algoritmi
Anche ai tempi odierni?shark1500 ha scritto:Io mi butterei sul C/C++, non penso siano paragonabili in termini di prestazioni
-
Szat
- Linux 1.x

- Messaggi: 118
- Iscritto il: ven 5 ago 2005, 0:00
- Slackware: current
- Kernel: linux-2.6.27.7
- Desktop: Kde4.2
- Distribuzione: Kubuntu
- Località: Torino
Re: Java vs C++ per algoritmi
absinthe ha scritto:se hai bisogno di lavorare il real-time usa il c niente roba object oriented nè c++ nè java.
Troppo lenti?
Non so usare ne matlab ne octave anche se li conosco. Ho usato per un sacco di tempo Mathematica e un po' Root del Cern.absinthe ha scritto: se non vai in real time python o matlab/scilab/octave vanno benissimo e ti risparmi un sacco di righe di codice
M
Python? La sua libreria standar è paragonabile a quella di java?
- ulisse89
- Packager

- Messaggi: 643
- Iscritto il: sab 17 gen 2009, 12:53
- Nome Cognome: Riccardo
- Slackware: 13.0
- Kernel: 2.6.29.6
- Desktop: Xfce
- Località: Bologna
Re: Java vs C++ per algoritmi
Io sto studiando adesso il java all'università e ci stanno facendo una testa così che ormai con i nuovi processori, la differenza in quanto a velocità tra una programma in C e uno in java, non è così tanta. Però d'altra parte io penso che se è un programma per solo calcolo matematico, va ancora bene il C.
- 414N
- Iper Master

- Messaggi: 2903
- Iscritto il: mer 13 feb 2008, 16:19
- Slackware: 14.2
- Kernel: 4.4.19
- Desktop: KDE4
- Località: Bulagna
- Contatta:
Re: Java vs C++ per algoritmi
Scilab permette di specificare proprie routine in C o Fortran.Szat ha scritto:
Non so usare ne matlab ne octave anche se li conosco. Ho usato per un sacco di tempo Mathematica e un po' Root del Cern.
Ma la tua è una domanda generica o stai scegliendo verso quale linguaggio orientarti per implementare degli algoritmi numerici "esotici"?
- raffaele181188
- Packager

- Messaggi: 789
- Iscritto il: ven 7 set 2007, 21:40
- Nome Cognome: Raffaele
- Slackware: current
- Kernel: 2.6.29.6
- Desktop: KDE 4.3
- Distribuzione: Ubuntu
- Località: DearSkin (FG)
Re: Java vs C++ per algoritmi
Credo anch'io il C
Anch'io preferisco Eclipse, però ti ho scritto di provare NetBeans perchè usa le swing quindi è proprio tutto java e quindi puoi farti un'idea molto precisa di come vada un programma bello pesantuccio scritto per intero in quel linguaggio. Eclipse usa lo swt che è sensibilmente più veloce
Anch'io preferisco Eclipse, però ti ho scritto di provare NetBeans perchè usa le swing quindi è proprio tutto java e quindi puoi farti un'idea molto precisa di come vada un programma bello pesantuccio scritto per intero in quel linguaggio. Eclipse usa lo swt che è sensibilmente più veloce
- puzuma
- Linux 2.x

- Messaggi: 482
- Iscritto il: mar 4 lug 2006, 17:14
- Nome Cognome: Stefano Salvador
- Slackware: current
- Kernel: 2.6.32.2
- Desktop: KDE 4.4.0
- Località: Udine
- Contatta:
Re: Java vs C++ per algoritmi
dalla java vm 1.4 in poi le prestazioni di java sul calcolo puro sono paragonabili a quelle del C se non migliori (anche se fortran e altri linguaggi dedicati sono ancora la scelta più performante), da un occhiata a questo articolo che mette a confronto java con il codice prodotto da molti compilatori:
http://www.idiom.com/~zilla/Computer/ja ... hmark.html
per il discorso swing/swt non è vero che le swing sono più lente, l'unico vantaggio delle swt è quello di avere un look & feel integrato con il sistema e migliori font (anche questa argomentazione è in parte superata), in certe circostanze le swing sono adirrittura più veloci (sotto linu ad esempio ...), guarda quà:
http://cosylib.cosylab.com/pub/CSS/DOC- ... arison.pdf
infine per il discorso real-time, java non è nato per questo ambito in quanto il garbage collector introduce delle latenze non prevedibili, del resto questo non mi sembra il tuo caso (e comunque dovresti usare anche un sistema operativo real time).
l'unica vera differenza tra C e Java è il consumo della memoria, però attenzione a programmare bene in C altrimenti questo vantaggio te lo giochi subito.
IMHO usa il linguaggio che ti fornisce il maggior numero di librerie già pronte e testate per lo scopo che ti sei prefisso, alla fine tra C e Java credo sia ormai solo una questione di gusti.
http://www.idiom.com/~zilla/Computer/ja ... hmark.html
per il discorso swing/swt non è vero che le swing sono più lente, l'unico vantaggio delle swt è quello di avere un look & feel integrato con il sistema e migliori font (anche questa argomentazione è in parte superata), in certe circostanze le swing sono adirrittura più veloci (sotto linu ad esempio ...), guarda quà:
http://cosylib.cosylab.com/pub/CSS/DOC- ... arison.pdf
infine per il discorso real-time, java non è nato per questo ambito in quanto il garbage collector introduce delle latenze non prevedibili, del resto questo non mi sembra il tuo caso (e comunque dovresti usare anche un sistema operativo real time).
l'unica vera differenza tra C e Java è il consumo della memoria, però attenzione a programmare bene in C altrimenti questo vantaggio te lo giochi subito.
IMHO usa il linguaggio che ti fornisce il maggior numero di librerie già pronte e testate per lo scopo che ti sei prefisso, alla fine tra C e Java credo sia ormai solo una questione di gusti.
The quiet ones are the ones who change the world. The loud ones only take the credit.
- raffaele181188
- Packager

- Messaggi: 789
- Iscritto il: ven 7 set 2007, 21:40
- Nome Cognome: Raffaele
- Slackware: current
- Kernel: 2.6.29.6
- Desktop: KDE 4.3
- Distribuzione: Ubuntu
- Località: DearSkin (FG)
Re: Java vs C++ per algoritmi
Offtopic: @puzuma
La maggior parte di quei test non sono significativi, in quanto disegnano rettangoli e altre cose base che non mettono in evidenza la cosa
Swing è un layer scritto in Java sopra la libreria di interfacciamento AWT
SWT, invece, è la "bella copia" by IBM delle AWT, e per le operazioni di painting mappa i componenti su quelli nativi (come fa AWT). Il LAF varia da piattaforma a piattaforma.
In Swing le cose sono diverse, in quanto tutti i LAF sono implementati in Java e viene fatto affidamento al codice nativo (AWT tramite JNI) solo per le funzioni base (come i rettangoli di prima). Infatti, usando swing, si può riprodurre qualsiasi LAF supportato su qualunque OS perchè fa tutto parte delle swing (quindi i LAF, pure se molto somiglianti, sono delle imitazioni) a parte quello di Windows (come al solito). Swing deve essere per forza più lento di SWT, perchè prevede un layer in più. Del resto, io noto che sui miei computer Eclipse è molto più reattivo di NetBeans
La maggior parte di quei test non sono significativi, in quanto disegnano rettangoli e altre cose base che non mettono in evidenza la cosa
Swing è un layer scritto in Java sopra la libreria di interfacciamento AWT
SWT, invece, è la "bella copia" by IBM delle AWT, e per le operazioni di painting mappa i componenti su quelli nativi (come fa AWT). Il LAF varia da piattaforma a piattaforma.
In Swing le cose sono diverse, in quanto tutti i LAF sono implementati in Java e viene fatto affidamento al codice nativo (AWT tramite JNI) solo per le funzioni base (come i rettangoli di prima). Infatti, usando swing, si può riprodurre qualsiasi LAF supportato su qualunque OS perchè fa tutto parte delle swing (quindi i LAF, pure se molto somiglianti, sono delle imitazioni) a parte quello di Windows (come al solito). Swing deve essere per forza più lento di SWT, perchè prevede un layer in più. Del resto, io noto che sui miei computer Eclipse è molto più reattivo di NetBeans
-
Szat
- Linux 1.x

- Messaggi: 118
- Iscritto il: ven 5 ago 2005, 0:00
- Slackware: current
- Kernel: linux-2.6.27.7
- Desktop: Kde4.2
- Distribuzione: Kubuntu
- Località: Torino
Re: Java vs C++ per algoritmi
Ho capito (tenendo presente che non so il Fortran). Non ho in mente niente di particolare, solo sto cercando un linguaggio o un framework per risolvere eventuali problemi che potrei incontrare, torna sempre utile.414N ha scritto: Scilab permette di specificare proprie routine in C o Fortran.
Ma la tua è una domanda generica o stai scegliendo verso quale linguaggio orientarti per implementare degli algoritmi numerici "esotici"?
E dopo aver studiato un po' di java, C++ e un po' di teoria degli algoritmi non ho la più pallida idea di cosa utilizzare.
- 414N
- Iper Master

- Messaggi: 2903
- Iscritto il: mer 13 feb 2008, 16:19
- Slackware: 14.2
- Kernel: 4.4.19
- Desktop: KDE4
- Località: Bulagna
- Contatta:
Re: Java vs C++ per algoritmi
Allora, secondo me, ti conviene orientarti verso una piattaforma come Matlab/Scilab e il loro linguaggio di scripting (non molto dissimile).Szat ha scritto: Ho capito (tenendo presente che non so il Fortran). Non ho in mente niente di particolare, solo sto cercando un linguaggio o un framework per risolvere eventuali problemi che potrei incontrare, torna sempre utile.
E dopo aver studiato un po' di java, C++ e un po' di teoria degli algoritmi non ho la più pallida idea di cosa utilizzare.
In questo modo puoi concentrarti solo sul tuo problema e non sui meccanismi intrinseci del linguaggio (leggi puntatori, gestione del heap o altre amenità) che rischiano di deviare la tua attenzione dal problema in sé verso le problematiche di implementazione.
Se poi vuoi comunque provare la via della programmazione, esistono già alcuni framework per alcuni linguaggi.
Per esempio:SciPy, per Python; qwt, che si appoggia a qt per il plotting di dati tecnici/scientifici etc.
- absinthe
- Iper Master

- Messaggi: 2354
- Iscritto il: dom 15 mag 2005, 0:00
- Nome Cognome: Matteo Nunziati
- Slackware: 12.1 - defunct
- Kernel: 2.6.32-5-amd64
- Desktop: gnome
- Distribuzione: debian squeeze
- Località: Prato
- Contatta:
Re: Java vs C++ per algoritmi
sì. te lo dico per esperienza personale: stiamo sviluppando un applicativo realtime per un macchinario di misura basato su visione artificale. abbiamo margini stretti di manovra: 600 millisecondi per scattare 8 foto 1024x768 elaborarle estrarre i dati sensibili , triangolare tali dati, eseguire le operazioni trigonometriche/algebra vettoriale necessarie e dare un output a schermo. solo il c ce la fa! è riesce a faròlo anche su un catorcio come win xp pro con _tutti_ i servizi settati in avvio a _default_. qundi niente OS real-time o settaggi particolari che l'utente medio/basso non conoscerebbe (il target è un operaio di officina meccanica _non_ tenuto ad avere competenze di informatica su alcun livello!)Szat ha scritto:absinthe ha scritto:se hai bisogno di lavorare il real-time usa il c niente roba object oriented nè c++ nè java.
Troppo lenti?
con numpy e scipy vai più o meno alla velocità di matlab e _non_ è compilato o compilato jit. è interpretato puro con una community immensa e un sacco di IDE per sviluppo/debugging. io un pensiero ce lo farei. se poi il problema è anche la curva di apprendimento e conosci gà altri strumenti allora usa quelli che sai. tra java e c++ non saprei che dirti: mai usato java (l'ho sempre trovato troppo cervellotico per me)Non so usare ne matlab ne octave anche se li conosco. Ho usato per un sacco di tempo Mathematica e un po' Root del Cern.absinthe ha scritto: se non vai in real time python o matlab/scilab/octave vanno benissimo e ti risparmi un sacco di righe di codice
M
Python? La sua libreria standar è paragonabile a quella di java?
M