Gå til innhold

Anbefalte innlegg

Jeg har prøvd meg litt på noen programmeringsspråk før. har brukt vb6, c++ og vb.net. Har jo hørt at c++ skal være det kraftigste språket hittil, men ettersom c# har kommet ut, kommer c++ til å bli utdatert snart? c++ og c# er vel ganske forskjellige etter hva jeg har hørt. Kommer de fleste til å lære seg c# istedenfor c++ etterhvert? Noen som har erfaringer om disse språkene?

Lenke til kommentar
Videoannonse
Annonse

C# kan ikke konkurere med C++ fordi de er to forskjellige verktøy.

Som kjent tar det drepende lang tid å skrive et ordentlig Windows program i C++, mens i C# er dette like enkelt som i Visual Basic, MEN, C# MÅ HA .NET Framework installert på datamaskinen for å fungere, den kompilerer til noe kalt CLR (Common Language Runtime) som er en type Macro Assembly(ikke helt,) som kan bli kompilert på alle maskiner med Framework installert.

 

Men C++ er mye raskere, samt at du har mer eller mindre full kontroll over hva programmet ditt gjør, du må allokere minne selv, og passe på å frigjøre det, dette trenger du ikke uroe deg for i C#, men minne håndtering er på et høyere nivå (men du kan bruke pekere der faktisk)

samt at du har lav-nivå minnehåndtering i Marshall klassa.

 

og så videre, blablabla.

Lenke til kommentar

C# er vel mer .net basert(er ikke helt sikker), men jeg tror uansett ikke C++ kommer til å bli utdatert, det er jo som du sa ganske kraftig og vil vel da alltid trengs. Men C++ er jo ikke det kraftigste språket da.

 

Edit: Ja... GeirGrusom kan vel litt mer om det her en meg :p.

Endret av zirener
Lenke til kommentar

nå skal det jo nevnes at du i C++ kan kode .net (og dermed kode i en stil som er SVÆRT lik C# under .net). Jeg har et enkelt eksempel på dette hvis du er interessert.

 

Hva skal du med språket da? C# er nok ganske greit hvis du skal lage programmer basert på windows forms hvor hastigheten ikke er kritisk. Da sparer du masse tid og har masse muligheter. Dot Net runtime filer ligger jo i windows update sådet begynner å bli en del som har det.

 

Ellers kan jo ingen motsi at C++ er et greit allaround språk :)

Endret av invictus
Lenke til kommentar

.NET kode er like rask uansett hvilket språk den er skrevet i, det er ikke forskjell på C++ og C# for .NET etter koden er kompilert. Funksjonaliteten her ligger i .NET rammeverket og ikke i programmeringspråkene som kan brukes om hverandre som det passer seg.

 

Tradisjonell C++ er selvfølgelig _mye_ raskere (på såkalt mikroytelse) enn .NET CLR, men skal man lage transaksjonsbaserte systemer blir programmene fort svært store og kompliserte og kanskje til og med tregere hvis det ikke har vert en svært dyktig prgrammerer bak tastaturet.

 

Grovt sett kan man si det slik:

 

Transaksjonsbaserte systemer, bruk .NET eller J2EE

Beregningsintensive systemer, bruk C/C++

Lenke til kommentar

Transaksjonsbaserte systemer, bruk .NET eller J2EE

Beregningsintensive systemer, bruk C/C++

 

Kan stemme ganske bra... det er et hel..uh -heim å skrive windows (GUI i det hele tatt) i C++.

 

.NET kode er like rask uansett hvilket språk den er skrevet i, det er ikke forskjell på C++ og C# for .NET etter koden er kompilert.

 

Etter slik jeg har forstått det, stemmer ikke det helt... når du kompilerer .NET programmer vil CLR fortsatt bli i koden (kilde koden til programmet) slik at programmet bare kan flyttes til en Macintosh f.eks. og programmet vil bli kompilert på nytt til Macintosh istedet, siden dette medfører at kilde koden kan bli utsatt for © tyverier, følger det med et program som heter DOTFuscator som krypterer programmet, slik at du ikke kan få tak i CLR koden uten videre.

Lenke til kommentar

C# er C++ overlegen på (minst) ett aspekt: Produktiviteten. Alle språk som tilbyr automatisk minnehåndtering gir muligheten for å produsere mer på mindre tid (flere språk faller i denne kategorien: VB [ja faktisk!], lisp, Smalltalk, java og diverse scriptspråk - og alle språk som kjører managed code under dotNet). Årsaken til dette er at man ikke bruker tid på å allokere og, ikke minst, frigjøre minne - samt å sjekke om pekerne er "ute i skogen".

Misforstå meg ikke, jeg har ikke noe korstog mot C/C++, men hvert språk til sin tid (jeg ville f.eks. aldri kode en device-driver i C#).

 

Har personlig kastet C++ ut med badevannet. Regner med at net framework på sikt vil bli tilgjengelig på de fleste platformer. Hvis ikke kan jeg alltids ta det inn i varmen igjen.

 

C derimot er et fantastisk språk dersom man skal kode direkte mot hardware.

Endret av TAFT
Lenke til kommentar
C# er C++ overlegen på (minst) ett aspekt: Produktiviteten. Alle språk som tilbyr automatisk minnehåndtering gir muligheten for å produsere mer på mindre tid (flere språk faller i denne kategorien: VB [ja faktisk!], lisp, Smalltalk, java og diverse scriptspråk - og alle språk som kjører managed code under dotNet). Årsaken til dette er at man ikke bruker tid på å allokere og, ikke minst, frigjøre minne - samt å sjekke om pekerne er "ute i skogen".

Sorry hvis jeg dreper litt av illusjonene dine, men du kan (dessverre) ikke helt glemme minnet ditt selv om du driver med .net.

 

Driver du med DX.net-saker eller større objekter må du likevel være nøye med å fjerne de underveis... gc under .net funker ikke SÅ bra... ;)

Lenke til kommentar
Sorry hvis jeg dreper litt av illusjonene dine, men du kan (dessverre) ikke helt glemme minnet ditt selv om du driver med .net.

 

Driver du med DX.net-saker eller større objekter må du likevel være nøye med å fjerne de underveis... gc under .net funker ikke SÅ bra... ;)

Jeg snakker da selvsagt litt i generelle termer, men ja - du trenger strengt tatt ikke fjerne de. At GC ikke funker så bra (under 1.1 i hvert fall) er noe jeg ikke kjenner til (eller merket, men det kan jo være... :hmm:)

Uansett, det er god programmeringspraksis å spesifikt dispose ressursene når man har brukt dem (spesielt hvis man vet det er tunge objekter). Man må likevel ikke være så rigid på dette (som i bl.a. C++).

Følgende hentet fra How Microsoft Lost the API War (som snakker mye om det samme, men som for øvrig går seg vill i slutten av artikkelen).

Sidebar

Why does automatic memory management make you so much more productive? 1) Because you can write f(g(x)) without worrying about how to free the return value from g, which means you can use functions which return interesting complex data types and functions which transform interesting complex data types, in turn allowing you to work at a higher level of abstraction. 2) Because you don't have to spend any time writing code to free memory or tracking down memory leaks. 3) Because you don't have to carefully coordinate the exit points from your functions to make sure things are cleaned up properly.

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å
×
×
  • Opprett ny...