PDA

Visualizza la versione completa : [OT]: C++ vs Java


squarta
26-01-2005, 10:09
Programmo da anni in vb6 e vorrei passare ad un linguaggio ad oggetti
sono indeciso se deicarmi ad un linguaggio ad oggetti vero ( java o al c++)
immagino che la questione sia stata posta molte volte, e mi chiedo a prescindere dalla difficolta' o meno di imparare il linguaggio che mi conviene studiare in prospettiva? immagino che il c++ sia molto piu prestazionale del java per sua natura ma mi chiedo non è che il c++ andra' in disuso? si sente parlare molto di java (è solo una moda o effetivamente il futuro è java?)

C232
26-01-2005, 13:48
Scegli il C++.
Non è vero che sta cadendo in disuso, anzi il C++ è la nuova versione di C. Sicuramente in futuro verrà continuamente aggiornato come avviene con tutti i linguaggi di programmazione e poi è il linguaggio ad oggetti per eccellenza, rispetta perfettamente i principi della programmazione object oriented. Io penso piu che il Java non possa trovare un futuro come il VB.

anx721
26-01-2005, 14:02
Il C++ sicuramente oggi è molto meno richiesto di java. Questo dipende da piu motivi, innanzitutto il campo di utilizzo. C++ è principalemnte indicato per realizzare applicazioni desktop, con Java riesci a fare applicazioni desktop (anche se questo non è il suo utilizzo principale), ma anche applicazioni e servizi orientati al web. I vantaggi che il c++ offre rispetto a java sono:

1 - magiore velocita e minore consumo di memoria;
2 - produce eseguibili che non hanno bisogno di runtime, quindi programmi che possono essere facilmente distribuiti, laddove java richiede la presenza del runtime java per far funzionare i suoi programmi.
3 - possibilita di fare programmazione di sistema a basso livello.

Quanto al punto 1 - bisogna in realta cheidersi : quanto è veramente importante? Le applicazioni in cui è veramente fondamentale la differenza prestazionale tra java e c++ sono veramente poche, ad esempio applicazioni di tipo numerico che fanno calcoli intensivi, aplicazioni di grafica 3D, e robe simili; trpppo spesso si sente dire che java è poco efficiente, ma non si tiene presente che non siamo piu al tempo in cui i pc avevano 512 kb di memoria e processori con frequenza di 1 MHz... Il c++ è vero che è piu veloce e piu ottimizzato...ma tutto ciò non è regalato: la maggiore efficienza deriva infatti oltre la fatto che i programmi sono trasformati in eseguibile, anche dal fatto che in c++ devi gestirti manualmente la memoria, che è la principale fonte di incomprensioni, sbagli e bug nei programmi scritti in questo linguaggio; è da aggiungere anche che il c++ è oggettivamente piu complicato come linguaggio (proprio a livello di sintassi e di grammatica; ad esempio i compilatori c++ non sono in grado di indicare gli errori presenti in un programma con la precisione con cui riescono i compilatori java, proprio per via della grammatica c++ che è molto complessa e non permette tecniche di recupero degli errori molto precise.)

Oggi è più importante essere produttivi e realizzare software il piu possibili affidabili, e facili da mantenere, obiettivi che si realizzano piu facilmente con java che non con c++, proprio grazie all a sua gestione automatica della memoria, ma anche ad altre caratteristiche del linguaggio, come l'assenza esplicita dei puntatori, l'impossobilita di accedere direttamente alla memoria, un maggiore controllo sui tipi.

Da ciò dovresti capire che è solo una questione di priorità e di obiettivi: se vuoi realizzare aplicazioni in cui è importante la velocita e l'oculato uso della memoria, o la produzione di un eseguibile o la programmazione a basso livello è meglio il c++; in tutti gli altri casi java è piu produttivo.

PS: C++ è un linguaggio ibrido , sia procedurale che orientato agli oggetti, java è solo orientato agli oggetti

alka
26-01-2005, 14:16
Originariamente inviato da squarta
Programmo da anni in vb6 e vorrei passare ad un linguaggio ad oggetti sono indeciso se deicarmi ad un linguaggio ad oggetti vero ( java o al c++)
Dato che programmi da anni in VB6, la scelta più sensata nel tuo caso sarebbe quella di passare a VB.NET.


Originariamente inviato da squarta
immagino che la questione sia stata posta molte volte, e mi chiedo a prescindere dalla difficolta' o meno di imparare il linguaggio che mi conviene studiare in prospettiva?

La prospettiva la decidi tu, in base al tipo di applicazioni che devi realizzare. Dato quel presupposto, valuta quale linguaggio costituisce la via più breve per ottenerlo.

Non si può parlare di moda, al massimo di diffusione, ma a meno che tu non abbia ricevuto richieste particolari (e in tal caso, devi adattarti ad esse), puoi scegliere il linguaggio che preferisci in piena libertà.

Ciao! :ciauz:

netarrow
26-01-2005, 17:07
Sono daccordo con tutto quello che ha detto anx721 e anche con alka.

Bisogna considerare che essendo Windows l'OS diffuso al 95%, se non di più, l'importanza di un linguaggio portabile è secondaria.
Quello che intendo dire io è che se Solaris, Windows, Linux e Mac fossero diffusi equamente, Java sarebbe molto più richiesto.
Cosa diversa per applicazioni web, dove sarà sempre win l'OS + diffuso ma non sai cosa avrà l'utente.

Detto questo, e allaciandosi al discorso "Java è futuro", si arriva a .NET, suggerito da alka, che effetivamente è il futuro; questo xhè essendo microsoft che fa legge ed essendo loghorn il nuovo windows e quindi il nuovo OS di maggiornaza che supporterà il framework .NET bisognerà adattarsi a quello.

Ecco cosa mi è stato detto a me:


La Microsoft ha detto che il vb6 sarà 'supported' fino al 2008 invece per il VC++ il 2010. Cosa vuol dire questo 'supported'?? La Microsoft intende fare piazza-pulita (detto in maniere brutale proprio) di tutto il 'vecchiume' ovvero del VB6 e VC++ (fondamentalmente), ovvero tutto il modello COM. Non esageriamo, un app in VB6 girerà sempre dopo il 2008 peccato che sia 'deprecated', ovvero che sia sconsigliato, e che in caso di malfunzionamente i nostri amici di microsoft lo dicono chiaro e tondo: "Attaccatevi al Tram".
...
Tornando al tuo problema pratico, io direi che è anacronistico mettersi a programmare in VB6 o in Delphi 5, oppure basarsi interamente sull'attuale versione di windows perchè tra poco (tipo 2 anni) ci sarà una rivoluzione (e non sto scherzando), il .NET framework sarà il pane quotidiano...


Il quote sopra non è testo mio, è la risposta ad una domanda che feci tempo fa ad un mio amico.

Per rendere più chiaro il discorso: se si utilizza il C++ ci si riferisce all'ANSI, standar col quale puoi fare le "tipical hello world applications" e poco più.
C++ è pienamente dipendente dall'OS che usi ed è a quello dovrai adattarti(ci sono librerire di terze parti ma che alla fine aggiungono un livello di astrazione tra il tuo prog e l'OS).

Il futuro quindi non sarà Java, Java è il presente, sarà dotNET(questo se il tuo scopo è programmazione per windows).


Se tu vuoi fare programmi portabili, da fare in poco tempo e di facile manutenzione c'è Java(anche altro ovviamente, ma il thread è su Java e C++).
Se vuoi fare programmi per linux C++, ma C++ per linux...

Questa è la grande differenza tra Java e C++: dici Java dici Java e basta, dici C++ può essere uno standar qualsiasi per qualsiasi OS(ovviamente la sintassi è sempe quella, cambiano le funzioni e le API).

:ciauz:

C232
26-01-2005, 21:46
netarrow mi hai scandalizzato con la tua risposta!
In certi punti sono d’accordo con te e in altri no!
Con C++/C si può fare qualsiasi applicazione.
E’ vero che la Microsoft vuole fare fuori il VC++ però comunque rimane il C.
Il Java, secondo me vuole rivoluzionare il web, ma sinceramente non ci è riuscita.
Non ho mai visto applicazione vere e propri in Java ma sempre Applet.
Gli Applet con il passare del tempo sono stati sostituiti delle animazioni in Flash e dagli script ECMAScript.
Non penso che la Microsoft possa gestire lei le leggi, anche perché ci sono validi concorrenti e comunque è mantenuta sotto controllo.
Inoltre la Microsoft fa troppo di testa sua, tanti PROGRAMMATORI VB E ASP SONO DOVUTI MIGRARE VERSO NUOVI LINGUAGGI DI PROGRAMMAZIONE A CAUSA DEL NUOVO PROGETTO “.NET”. ARRIVATO AD UN CERTO PUNTO UN SI ROMPE LE P*LL* E MANDA LA MICROSOFT A QUEL PAESE. INFATTI MOLTE AGENZIE HA SCELTO il JAVA e JSP.

infinitejustice
26-01-2005, 22:28
Originariamente inviato da C232
E’ vero che la Microsoft vuole fare fuori il VC++

ma da quando poi? :dottò:

C232
26-01-2005, 22:30
Originariamente inviato da infinitejustice
ma da quando poi? :dottò:

La Microsoft ha detto che il vb6 sarà 'supported' fino al 2008 invece per il VC++ il 2010. Cosa vuol dire questo 'supported'?? La Microsoft intende fare piazza-pulita (detto in maniere brutale proprio) di tutto il 'vecchiume' ovvero del VB6 e VC++ (fondamentalmente), ovvero tutto il modello COM. Non esageriamo, un app in VB6 girerà sempre dopo il 2008 peccato che sia 'deprecated', ovvero che sia sconsigliato, e che in caso di malfunzionamente i nostri amici di microsoft lo dicono chiaro e tondo: "Attaccatevi al Tram".
...
Tornando al tuo problema pratico, io direi che è anacronistico mettersi a programmare in VB6 o in Delphi 5, oppure basarsi interamente sull'attuale versione di windows perchè tra poco (tipo 2 anni) ci sarà una rivoluzione (e non sto scherzando), il .NET framework sarà il pane quotidiano...

infinitejustice
26-01-2005, 22:46
Ah intendi VC++ il vecchio...

Lucis
27-01-2005, 01:55
Originariamente inviato da C232
netarrow mi hai scandalizzato con la tua risposta!
In certi punti sono d’accordo con te e in altri no!
Con C++/C si può fare qualsiasi applicazione.
E’ vero che la Microsoft vuole fare fuori il VC++ però comunque rimane il C.
Il Java, secondo me vuole rivoluzionare il web, ma sinceramente non ci è riuscita.
Non ho mai visto applicazione vere e propri in Java ma sempre Applet.
Gli Applet con il passare del tempo sono stati sostituiti delle animazioni in Flash e dagli script ECMAScript.
(...)


lungi da me scatenare l'ennesimo flame, ma qui mi sa che stiamo cadendo nel solito discorso da osteria in cui Java viene criticato senza troppa cognizione di causa...

anzitutto oltre che pensare a quale linguaggio imparare io vorrei sottolineare COSA imparare. Mi spiego: programmare veramente non vuol dire conoscere la sintassi di linguaggio (per farlo basta davvero poco), ma saper usarlo in modo efficiente, produttivo e (soprattutto) saper creare codice di qualità. Per questo esistono tutta una serie di tecniche addirittura scollegate dal linguaggio di programmazione (analisi, progettazione, casi d'uso, xtreme programming, e via dicendo). Java velocizza (molto) la scrittura dei programmi grazie al fatto che nasconde alcuni dettagli della macchina come la gestione della memoria o la dipendenza dal SO (chiaramente questo esclude il suo utilizzo in casi in cui è necessario il controllo a basso livello).

Detto questo la risposta alla domanda iniziale non può essere che la solita: dipende che vuoi fare! è come voler comprare una macchina: devi viaggiare? devi fare le gare in pista? ti serve un fuoristrada?

Java non è la soluzione a tutto, questo è chiaro, ma bisogna capire un poco per cosa è stato creato. Non ha rivoluzionato il web? Attenzione, non esistono solo i client... le applet sono state effettivamente surclassate da altre tecnologie, ma nessuno pensa ai server? con Java su un server si può fare qualunque cosa si possa immaginare.
Non esistono applicazioni in Java ma solo applet??? :oVVoVe: Non ti cito le applicazioni di ricerca, ma rimanendo nell'open source/commerciale: un desktop 3D (https://lg3d.dev.java.net/), uno dei più diffusi editor per programmatori (http://www.eclipse.org), l'altro più diffuso editor per programmatori (http://community.java.net/netbeans/), infiniti sistemi gestionali (per esempio quello delle ferrovie dello stato), missioni su marte...
Java è anche didatticamente adatto ad imparare la programmazione OO, dal momento che è privo di molti meccanismi pericolosissimi del C++ (perchè definire il linguaggio ad oggetti per eccellenza un linguaggio che permette ereditarietà multipla, puntatori selvaggi e non prevede le interfacce?) e, infatti, viene insegnato in tantissime università nei corsi di fondamenti di informatica.
A proposito: come si programma un gioco per cellulare in C++? :messner:

Io personalmente sono appassionato di informatica grafica e non mi sognerei mai di usare Java per applicazioni di tale genere, ma spesso ho scritto con gran soddisfazione dei programmi in cui non serviva grande potenza di calcolo spendendo molto meno tempo di quello che avrei usato con, ad esempio, C++. Quindi il succo è: capire cosa si vuole fare, documentarsi sulle potenzialità dei possibili linguaggi e poi darsi da fare :fagiano:

personalmente consiglio in ogni caso linguaggi ad oggetti, l'approccio procedurale ormai è decisamente superato per quasi ogni applicazione.

:ciauz:

Loading