Newsgroup: it.comp.java
Titolo: [OT] Java, C++ e C#

    Programmo da poco con Java, col quale ho avuto modo di entrare nel mondo
OO.
    A questo punto mi è venuta la curiosità di capire qual è la differenza
tra Java e C++ (io ho una vecchia e semplice infarinatura con C), e qual è
la differenza tra C++ e C#. Avendo una vista generale sulla programmazione
in Java, è molto traumatico migrare al C++? Mi scuso sin d'ora per la
banalità delle domande....
    grazie a tutti,
    a.
--
-----------------------------------------------------
There are 10 types of people in this world.
Those who understand binary and those who don't.
-----------------------------------------------------

 banalità delle domande....
Ti risponderanno meglio altri, però:
da un punto di vista puramente Object Oriented, non credo che ci sia 
molta differenza tra Java e C++. Il C++ offre i Template che in Java per 
ora non sono disponibili, ma lo saranno con il futuro sdk 1.5.
C# è simile a Java. Non lo conosco affatto, quindi parlo per sentito dire.
Le differenze sostanziali sono:
Java, linguaggio semi-compilato, funzionante solo sulle Java Virtual 
Machine e tendenzialmente meno efficente (ma non è sempre vero).
C++, linguaggio compilato, dipendente dalla piattaforma dove devi 
eseguire il compilato.
C#, non ho idea come funzioni, ma opera solo sul framework .NET.
Il C++ è potente ma "limitativo", si fa per dire, perchè un sorgente 
scritto per Windows, sicuramente non funzionerà su Linux, MacOS, 
Solaris, ecc...
Lo stesso non vale per Java e C#.

Ciao, may!
Il giorno 15/04/2004 alle ore 21:21 hai scritto:
 m> Java, linguaggio semi-compilato, funzionante solo sulle Java Virtual
 m> Machine e tendenzialmente meno efficente (ma non è sempre vero).
Necessita di JVM e' vero, ma le JVM esistono per qualunque sistema
operativo.
 m> C#, non ho idea come funzioni, ma opera solo sul framework .NET.
E' identico a Java in questo senso, necessita di un interprete. Il framework
non e' altro che un set di librerie standard (si fa per dire, standard
secondo il concetto di Microsoft).
 m> Il C++ è potente ma "limitativo", si fa per dire, perchè un sorgente
 m> scritto per Windows, sicuramente non funzionerà su Linux, MacOS,
 m> Solaris, ecc...
Hai una strana concezione delle potenzialita' di un linguaggio di
programmazione. Comunque non e' vero che un sorgente C++ non funzionera' su
altri sistemi operativi: se non usi caratteristiche specifiche il sorgente
si compilera' e funzionera' su qualunque sistema operativo.
 m> Lo stesso non vale per Java e C#.
Giusto per Java, per C# al momento esiste l'interprete solo per Windows e un
tentativo di interprete per Linux (Mono).
Bye
-- 
Marco Maccaferri
MaccaSoft - 
http://www.maccasoft.com

 
Allora, vediamo un po'...
Java è "ispirato" al C++ :
- sintassi simile
- gli hanno tolto un sacco di caratteristiche che rendevano i programmi 
"illeggibili": struct, macro, direttive al compilatore, possibilità di 
inserire codice assembler nei sorgenti c++ (solo per citarne alcuni)
- purtroppo gli hanno tolto anche tante altre belle cose: i template 
(che adesso rientrano dalla finestra con il jdk 1.5), le enumerazioni 
(idem con 1.5)
- però hanno anche migliorato la gestione delle eccezioni, della 
memoria, etc. etc.
C# è nato come alternativa a Java: M$ ci aveva provato a modificare le 
specifiche Java con J++, ma la Sun si è incazzatissima (vedi la famosa 
causa chiusa in questi giorni)
- anche C# ha una sintassi simile a C++
- assomiglia molto (ma molto) a Java (anche le librerie standard, a 
volte sembra che le abbiano riscritte da capo)
- assomiglia un pochino anche a VB
In conclusione:
- se vuoi la massima libertà (e tanti altissimi rischi !) usa C++
- se vuoi la semplicità, un sacco di roba Open e tanta documentazione, 
usa Java
- se ti piace VB ma hai bisogno di un liguaggio solido, usa C# (ti prego 
lascia stare 
VB.NET
 )
-- 
                 ''~``
                ( o o )
+---------.oooO--(_)--Oooo.----+
 
http://www.jroller.com/page/megadix/
 
http://www.mict.it/

 Lo stesso non vale per Java e C#.
Io aggiungerei che il C++ ti perdona molto meno gli errori di
programmazione, si rischia infatti di fare molti piu' danni come
x es. accedere in zone di memoria errate, non deallocare gli oggetti
etc...
Se non erro questi rischi non ci sono in C# xche' e' ispirato (sono
stato buono) proprio da Java, quindi dovrebbe avere un garbage collector
e cosi' via.
come gia' detto C# gira sotto .NET, ma ci sono progetti di porting
di .NET per es. su linux, vedi progetto Mono o dotnetgnu (o una roba
simile non ricordo il nome preciso del secondo)

 in Java, è molto traumatico migrare al C++?
Non so, io ho fatto il percorso contrario, e non ho avuto problemi. Credo
che ci voglia un po' per riuscire a gestire il C++ passando da Java, ma
nessuno shock da cambio culturale :)
-- 
Krapp
graymondSEMISHPA...@tin.it
"Non ho paura di Berlusconi in sè
 ho paura di Berlusconi in me"
ICQ Number: 50845928

 si compilera' e funzionera' su qualunque sistema operativo.
Dicendo che il C++ è potente, intedevo dire che ti permette di fare 
qualsiasi cosa umanamente e informaticamente concepibile (ora forse 
esagero ;-) ).
Però la sua scarsa portabilità lo limita molto.
Ovviamente il C++ rimane portabile se utilizzo solo le librerie 
standard, ma saresti in grado di sviluppare qualcosa di decente con le 
sole librerie standard?
Daltronde il linguaggio perfetto non esiste...

Ciao, may!
Il giorno 17/04/2004 alle ore 13:33 hai scritto:
 m> Ovviamente il C++ rimane portabile se utilizzo solo le librerie
 m> standard, ma saresti in grado di sviluppare qualcosa di decente con le
 m> sole librerie standard?
Dipende da cosa devi sviluppare. La logica di funzionamento di un qualsiasi
programma puo' essere fatta in modo assolutamente portabile. La logica di
presentazione (GUI) invece puo' essere portabile o no a seconda delle scelte
del programmatore.
La portabilita' o meno di un programma dipende al 99% dalle scelte
progettuali.
Ovviamente questo esclude Java che e' portabile per definizione (nonostante
ci sia gente che si ostina a snaturarlo cercando compilatori nativi).
 m> Daltronde il linguaggio perfetto non esiste...
Il linguaggio perfetto e' quello con cui il programmatore riesce a fare
tutto quello che vuole.


 lascia stare 
VB.NET
 )
Anche se OT, potresti darmi qualche indicazione sui difetti del VB.Net ?
Dopo anni che uso solo linux, sono finito a fare la tesi in una azienda
partner microsoft :), e li' sono stato costretto ad imparare VB.Net.
Comunque, essendo un linguaggio al 100% OO non ho avuto molti problemi,
anzi, non trovo nessuna differenza con i concetti appresi studiando Java.
Pero' visto la cattiva fama di VB.Net soprattutto tra i programmatori linux,
che ho tanto frequentato e tuttora frequento, sono sempre alla ricerca di
critiche *costruttive* a questo linguaggio...
Ciao

..e per concludere, quindi, quale tool di C++ mi consigliate di utilizzare?
esiste l'equivalente del JBuilder della Borland anche per C++ (gratis)? è
ugualmente valido? oppure,cosa mi consigliate in alternativa?
grazie,
    a.

 wrote:

Qui sfori un po' nell'OT, il C++ ha un suo gruppo che sapra' darti piu'
aiuti it.comp.lang.cpp ( a memoria) ad ogni modo esistono un po' IDE C++
dipende dalla piattaforma che vuoi usare (esiste anche quello della
Borland ma non e' gratutio, pero' dovrebbe esistere qualche versione
particolare gratis oppure Kylix se usi Linux).
-- 
Ciao
Fabio

 Ciao
Uhhmmm, vediamo un po'...Allora in generale tutto ciò che non mi piace 
di 
VB.NET
 è che è il figlio illegittimo di VB...so che detta così è un 
po' un'affermazione idiota, ora mi spiego. Tu hai studiato OOP, Java o 
C++ (o entrambi ?) magari anche UML e tutte queste cose BELLISSIME; di 
conseguenza avrai scritto degli STUPENDI PROGRAMMI IN 
VB.NET
: 
riutilizzabili, modulari, bla bla bla. Il punto è che TU che ti hai 
imparato tutto ciò grazie a C++/Java, e ovviamente NON avrai utilizzato 
tutte quelle cacate di 
VB.NET
 ereditate da VB 4-5-6, evitando di 
sporcare i tuoi bellissimi OGGETTI con delle PROCEDURE. Moltissimi 
programmatori VB ora hanno imparato che c'è una nuova "versione" del 
loro linguaggio preferito (in molti casi l'unico), ma contiunueranno ad 
utilizzarlo come prima.
In definitiva, all'amico Andrew consiglierei FORTEMENTE	C# rispetto a 
VB.NET
 (se proprio deve scegliere in ambito M$) perchè ci guadagna non 
solo lui, ma anche i programmi che sviluppa :)
Mi raccomando, un bel sorriso eh...
Cià


 qualsiasi cosa umanamente e informaticamente concepibile
Ringraziando Church:
   Con il C++ (cosě come con C, Java, C#, Perl, Basic, etc...)
   puoi solo denotare algoritmi che risolvono funzioni calcolabili.
Purtroppo le funzioni calcolabili sono solo una minima parte
di tutte le funzioni.
- Dario

 di tutte le funzioni.
eh eh eh
lo so lo so!
Il mio caro amico Church mi ha portato un bel 30 a Fondamenti di 
Informatica ;-)
Perň forse non hai notato questo:
 >Dicendo che il C++ č potente, intedevo dire che ti permette di fare 
 >qualsiasi cosa umanamente e informaticamente concepibile
 >>>>>___(ora forse esagero ;-) ). ____<<<<<<
Riformulo, prima che continuiate in coro:
Le mie intenzioni erano nell'affermare che il C++ concede grossa libertŕ 
al programmatore, permettendogli di arrivare ad una programmazione di 
livello molto piů basso che non in molti altri linguaggi di programmazione.
;-)

 Mi raccomando, un bel sorriso eh...
:-))
Ciao