View Full Version : Mi spiegate cosa è il C#?
Ciao, scusate la ia domanda sicuramente da niubbo, ma non ho capito bene cosa sia il C#, ho sentito che viene utilizzato dal XNA Games Studio, ma che differenze ci sono con il C e C++ ?
Thx a lot
morskott
06-11-2007, 19:05
Il C# (http://it.wikipedia.org/wiki/C_sharp) è un linguaggio di programmazione della MS facente parte del framework .net. Utilizza il paradigma OO (Object Oriented) ed è molto simile al Java. è un linguaggio semi-interpretato (non è propiamente vero, un compilato in C# è in formato IL (Intermetiade Language) non eseguibile direttamente sulla macchina che viene compilato realmente a run-time da un componente del framework (il CLR (Comon Language Run-time)) in codice binario realmente eseguibile).
Ha gestione della memoria generalmente managed (non puoi accedere direttamente ad essa tramite puntatori) che però dichiarando esplicitamente pezzi di codice unsafe diventa non-managed e presenta il Garbage-collector per la deallocazione automatica di oggetti non piu usati.
Il C# (http://it.wikipedia.org/wiki/C_sharp) è un linguaggio di programmazione della MS facente parte del framework .net. Utilizza il paradigma OO (Object Oriented) ed è molto simile al Java. è un linguaggio semi-interpretato (non è propiamente vero, un compilato in C# è in formato IL (Intermetiade Language) non eseguibile direttamente sulla macchina che viene compilato realmente a [B]run-time da un componente del framework (il CLR (Comon Language Run-time)) in codice binario realmente eseguibile).
Ha gestione della memoria generalmente managed (non puoi accedere direttamente ad essa tramite puntatori) che però dichiarando esplicitamente pezzi di codice [B]unsafe diventa non-managed e presenta il Garbage-collector per la deallocazione automatica di oggetti non piu usati.
Ho capito un quarto di quello che hai detto:D
Metto in grassetto quello che non ho capito così se vuoi/puoi me lo spieghi.
E poi: perchè MS lo usa per fare i videogame Xbox e Windows? Che vantaggi offre rispetto al c++?
Thx per la pazienza e scustemi se dico imprecisioni
marko.fatto
06-11-2007, 20:32
In pratica non viene nè compilato in codice nativo nè interpretato giust in temp( :D )... viene fatta una "roba" a metà strada tra l'exe e il sorgente...
Non devi sbatterti per gestire la memoria perchè lo fa il garbage-collector (un progr che gira in background e si attiva solo quando è realmente necessario svuotare la memoria da oggetti che nn usi +)
In pratica non viene nè compilato in codice nativo nè interpretato giust in temp( :D )... viene fatta una "roba" a metà strada tra l'exe e il sorgente...
Non devi sbatterti per gestire la memoria perchè lo fa il garbage-collector (un progr che gira in background e si attiva solo quando è realmente necessario svuotare la memoria da oggetti che nn usi +)
Metà tra exe e sorgente? E come fà a funzionare ? Lo compila durante l'esecuzione?
marko.fatto
06-11-2007, 20:55
viene compilato realmente a run-time da un componente del framework (il CLR (Comon Language Run-time)) in codice binario realmente eseguibile
http://gianom.googlepages.com/cartello.gif
Ziosilvio
07-11-2007, 09:12
non ho capito bene cosa sia il C#
È il risultato ottenuto da Micro$oft nel suo tentativo di copiare Java.
È il risultato ottenuto da Micro$oft nel suo tentativo di copiare Java.
No. E' il risultato che Microsoft ha ottenuto evolvendo la piattaforma COM che con Java ha nulla in comune.
Chi pensa che Java e C# (.NET) siano uno una copia dell'altro non ha le idee molto chiare: sono piattaforme che risolvono due problemi completamente diversi. Sarebbe come dire che un trattore e' una copia di una macchina perche' usano entrambi un motore a scoppio.
mad_hhatter
07-11-2007, 09:54
No. E' il risultato che Microsoft ha ottenuto evolvendo la piattaforma COM che con Java ha nulla in comune.
Chi pensa che Java e C# (.NET) siano uno una copia dell'altro non ha le idee molto chiare: sono piattaforme che risolvono due problemi completamente diversi. Sarebbe come dire che un trattore e' una copia di una macchina perche' usano entrambi un motore a scoppio.
puoi spiegare quali sono queste due classi di problemi? grazie
puoi spiegare quali sono queste due classi di problemi? grazie
.NET risolve lo stesso problema di COM: condividere componenti in formato binario sulla stessa piattaforma, indipendentemente dal linguaggio con il quale sono stati scritti. C# e' uno dei linguaggi con il quale scrivere i componenti.
La piattaforma Java risolve il problema di scrivere il codice indipendentemente dalla piattaforma sulla quale sara' eseguito.
Sono due problemi evidentemente differenti che hanno in comune solo alcune parti della soluzione: l'uso di una macchina virtuale che esegue JIT codice binario in un formato standard.
mad_hhatter
07-11-2007, 15:20
.NET risolve lo stesso problema di COM: condividere componenti in formato binario sulla stessa piattaforma, indipendentemente dal linguaggio con il quale sono stati scritti. C# e' uno dei linguaggi con il quale scrivere i componenti.
La piattaforma Java risolve il problema di scrivere il codice indipendentemente dalla piattaforma sulla quale sara' eseguito.
Sono due problemi evidentemente differenti che hanno in comune solo alcune parti della soluzione: l'uso di una macchina virtuale che esegue JIT codice binario in un formato standard.
innanzitutto grazie per la risposta...
ora, sviluppo in C# da pochissimo e prima dell'avvento di .net non ho mai sviluppato per la piattaforma win32, quindi la mia visione "storica" è molto limitata... però personalmente interpreto la piattaforma .net come una piattaforma managed con la quale creare creare componenti condivisibili sia localmente che remotamente (webservices) e che, come aggiunta, permette lo sviluppo multi-linguaggio... ma onestamente credo che il punto fondamentale sia appunto l'essere managed e os-independent più che multi-language... e in questo mi pare sia relativamente vicina a java...
ripeto, la mia conescenza di win32 è praticamente nulla, quindi potrei aver male interpretato la cosa, ma vorrei discuterne appunto per capire
grazie mille
Ti consiglio la lettura di questi due libri di Don Box, che descrivono prima COM e poi .NET da un punto di vista soprattutto storico. Poi Don Box scrive in maniera assolutamente cristallina.
Ti racconta perche' e' nato COM, come, da quali presupposti, i suoi problemi e come .NET sia nato e si sia evoluto come la soluzione ai problemi di COM.
Tanto che .NET fu presentato la prima volta al pubblico come "COM senza QueryInterface":
http://www.amazon.com/Essential-COM-Don-Box/dp/0201634465/ref=sr_1_1/104-0984262-8549516?ie=UTF8&s=books&qid=1194449523&sr=1-1
http://www.amazon.com/Essential-NET-Language-Microsoft-Development/dp/0201734117/ref=sr_1_2/104-0984262-8549516?ie=UTF8&s=books&qid=1194449671&sr=1-2
Non c'entra assolutamente nulla con Java.
yorkeiser
07-11-2007, 15:47
Al di là delle fuffe e finte giustificazioni tecniche, è la semplice manovra di marketing alla Microsoft: ovvero, c'è qualcosa di buono, che funziona e ha ampie fette di mercato (Java), facciamone una (brutta) copia e buttiamolo sul mercato per recuperare terreno (e moneta)
jappilas
07-11-2007, 15:49
innanzitutto grazie per la risposta...
ora, sviluppo in C# da pochissimo e prima dell'avvento di .net non ho mai sviluppato per la piattaforma win32, quindi la mia visione "storica" è molto limitata... però personalmente interpreto la piattaforma .net come una piattaforma managed con la quale creare creare componenti condivisibili sia localmente che remotamente (webservices) e che, come aggiunta, permette lo sviluppo multi-linguaggio... ma onestamente credo che il punto fondamentale sia appunto l'essere managed e os-independent più che multi-language... e in questo mi pare sia relativamente vicina a java...
ripeto, la mia conescenza di win32 è praticamente nulla, quindi potrei aver male interpretato la cosa, ma vorrei discuterne appunto per capire
grazie milleper una tesina feci una valutazione della piattaforma .Net nel 2000, prima dell' uscita della versione finale ( lavorando sulle beta, Edella piattaforma stessa E della documentazione msdn - bellissimi i paragrafi "to be filled" :asd: ) e anche se poi l' ho un tantino accantonata, ricordo bene quali aspetti fossero messi in evidenza come più importanti "asset"
e quello che veniva prima degli altri era proprio il livello di riuso del codice che veniva reso possibile - riuso sia "interno", realizzando assembly diversi di uno stesso, nuovo, progetto in linguggi diversi, sia "esterno", cioè la possibilità di riutilizzare,semplicemente importandolo, codice legacy ma collaudato in nuovi progetti al passo coi tempi ( per dire, codice COBOL integrato con Visual Basic, C++, C# )
il type system e l' infrastruttura di just in time compiling, memory management e marshaling apparivano chiaramente elementi fondamentali dell' implementazione, sì, ma strumentali all' ottenimento di una language interoperability che offrisse maggiore flessibilità allo sviluppatore di soluzioni per sistemi MS, prima che avvantaggiare piattaforme alternative il cui supporto non è mai stata un priorità per MS ( anche se va dato atto di aver creato uno standard aperto)
Al di là delle fuffe e finte giustificazioni tecniche, è la semplice manovra di marketing alla Microsoft: ovvero, c'è qualcosa di buono, che funziona e ha ampie fette di mercato (Java), facciamone una (brutta) copia e buttiamolo sul mercato per recuperare terreno (e moneta)no, perchè Microsoft ha sì prodotto una brutta copia di Java , ma fu visual J++, non la piattaforma .net, che appunto venne dopo e con altri intenti ...
java, peraltro, presenta lo stesso difetto di altri linguaggi di programmazione, non poter riusare codice estraneo o componenti binari senza richiedere "glue code" o sistemi come jni
mad_hhatter
07-11-2007, 15:59
grazie a fek e jappilas... appena mi libero mi leggo i due link postati da fek.
in che modo si attua l'integrazione di codice legacy?
Al di là delle fuffe e finte giustificazioni tecniche, è la semplice manovra di marketing alla Microsoft: ovvero, c'è qualcosa di buono, che funziona e ha ampie fette di mercato (Java), facciamone una (brutta) copia e buttiamolo sul mercato per recuperare terreno (e moneta)
se non sei in grado di argomentare le tue tesi allora puoi anche evitare di esporle fin dall'inizio.
tutti bravi a dire che Linux è figo perché è opensource... :asd:
ma fu visual J *Visual J++ :p
jappilas
07-11-2007, 16:22
*Visual J++ :ptu si' sofistico :O<...>
tutti bravi a dire che Linux è figo perché è opensource... :asd:non è questione di opensource... è questione che essendo Java nato prima, negli anni 90, ed essendo .Net venuto dopo, per di più dotato a sua volta di un JIT funzionante con bytecode, quest' ultimo può apparire l' ennesimo caso di copia, a prima vista - quindi, è necessario approfondire :O
yorkeiser
07-11-2007, 16:40
se non sei in grado di argomentare le tue tesi allora puoi anche evitare di esporle fin dall'inizio.
Le mie tesi posso argomentarle tranquillamente visto che derivano da testimonianze di un manager Microsoft con cui lavoro quotidianamente... magari ne saprà qualcosa in più persino di te :)
tutti bravi a dire che Linux è figo perché è opensource... :asd:
Mai detto, ha i suoi pregi e i suoi difetti, come Winzozz del resto
Le mie tesi posso argomentarle tranquillamente visto che derivano da testimonianze di un manager Microsoft con cui lavoro quotidianamente... magari ne saprà qualcosa in più persino di te :)
Ok, argomenta.
yorkeiser
07-11-2007, 17:22
Ok, argomenta.
Me ne guardo bene, come al solito verrebbe fuori il classico flame da stadio coi tifosi di Java e di Microsoft che sbandierano le fenomenali caratteristiche del linguaggio per cui tifano la domenica.
Ho semplicemente riportato l'ammissione di un collega che lavora per Microsoft a a livello di management; se sento Galliani dire che ha comprato Ronaldo per coprire dei "sospetti" movimenti finanziari, non vedo perchè dovrei credere al contrario. Credo che la strategia di marketing targata Microsoft la conoscerai anche tu (ottenere il monopolio sui singoli settori di mercato, a volte più con un occhio al portafogli che alla effettiva qualità delle produzioni), poi si può stare a disquisire all'infinito (come è già stato fatto, anche qui sopra) sulla bontà o meno dei prodotti e su chi ce l'ha più lungo. Come detto, io me ne tiro fuori volentieri :p
Me ne guardo bene
Non avevo alcun dubbio.
Ho semplicemente riportato l'ammissione di un collega che lavora per Microsoft a a livello di management;
Ed hai riportato una cosa sbagliata. Leggi i libri che ho consigliato, scritti da qualcuno che su quelle architetture ha lavorato, e che spiegano passo passo il problema da affrontare e le soluzioni scelte. E non fare disinformazioni spacciando per vero cio' che hai sentito dire da qualcun altro.
yorkeiser
07-11-2007, 17:43
Ed hai riportato una cosa sbagliata. Leggi i libri che ho consigliato, scritti da qualcuno che su quelle architetture ha lavorato, e che spiegano passo passo il problema da affrontare e le soluzioni scelte. E non fare disinformazioni spacciando per vero cio' che hai sentito dire da qualcun altro.
E tu cosa ne sai che si tratta di disinformazione? Sei forse nel management di Microsoft? Vai a cena con Bill Gates?
Buon per te se hai letto qualche campana, ma la verità di solito è un attimino più articolata, e sta attento a non cadere TU nell'errore di fare disinformazione spacciando una campana per verità.
E tu cosa ne sai che si tratta di disinformazione? Sei forse nel management di Microsoft? Vai a cena con Bill Gates?
Buon per te se hai letto qualche campana, ma la verità di solito è un attimino più articolata, e sta attento a non cadere TU nell'errore di fare disinformazione spacciando una campana per verità.
Diciamo che ne so di piu' del tuo amico, e lo argomento pure, ma non vado ancora a cena con Bill Games (mi limito a Shane Kim per ora :)). Non si tratta di campane, si tratta di conoscere e capire l'architettura di un sistema, non sono opinioni, ne' atti di fede. Quindi non rischio di fare disinformazione.
D3stroyer
07-11-2007, 17:46
yorkeiser gli amici a volte sparano tante cose.
Le mie tesi posso argomentarle tranquillamente visto che derivano da testimonianze di un manager Microsoft con cui lavoro quotidianamente... magari ne saprà qualcosa in più persino di te :) vai, spara!
edit - scusate, non avevo letto l'evolversi della discussione :asd:
beh che dire, vi aspettavate altro che fuffa da uno che va matto per le assurdità visto che tiene Holly e Benji in avatar? :D
o vogliamo discutere circa le assurdità di Holly e Benji? :asd:
variabilepippo
07-11-2007, 17:52
E tu cosa ne sai che si tratta di disinformazione? Sei forse nel management di Microsoft?
Visto che sei a diretto contatto con il management Microsoft potresti chiedere perché per creare .NET abbiano operato un brain drain (http://www.news.com/2100-1023-279561.html?legacy=cnet) di ben 34 progettisti chiave di Borland (tra i quali Anders Hejlsberg e Danny Thorpe) e non di quelli di Sun, come sarebbe stato ovvio visto che l'obiettivo era "copiare Java"? :)
È da molto che mi porto dietro questo dubbio...
Visto che sei a diretto contatto con il management Microsoft potresti chiedere perché per creare .NET abbiano operato un brain drain (http://www.news.com/2100-1023-279561.html?legacy=cnet) di ben 34 progettisti chiave di Borland (tra i quali Anders Hejlsberg e Danny Thorpe) e non di quelli di Sun, come sarebbe stato ovvio visto che l'obiettivo era "copiare Java"? :) esatto, infatti io avrei detto più che altro che volevano "copiare Delphi"; è stata una delle mie prime impressioni quando ho aperto per la prima volta Visual C# :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.