Gå til innhold

Anbefalte innlegg

Hva er folks meninger om hvorfor C# (ikke) vil slå an? Dette nye C-språket laget av MS i et desperat forsøk på å få kontroll over enda mer av dataverdenen, vil folk i det hele tatt bruke dette, siden det allerede finnes både C++ og Java fra før? Siden MS har muligheten til å kontrollere dette språket fullt ut, vil de følge IEs gode eksempel, og la parseren tolerere uavsluttede klammer og parenteser, og ikke være så nøye med semikolon?

 

Hva er forresten forskjellene mellom C# og C++, sånn rent programmeringsteknisk?

 

--

Eudoxos

Lenke til kommentar
Videoannonse
Annonse

Noen programmeringstekniske forskjeller:

- C# har automatisk minnehåndtering (noe du må gjøre selv i C++)

- C# er fullt objektorientert (C++ er ikke det)

- C# har ikke pekere (C++ har pekere)

- ++

 

Andre ting:

- C# (og andre språk for .NET) kjører i en slags virtuell maskin slik at det i teorien kan kjøre på andre operativsystemer.

 

En ting: det hadde vært ille om C# tolererte manglende semikolon og slikt... et øyeblikk lurte jeg på om meldingen din var skrevet 1. april...

 

[ Denne Melding var redigert av: oyvind_b på 2002-04-02 08:15 ]

Lenke til kommentar
  • 4 uker senere...

Quote:


On 2002-05-02 02:56, Psy skrev:

C# er langt ifra 95% likt C++, du har klasser og namespaces, men det er jo nesten alt. Det minner mye mer om java enn C++.


Så er Java igjen basert på C++ .. Men C# er åpenbart ment å være en Javadødare, så det er ikke så rart om det ligner.

Lenke til kommentar

Code:

using System;
using System.IO;

public class App {
public static void Main() {
FileStream fs = null;
try {
fs = new FileStream(@"C:NotThere.txt", FileMode.Open);
}
catch (Exception e) {
Console.WriteLine(e.Message);
}
finally {
if (fs != null) fs.Close();
}
}
}

 

Litt c#, Bytt ut 'using' med 'import', 'IO' med 'io' og 'FileStream'' med 'FileReader' så skulle en jvm kjørt den der :smile:

 

Flere eks på

http://msdn.microsoft.com/theshow/Episode0...08/Richter.html

 

Eneste forskjellen jeg kan se er i navnene til standardklassene, samt at java er mer konsistent med upper/lower case i klassenavnene.

 

[ Denne Melding var redigert av: MailMan13 på 2002-05-03 12:30 ]

Lenke til kommentar
  • 1 måned senere...

C# virker på mange måter som et intressant språk. Ikke det at jeg har fått prøvd det enda, men kommer nok til å prøve det så fort jeg får tilgang (i løpet av sommeren en gang regner jeg med).

 

En av de store fordelene i mine øyne er det at MS med dette legger press på Sun som da må gjøre Java bedre, og konkuranse ender som regel i bedre produkter.

 

Coq Rouge

 

PS: Må bare få rette på en ting fra oyvind_b: c# er ikke fullt objektorientert. Pr idag er det vel bare SmallTalk som er 100% objektorientert da ALT er klasser (inkludert de standard typene int, float osv). Alle andre programeringsspråk implementerer disse som en del av programmeringsspråket og kompilatoren. Men skal du være FULLT OBJEKTORIENTERT, må du kunne lage dine egene implementasjoner av disse og kunne arve fra dem. Når så du sist denne linjen: "class test extends int"?

 

Men c# er som java fullt objektorientert i den betydningen at du må implemtentere alt eget som klasser. Men dette er som sagt flisespikking :wink:

Lenke til kommentar

Quote:


Den 2002-06-08 02:37, Coq Rouge skrev:


PS: Må bare få rette på en ting fra oyvind_b: c# er ikke fullt objektorientert. Pr idag er det vel bare SmallTalk som er 100% objektorientert da ALT er klasser (inkludert de standard typene int, float osv). Alle andre programeringsspråk implementerer disse som en del av programmeringsspråket og kompilatoren. Men skal du være FULLT OBJEKTORIENTERT, må du kunne lage dine egene implementasjoner av disse og kunne arve fra dem. Når så du sist denne linjen: "class test extends int"?



Int og float etc. fins som klasser i Java i alle fall, kan tenke meg at det er likt i C# siden de har lånt såpass mye annet fra Java. Klassen for int heter dog ikke Int, men Integer.

Lenke til kommentar
  • 2 uker senere...

Quote:


oyvind_b skrev (2002-04-02 08:14):

Noen programmeringstekniske forskjeller:

- C# har automatisk minnehåndtering (noe du må gjøre selv i C++)

- C# er fullt objektorientert (C++ er ikke det)

- C# har ikke pekere (C++ har pekere)

- ++



Hva gjør C# som språk mere objektorientert enn C++ ?

Lenke til kommentar

Hvorfor sier folk at java er "fullt objektorientert"??? Et språk som ikke støter operator overloading kan da ALDRI kalles objektorientert spør du meg. Java er ikke basert på C++, det er "basert på" (bah) C. Og så har dem smellt på new operatoren og muligheten til å skrive klasse.metode(parameter); istedet for metode(klasse,parameter);

 

Æ lik itjs java.

Lenke til kommentar

Quote:


Den 2002-06-19 11:14, iGGy skrev:


Hva gjør C# som språk mere objektorientert enn C++ ?


 

Argumentet for å kalle C# (eller egentlig .NET-plattformen) mer objektorientert enn C++ er:

 

- Alt er objekter, også primitive typer. (f.eks er "int" et alias for klassen "System.Integer32"). I Java finnes jo både int og klassen Integer. I C# (.NET) altså bare sistnevnte.

 

- Alle klasser arver fra klassen System.Object, akkurat som i Java.

 

Om dette er positivt er jo en annen sak. Blir nok enklere å programmere når man ikke trenger å tenke på pekere, primitive typer, osv... Men man mister jo både kontroll og forståelse.

 

LeD

Lenke til kommentar

Quote:


Den 2002-06-19 11:15, iGGy skrev:

Hvorfor sier folk at java er "fullt objektorientert"??? Et språk som ikke støter operator overloading kan da ALDRI kalles objektorientert spør du meg. Java er ikke basert på C++, det er "basert på" (bah) C. Og så har dem smellt på new operatoren og muligheten til å skrive klasse.metode(parameter); istedet for metode(klasse,parameter);


Æ lik itjs java.


Hva har operatoroverlasting med objekter å gjøre?? Altså jeg kan skjønne at det kan være komfortabelt med denne typen overlasting i forbindelse med klasser, men knapt nødvendig. Det er meget mulig at de har utelatt det for å gjøre ting mer ryddig (akkurat som multiple inheritance er utelatt).

Kan ikke se hvorfor Java ikke skal være et derivat av C++ for den saks skyld, C har jo ikke klasser eller inheritance/polymorfi f.eks.

 

[ Denne Melding var redigert av: A_N_K på 2002-06-19 17:38 ]

Lenke til kommentar
  • 2 uker senere...

Quote:


LeD skrev (2002-06-19 12:15):

Quote:


Den 2002-06-19 11:14, iGGy skrev:


Hva gjør C# som språk mere objektorientert enn C++ ?


 

Argumentet for å kalle C# (eller egentlig .NET-plattformen) mer objektorientert enn C++ er:

 

- Alt er objekter, også primitive typer. (f.eks er "int" et alias for klassen "System.Integer32"). I Java finnes jo både int og klassen Integer. I C# (.NET) altså bare sistnevnte.

 

- Alle klasser arver fra klassen System.Object, akkurat som i Java.

 

Om dette er positivt er jo en annen sak. Blir nok enklere å programmere når man ikke trenger å tenke på pekere, primitive typer, osv... Men man mister jo både kontroll og forståelse.

 

LeD

Ditt første poeng, "alt er objekter" er OK.

Ditt andre henviser til .net plattformen, og ikke C# som språk, som jeg spurte om. .net plattformen finnes også helt og holdent til C++ (tror jeg?!).

Lenke til kommentar

Quote:


A_N_K skrev (2002-06-19 15:29):

Quote:


Den 2002-06-19 11:15, iGGy skrev:

Hvorfor sier folk at java er "fullt objektorientert"??? Et språk som ikke støter operator overloading kan da ALDRI kalles objektorientert spør du meg. Java er ikke basert på C++, det er "basert på" (bah) C. Og så har dem smellt på new operatoren og muligheten til å skrive klasse.metode(parameter); istedet for metode(klasse,parameter);


Æ lik itjs java.


Hva har operatoroverlasting med objekter å gjøre?? Altså jeg kan skjønne at det kan være komfortabelt med denne typen overlasting i forbindelse med klasser, men knapt nødvendig. Det er meget mulig at de har utelatt det for å gjøre ting mer ryddig (akkurat som multiple inheritance er utelatt).

Kan ikke se hvorfor Java ikke skal være et derivat av C++ for den saks skyld, C har jo ikke klasser eller inheritance/polymorfi f.eks.

Op.overloading gjør at man f.eks kan behandle ting som "objekter" og utføre operasjoner på dem.. f.eks cout >> "blablabla"; eller "std::string n; n += "Tore";" type ting...

At multiple inheritance er utelatt gjør vel ikke ting så mye mer ryddig? Hvorfor var det uryddig? Java har jo "multiple inheritance" av interfaces... (interface er vel i prinsippet bare en abstract C++ klasse).

Lenke til kommentar

Quote:


Den 2002-07-01 11:01, iGGy skrev:


Ditt andre henviser til .net plattformen, og ikke C# som språk, som jeg spurte om. .net plattformen finnes også helt og holdent til C++ (tror jeg?!).


 

Riktig. Men C# er laget for .NET-plattformen, og gir liten mening for seg selv.

 

I f.eks. Java er språket og klassebiblioteket ikke adskilt på samme måten.

 

Det finnes flere språk til .NET-plattformen. Men .NET gir sterke begrensninger på språkene. Så det er stort sett bare syntaksen som er forskjellig. Objekter/typer som du spør om, er det .NET som "bestemmer", ikke C#.

 

Alle .NET-språk vil altså være "like objektorienterte".

 

LeD

 

[ Denne Melding var redigert av: LeD på 2002-07-01 11:46 ]

Lenke til kommentar

Quote:


At multiple inheritance er utelatt gjør vel ikke ting så mye mer ryddig? Hvorfor var det uryddig? Java har jo "multiple inheritance" av interfaces... (interface er vel i prinsippet bare en abstract C++ klasse).


 

Interfaces støttes også i .NET. De finnes jo nettopp fordi man ikke har klart å implementere multippel arv.

 

Hvor nyttig eller ryddig multippel arv er kan nok diskuteres. Men jeg ser ingen fordeler med å ikke støtte det. Skader ikke å masse muligheter som du ikke bruker. Er verre å ha for få...

 

LeD

Lenke til kommentar

Quote:


Den 2002-06-08 02:37, Coq Rouge skrev:

...

PS: Må bare få rette på en ting fra oyvind_b: c# er ikke fullt objektorientert. Pr idag er det vel bare SmallTalk som er 100% objektorientert da ALT er klasser (inkludert de standard typene int, float osv). Alle andre programeringsspråk implementerer disse som en del av programmeringsspråket og kompilatoren. Men skal du være FULLT OBJEKTORIENTERT, må du kunne lage dine egene implementasjoner av disse og kunne arve fra dem. Når så du sist denne linjen: "class test extends int"?


Men c# er som java fullt objektorientert i den betydningen at du må implemtentere alt eget som klasser. Men dette er som sagt flisespikking :wink:


 

Beklager, men du tar feil. Som du sikkert allerede har sett (et av innleggene til LeD) arver alle standard typene også fra object. Du hadde kunne lage en klasse som arver fra f.eks. int dersom int ikke hadde vært sealed.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...