PDA

View Full Version : C++ o C# ?


cisky
16-12-2003, 13:50
Ho letto degli articoli che illustano le differenze tra il C++ e il C# (.Net) ma non conoscendo il linguaggio C non ho capito bene quali limitazioni o potenzialità offre un linguaggio piuttosto che l'altro.

Per iniziare quale tra questi due linguaggi consigliate? (Ho letto che il C# è più flessibile sintatticamente e quindi offre una maggiore facilità di utilizzo.)
Mi sembra comunque che nel forum non sia molto trattato il C#.
Sto dicendo delle stupidaggini o è Vero? :confused:

Mi potete x favore illustrare le differenze pratiche (Tenete conto che io di C attualmente so poco o nulla)

Grazie! :)

maxithron
16-12-2003, 14:40
Uno degli aspetti fondamentali è la portabilità del linguaggio.

C e C++ (che comunque sono due linguaggi diversi) sono portabili nel senso che puoi scrivere codice che va bene sia su macchine win che *nix o mac, etc, facendo solo piccole modifiche al codice (a meno di non usare sistemi proprietari tipo borland...per esempio)....

Altro esempio di portabilità(del codice sorgente) è il java.

Il C# è fondamentalmente dedicato a tutta la struttura .NET (anche se non significa assolutamente un limite come linguaggio).

P.S.: (se fai una ricerca sul forum trovi molti post con queste domande)

cisky
16-12-2003, 17:20
Grazie 1000!

... Ho provato ad eseguire delle ricerche con il testo 'C#' ma non trovo nulla...

... Mah, ?

supertondo
16-12-2003, 19:34
Dipende da che vuoi fare...C# almeno in ambiente Microsoft(finora l'unico realmente supportato) è molto indicato per software che usano reti ed in particolare internet.

C/C++ ideali per velocità e potenza senza limite

mjordan
17-12-2003, 22:07
Matematica o filosofia? :p

mjordan
17-12-2003, 22:08
Se alla fine delle tue ricerche sceglierai di imparare C#, chiudi gli occhi e comprati un manuale Java :D

recoil
17-12-2003, 22:23
Originariamente inviato da mjordan
Se alla fine delle tue ricerche sceglierai di imparare C#, chiudi gli occhi e comprati un manuale Java :D

eh eh giusto

io per ora mi tengo alla larga da .NET e w Java :)

cionci
18-12-2003, 15:31
Consiglio...imparati prima C++...e quando l'hai imparato bene potrai pensare di imparare il C#...a quel punto ti consiglierò di imparare Java !!! ;)

Passy
19-12-2003, 14:00
Io preferisco java a buco!!!!!:sofico:

mjordan
22-12-2003, 17:37
Scusa che significa a buco? :D

Passy
23-12-2003, 01:56
Che mi preferisco veramente tanto Java...
Anche se a dire il vero non sono imparziale visto che faccio il programmatore Java di mestiere cmq il fatto che eistano valanghe di manuali, esempi, librerie GRATIS! gioca veramente a suo favore, per non parlare dei tool di sviluppo... Io uso NetBeans e è sempre aggiornatissimo e non lo paghi un euro.... Ciò non vale per c# che è a pagamento e costa anche un tot.

Ciao

rucka
23-12-2003, 11:55
A dire la verità c# è assolutamente gratuito. L'unica cosa che è a pagamento è il Visual Studio, ma nessuno ti vieta di scrivere codice senza l'ambiente di sviluppo microsoft. Ci sono molti ambienti free per scrivere codice in c#, alcuni veramente validi (vedi webmatrix per quanto riguarda la parte di asp.net).
Dal mio punto di vista tra c# e java non c'è assolutamente paragone, stravince c#. Mentre non ha senso fare paragoni tra c# e c++, sono due linguaggi che hanno un target totalmente differente. Il futuro, almeno per quanto riguarda lo sviluppo su piattaforma MS è la coesistenza tra c++ e c# soprattutto quando dalla versione 2.0 del framework vedrà la luce il c++/CLI le estensioni managed del c++. Tutto questo rigorosamente IMHO, oltre che Chris Anderseen, Don Box, Chris Sells :P.
In ogni caso, tornando alla domanda iniziale, per qualsiasi info su c# e .net tutte le risposte le puoi ricevere su www.ugidotnet.org. E' il punto di riferimento italiano sul .net dove trovi articoli, tip e dritte codice... oltre a un forum frequentato da un sacco di persone veramente preparate.
Gianluca

lombardp
23-12-2003, 12:23
Originariamente inviato da rucka
Dal mio punto di vista tra c# e java non c'è assolutamente paragone, stravince c#.

Come mai? :confused:

Luc@s
23-12-2003, 12:30
Originariamente inviato da rucka
Ci sono molti ambienti free per scrivere codice in c#, alcuni veramente validi (vedi webmatrix per quanto riguarda la parte di asp.net).


Parli di SharpDevelop?

rucka
23-12-2003, 12:34
Originariamente inviato da Luc@s
Parli di SharpDevelop?

No:) quello meglio evitarlo come la peste...:) Pensavo a un normale editor free che si trova sulla rete, abbinato a nant per la parte di compilazione.

Luc@s
23-12-2003, 12:36
Originariamente inviato da rucka
No:) quello meglio evitarlo come la peste...:) Pensavo a un normale editor free che si trova sulla rete, abbinato a nant per la parte di compilazione.

Come mai??
Cmq Scintilla è carino:D

rucka
23-12-2003, 12:45
Originariamente inviato da Luc@s
Come mai??
Non ho una grande esperienza su SharpDevloper, ne avevo provato una versione qualche tempo fa ed era piena di bug... Magari ultimamente è migliorata... Mentre per Nant ho un unico giudizio :yeah:
Semplicemente geniale!

Luc@s
23-12-2003, 13:08
Originariamente inviato da rucka
entre per Nant ho un unico giudizio :yeah:
Semplicemente geniale!

cos' è nant?
E forse l' Ant del java in versione .NET???

rucka
23-12-2003, 13:45
Originariamente inviato da Luc@s
cos' è nant?
Nant è un tool di build per .NET. Prende spunto da Ant (Another Neat Tool) tool analogo per Java.
Per rendere l'idea è il make del c. Permette, specificando dei comandi in un file di configurazione (file che ha un formato xml) permette di integrare alla compilazione di progetti operazioni quali commit e update su cvs, spedizione di mail, avvio di unit test, compilazione della documentazione con ndoc e altre opzioni veramente interessanti. Insomma tutto il necessario (e molto di +) per il dealy build:)
Il sito è http://nant.sourceforge.net/.

fgmac
23-12-2003, 15:31
Originariamente inviato da rucka
Dal mio punto di vista tra c# e java non c'è assolutamente paragone, stravince c#.


Veramente c# e' meglio di java? In che senso? Piu' duttile, piu' trasportabile?

Grazie, sono curioso. Adesso programmo in java per lavoro e trovo che sia il miglior linguaggio con cui ho avuto a che fare fino ad ora. (non dovendo programmare a basso livello).
E .NET non ha fatto altro che copiarne i principi ispiratori applicandoli a piu' linguaggi.

lombardp
23-12-2003, 15:37
Originariamente inviato da fgmac
Veramente c# e' meglio di java? In che senso? Piu' duttile, piu' trasportabile?


Ho fatto anche io la stessa domanda poco fa, ma è stata ignorata. :rolleyes:

rucka
23-12-2003, 16:23
Originariamente inviato da fgmac
Grazie, sono curioso. Adesso programmo in java per lavoro e trovo che sia il miglior linguaggio con cui ho avuto a che fare fino ad ora. (non dovendo programmare a basso livello).
E .NET non ha fatto altro che copiarne i principi ispiratori applicandoli a piu' linguaggi.

Premetto che non sono un espertone di java. In realtà .net non si è ispirato a java. .NET è un'architettura e non un linguaggio di programmazione. .NET è l'evoluzione della architettura COM. E' nato per cercare di eliminare i difetti di questa architettura(potentissima ma con alcuni problemi evidenti). Per maggiori informazioni vi mando al libro Essential .NET di Don Box. E' indubbio che ha alcune caratteristiche simili a java, ma ne ha anche alcune simili a Delphi, al c++, all'assembly....
Potremmo stare a discutere mesi sul dualismo CLR e java runtime, sulle prestazioni, sul numero di righe di codice che servono per implementare una stessa cosa con le due architetture, sulle due base class... Potrebbero essere fatti benchmark che parlano in favore di una o dell'altra architettura.
Ci sono però alcuni punti in cui il giudizio non può essere soggettivo ma è oggettivo. .NET è il futuro. Dico questo perchè .NET è la base su cui si appoggerà la nuova architettura windows. Dimenticatevi COM, dimenticatevi le Win32, le Directx e tutto quello che ora vedete sotto il vostro windows. Da Longhorn (nuova versione di windows prevista x il 2006) inizierà il processo per cui .NET diventerà parte integrante del sistema operativo(non ospitato come oggi) e tutte le API saranno classi managed invece di funzioni (vedi win32). Il futuro si chiama WinFs, Avalon e Indigo(tutte tecnologie .NET like). Tipica domanda: Ma se il prossimo windows sarà tutto gestito attraverso il CLR e quindi una macchina virtuale non sarà un chiodo?
RISPOSTA:
no. Il clr (garbage collector inclusa) sarà codice eseguito in modalità Kernel e quindi con evidenti incrementi di prestazioni.
DOMANDA:
E per i giochi?
RISPOSTA:
Avalon, il motore grafico di windows richiamerà funzionalità gestite dalla gpu (e quindi all'interno della scheda grafica). La tendenza sarà di far fare tutto ciò che è inerente la grafica alla scheda video, saltando difatto l'architettura .net. Ma su queste cose ne sa sicuramente di + il buon FEK.

Al di là di questo, e tornando alla parte soggettiva del giudizio, la base class di .net è veramente completa e assolutamente aperta. Per architettura aperta intendo tutto quello che non è l'MFC. Con .net ci si può inserire in qualsiasi punto dell'architettura ed ereditando le classi opportune, personalizzare il comportamento di qualsiasi servizio. In più trovo il modello di programmazione coerente, flessibile ed estremamente potente. Può essere potente come il c++ (perchè di fatto il c++ farà parte di .NET) ma flessibile come c# (e concorrenti come Delphi o Java). Ma su questo aspetto è questione di gusti:)

L'unico punto a fare di java è che è realmente multipiattaforma. .NET lo è ma per ragioni commerciali, .net è uno standard (ora anche iso oltre che ecma) ma la microsoft (per le evidenti ragioni sopraesposte) non supporterò altre piattaforme. Questo perchè non è nato con lo scopo di essere multipiattaforma ma è nato con lo scopo di sostituire COM.
Tutto rigorosamente IMHO.
Gianluca

mjordan
23-12-2003, 18:20
Se è per questo neanche Java è un linguaggio di programmazione bensì una tecnologia.

rucka
23-12-2003, 20:53
Originariamente inviato da mjordan
Se è per questo neanche Java è un linguaggio di programmazione bensì una tecnologia.
In realtà è anche un linguaggio di programmazione oltre a una tecnologia...

fek
24-12-2003, 13:09
Originariamente inviato da rucka
Avalon, il motore grafico di windows richiamerà funzionalità gestite dalla gpu (e quindi all'interno della scheda grafica). La tendenza sarà di far fare tutto ciò che è inerente la grafica alla scheda video, saltando difatto l'architettura .net. Ma su queste cose ne sa sicuramente di + il buon FEK.

Non e' cosi semplice Rucka ;)

Può essere potente come il c++ (perchè di fatto il c++ farà parte di .NET) ma flessibile come c# (e concorrenti come Delphi o Java). Ma su questo aspetto è questione di gusti:)

Eresia.

Ma di questo ne parliamo a casa di fronte a un piatto di lasagne...

PS. E' mio fratello :D

maxithron
28-12-2003, 12:49
Mi permetto di non essere d'accordo con l'affermazione che .NET sia il futuro dato che non sta scritto da nessuna parte che windows (come gli altri SO) "siano" il futuro.

rucka
28-12-2003, 14:17
Originariamente inviato da maxithron
Mi permetto di non essere d'accordo con l'affermazione che .NET sia il futuro dato che non sta scritto da nessuna parte che windows (come gli altri SO) "siano" il futuro.

Probabilmente mi sono espresso male, intendevo dire che .NET è il futuro della piattaforma Windows.

mjordan
29-12-2003, 17:33
Quoto totalmente. Un futuro in lento e inesorabile declino :D :sofico:

matcy
30-12-2003, 23:11
non so dare un giudizio definitivo, ma posso raccontarvi la mia esperienza:
premetto che non ho ancora compiuto 18 anni, quindi non sono un "programmatorone", ma siccome mi sto specializzando in informatica sono interessato all'argomento.

a scuola ho imparato a usare prima ansi/c e adesso c++, in futuro vb 6 e un briciolo di html

ma come molti di voi sapranno la scuola superiore (anche se ho scelto la specializzazione informatica) offre ben poco, se non una piccola introduzione alla programmazione ad oggetti e un briciolo di metodo di analisi.

sono giunto alla conclusione che se voglio imparare qualcosa di interessante devo mettermi a programmare per conto mio, uscendo dal ritmo lentissimo della scuola.

mi sono trovato a dover scegliere tra .net (il futuro della piattaforma microsoft, che è ancora il must commercialmente parando) oppure approfondire ansi c o c++ o iniziare a guardare java e php (programmazione dall'ampia portabilità, diffusa soprattutto in ambienti unix/linux, verso i quali ho parecchia fiducia per il futuro)

a questo punto il dubbio diventa atroce, ma con qualcosa si dovrà pur iniziare, tanto sono giovane e volenteroso, nella vita una scelta non è mai definitiva, soprattutto in questo ambito, quindi ritengo che nella mia situazione l'importante sia iniziare: cosa scegliere?
.net si usa ancora poco, commercialmetne il + usato è ancora vb6, ma se inizio adesso sarò pronto per quando inizierà ad essere molto usata
la piattaforma linux è il futuro, è nata per essere stabile e bella da usare, non instabile ma bella estetiacamente come windows
però la nuova filosofia .net mi è piaciuta, è versatile, visual studio mi mette a disposizione degli strumenti validissimi (non sono gratuiti, ma x me non è un problema x ora ;) ), una guida chiara e sempre aggiornata, e poi ho fiducia nel fato che quel bastardo di bill riesca a rimanere in una posizione di supremazia x ancora qualche anno, inoltre mi spedisce a casa gratis un cd con qualche spiegazione, esercizi ed esempi sul vb.net
insomma, ho scelto di comprarmi il libro dell'esame di certificazione microsoft 70-306 e 70-316, che è fatto veramente bene e inoltre mi rende teoricamente pronto per l'esame.

inizierò ad usarlo, poi magari mi fermerò e deciderò di guardare java, poi sceglierò cosa mi piace d +, ma per ora l'importante è iniziare.

sono stato un po lungo, ma spero di essere stato utile e, perkè no di ricevere qualche osservazione/critca/consiglio

ev8
02-01-2004, 14:03
Originariamente inviato da rucka
Premetto che non sono un espertone di java. In realtà .net non si è ispirato a java.

Falso.

.NET è un'architettura e non un linguaggio di programmazione. .NET è l'evoluzione della architettura COM. E' nato per cercare di eliminare i difetti di questa architettura(potentissima ma con alcuni problemi evidenti).

Vero, in parte, ma fra .NET e COM ci sono ere geologiche.

Per maggiori informazioni vi mando al libro Essential .NET di Don Box. E' indubbio che ha alcune caratteristiche simili a java, ma ne ha anche alcune simili a Delphi, al c++, all'assembly....

All'assembly?

Potremmo stare a discutere mesi sul dualismo CLR e java runtime, sulle prestazioni, sul numero di righe di codice che servono per implementare una stessa cosa con le due architetture, sulle due base class... Potrebbero essere fatti benchmark che parlano in favore di una o dell'altra architettura.
Ci sono però alcuni punti in cui il giudizio non può essere soggettivo ma è oggettivo. .NET è il futuro.

:rolleyes:

Dico questo perchè .NET è la base su cui si appoggerà la nuova architettura windows. Dimenticatevi COM, dimenticatevi le Win32, le Directx e tutto quello che ora vedete sotto il vostro windows. Da Longhorn (nuova versione di windows prevista x il 2006) inizierà il processo per cui .NET diventerà parte integrante del sistema operativo(non ospitato come oggi) e tutte le API saranno classi managed invece di funzioni (vedi win32). Il futuro si chiama WinFs, Avalon e Indigo(tutte tecnologie .NET like). Tipica domanda: Ma se il prossimo windows sarà tutto gestito attraverso il CLR e quindi una macchina virtuale non sarà un chiodo?
RISPOSTA:
no. Il clr (garbage collector inclusa) sarà codice eseguito in modalità Kernel e quindi con evidenti incrementi di prestazioni.

Se pensi che questo risolva da solo tutti i problemi di prestazioni JIT, stiamo freschi.

DOMANDA:
E per i giochi?
RISPOSTA:
Avalon, il motore grafico di windows richiamerà funzionalità gestite dalla gpu (e quindi all'interno della scheda grafica). La tendenza sarà di far fare tutto ciò che è inerente la grafica alla scheda video, saltando difatto l'architettura .net. Ma su queste cose ne sa sicuramente di + il buon FEK.
Al di là di questo, e tornando alla parte soggettiva del giudizio, la base class di .net è veramente completa e assolutamente aperta. Per architettura aperta intendo tutto quello che non è l'MFC. Con .net ci si può inserire in qualsiasi punto dell'architettura ed ereditando le classi opportune, personalizzare il comportamento di qualsiasi servizio. In più trovo il modello di programmazione coerente, flessibile ed estremamente potente.

Questo passaggio è tratto da qualche rivista M$ :D

Può essere potente come il c++ (perchè di fatto il c++ farà parte di .NET

Hem, dovresti essere un pò più preciso quando dici che C++ FARA' PARTE DI

) ma flessibile come c# (e concorrenti come Delphi o Java). Ma su questo aspetto è questione di gusti:)

L'unico punto a fare di java è che è realmente multipiattaforma. .NET lo è ma per ragioni commerciali, .net è uno standard (ora anche iso oltre che ecma) ma la microsoft (per le evidenti ragioni sopraesposte) non supporterò altre piattaforme. Questo perchè non è nato con lo scopo di essere multipiattaforma ma è nato con lo scopo di sostituire COM.
Tutto rigorosamente IMHO.
Gianluca
Java è multipiattaforma, .NET è multilinguaggio ( e multipiattaforma a $$ :D:D:D )

ev8
02-01-2004, 14:22
Originariamente inviato da matcy
non so dare un giudizio definitivo, ma posso raccontarvi la mia esperienza:
premetto che non ho ancora compiuto 18 anni, quindi non sono un "programmatorone", ma siccome mi sto specializzando in informatica sono interessato all'argomento.

a scuola ho imparato a usare prima ansi/c e adesso c++, in futuro vb 6 e un briciolo di html

Lascia pertere VB6...
L'HTML non è un linguaggio... lascia perdere anche quello :D:D


ma come molti di voi sapranno la scuola superiore (anche se ho scelto la specializzazione informatica) offre ben poco, se non una piccola introduzione alla programmazione ad oggetti e un briciolo di metodo di analisi.

sono giunto alla conclusione che se voglio imparare qualcosa di interessante devo mettermi a programmare per conto mio, uscendo dal ritmo lentissimo della scuola.

mi sono trovato a dover scegliere tra .net (il futuro della piattaforma microsoft, che è ancora il must commercialmente parando) oppure approfondire ansi c o c++ o iniziare a guardare java e php (programmazione dall'ampia portabilità, diffusa soprattutto in ambienti unix/linux, verso i quali ho parecchia fiducia per il futuro)

Il C++ può aiutarti molto, ma se avessi la tua età non mi focalizzerei su di un singolo linguaggio ma cercherei piuttosto di apprendere un approccio object-oriented alla programmazzione ( i linguaggi del futuro si somigliano tutti )

a questo punto il dubbio diventa atroce, ma con qualcosa si dovrà pur iniziare, tanto sono giovane e volenteroso, nella vita una scelta non è mai definitiva, soprattutto in questo ambito, quindi ritengo che nella mia situazione l'importante sia iniziare: cosa scegliere?
.net si usa ancora poco, commercialmetne il + usato è ancora vb6, ma se inizio adesso sarò pronto per quando inizierà ad essere molto usata
la piattaforma linux è il futuro, è nata per essere stabile e bella da usare, non instabile ma bella estetiacamente come windows
però la nuova filosofia .net mi è piaciuta, è versatile, visual studio mi mette a disposizione degli strumenti validissimi (non sono gratuiti, ma x me non è un problema x ora ;) ), una guida chiara e sempre aggiornata, e poi ho fiducia nel fato che quel bastardo di bill riesca a rimanere in una posizione di supremazia x ancora qualche anno, inoltre mi spedisce a casa gratis un cd con qualche spiegazione, esercizi ed esempi sul vb.net
insomma, ho scelto di comprarmi il libro dell'esame di certificazione microsoft 70-306 e 70-316, che è fatto veramente bene e inoltre mi rende teoricamente pronto per l'esame.

Bel libro, ma lascia perdere VB.NET ( te lo dice uno che ci ha lavorato... )

inizierò ad usarlo, poi magari mi fermerò e deciderò di guardare java, poi sceglierò cosa mi piace d +, ma per ora l'importante è iniziare.

Bhe, se sei indeciso c'è sempre J# :D:D

sono stato un po lungo, ma spero di essere stato utile e, perkè no di ricevere qualche osservazione/critca/consiglio

matcy
03-01-2004, 18:26
Originariamente inviato da ev8
Lascia pertere VB6...
L'HTML non è un linguaggio... lascia perdere anche quello :D:D
ma infatti l ilascio perdere entrambi, html lo so che non è un linguaggio, ho solo descritto qual'è il percorso formativo (=merda) che fornisce la scuola italiana

Il C++ può aiutarti molto, ma se avessi la tua età non mi focalizzerei su di un singolo linguaggio ma cercherei piuttosto di apprendere un approccio object-oriented alla programmazzione ( i linguaggi del futuro si somigliano tutti )

condivido, ma già che sono abbastanza svelto.... inizio a fare qlc d "interessante", le basi di OOP le ho, ma devo muovere il sedere se voglio migliorarmi

Bel libro, ma lascia perdere VB.NET ( te lo dice uno che ci ha lavorato... )
Bhe, se sei indeciso c'è sempre J# :D:D

j# mi sa che farà una brutta fine, mentre rimarranno il vero Java e il c#