Gå til innhold

Hva er forskjellen på C, C# og C++?


Anbefalte innlegg

Er det så stor forskjell mellom C, C# og C++?

 

Hvilken er vanskeligst og hvilken er enklest å lære?

 

Hva kan man bruke de til?

 

Ville foretrukket om det siste spørsmålet ble besvart på denne måten:

 

C: Hva det brukes til

 

C#: Hva det brukes til

 

C++: Hva det brukes til

 

Takker på forhånd fo alle svar :)

Endret av bkf_94
Lenke til kommentar
Videoannonse
Annonse
Er det så stor forskjell mellom C, C# og C++?

 

Hvilken er vanskeligst og hvilken er enklest å lære?

 

Hva kan man bruke de til?

 

Ville foretrukket om det siste spørsmålet ble besvart på denne måten:

 

C: Hva det brukes til

 

C#: Hva det brukes til

 

C++: Hva det brukes til

 

Takker på forhånd fo alle svar :)

 

Både C og C++ er vanskeligere å lære enn C#.

 

C: Brukes til systemprogrammering.. Ikke objektorientert og mye kode du må gjør på egenhånd som gjøres bak kulissene i språk som Python, Java, C# og Ruby.

C++: Brukes også til systemprogrammering, men C++ er objektorientert og er oftere brukt enn C til programming av applikasjoner (nå i nyere tid, C er eldre enn C++)

C#: Fungerer kun til .net rammeverket, og .net fungerer kun på windows. Det finnes et prosjekt som heter Mono som gjør det mulig at C# kan brukes til linux og mac, men Mono henger langt bak .net som er laget av microsoft.

 

Det er ikke slik at man må lære C før C++ (mange anbefaler å ikke gjøre det - man må avvende mange gamle vaner og vende seg til nye). C++ er heller ikke nødvendig før man lærer seg C#.

Endret av jossy
Lenke til kommentar

Jeg er ikke helt enig i at C språket i seg selv er vanskeligere å lære enn C#. C er et "lite" språk(se bare på størelsen på standardboka The C Programming Language).

 

Noe som derimot kan være vanskeligere i C, er å forholde seg til andres kode. Siden C ikke er objektorientert må man i større grad forholde seg til detaljene i den andres implementasjon.

 

En av de største forskjellene mellom C/C++ og C#, er at C/C++ ikke har garbare collection(dvs. man må eksplisitt slette alt dynamisk allokert minne når man er ferdig med det).

Lenke til kommentar
Er det så stor forskjell mellom C, C# og C++?

<snip>

Hvilken er vanskeligst og hvilken er enklest å lære?

<snip>

 

Det er jo vanskelig å si hva som er enklest å lære av et språk.

Tenker du på å lære hele språket eller bare det mest basic.

 

Jeg vil si at C er mye enklere å lære enn C# og C++ grunnet at det er det enkleste og har minst funksjoner og muligheter. Hvis man følger den tankegangen vil jeg tro at man kan argumentere for at C++ er enklere enn C#.

 

C# kan nok være enklere å føle at man behersker siden jeg vil mene at den grunnleggende kunnskapen som trengs er mindre enn i c og c++.

 

Ha en ellers solfylt kveld.

Lenke til kommentar

Jeg kommer vel bare til å gjenta mye av det som allerede er sagt, men her er min mening

Er det så stor forskjell mellom C, C# og C++?

 

Hvilken er vanskeligst og hvilken er enklest å lære?

 

Hva kan man bruke de til?

 

Ville foretrukket om det siste spørsmålet ble besvart på denne måten:

 

C: Hva det brukes til

 

C#: Hva det brukes til

 

C++: Hva det brukes til

 

Takker på forhånd fo alle svar :)

 

C:

Dette språket er nok det enkleste å lære, men også det språket som krever mest kode for å gjøre ting mange anser som enkelt i andre språk. Mangel på objektorientering gjør kode skrevet i C vanskelig å vedlikeholde. C er også det språket her som jevnt over har best ytelse.

C brukes primært til å skrive operativsystem, enkle console programmer og styringsprogrammer for enkel elektronikk (som mobiltelefoner, MP3 spillere, eller mer primitive komponenter)

C er blitt lingua franca innen programmeringsspråk av ukjente årsaker, det er det språket det er forventet at alle programmerere kan.

Ofte skrives eksempelkode og referanseimplementasjoner i C.

 

C++:

Dette spårket er derivert fra C og *ofte* kan C programmer kompileres rett i C++ uten store endringer (noen må dog gjøres, C++ er litt strengere enn C)

C++ er objektorientert, og har mange funksjoner som gjør enkle programmer i det minste litt enklere å skrive i C++. Det finnes biblioteker for GUI som gjør GUI bygging *nesten* trivielt, og templates og overloading gjør at mindre kode kan dekke et større område.

Men minnebehandling i C++ er nesten like komplisert i C++ som i C og det er derfor blitt laget masse standardklasser for dette for å hindre at programmereren lager minnelekasjer.

 

C#:

Dette språket er også¨objektorientert, men i motsetning til C++ er det rent 100% objektorientert. Alle elementer i koden kan ansees som et objekt (C# bruker autoboxing)

C# er temmelig likt Java i syntax, men med en del flere features.

Språket gjør GUI bygging til en triviell oppgave. Språket har derimot ikke multiple inheritence og har samme løsning på problemet som Java - interfaces, dog C# bruker interfaces til en mye mindre grad enn Java (for eksempel bruker C# delegates(pointer-to-member i C++) til event handling, og ikke interfaces)

C# bruker garbage collection, som gjør at implisitt allokert minne vil bli automatisk behandlet uten at programmereren trenger å tenke på det. Minne som er eksplisitt allokert gjennom unmanaged funksjoner (som Marshal.AllocHGlobal) må dog frigjøres, men dette brukes kun i 1/1000000 tilfeller, og da som regel i sammenheng med Windows API funksjoner.

 

C# har forsvinnende lite til felles med C eller C++, det har lignende syntaks og det er mer eller mindre der det stopper.

Lenke til kommentar
Er det så stor forskjell mellom C, C# og C++?

 

Ja

 

Hvilken er vanskeligst og hvilken er enklest å lære?

 

C++ vanskeligst, C lettest.

 

C: Hva det brukes til

 

C brukes til embedded, system, kompilator og applikasjons programmering. Hvis man befinner seg på UNIX/Linux, så er alle system kall C API, OS'et skrevet i C, og drivere skrevet i C.

Lenke til kommentar

Vanlige programmer kjører i ring 2 eller 3, kernel og drivere kjører i ring 0 eller 1 :)

Grunnen er at normalt sett har kun programmer i ring 0 og 1 direkte tilgang til hardware I/O. Programmer som forsøker hardware I/O i ring 2 eller 3 får prosessoren til å kjøre et #GP exception.

[ref: Intel 64 and IA-32 Architecture Software Developers Manual, s. 13-5]

 

Anyways, et systemkall er et kall til en operativsystemfunksjon.

Oftest bruker disse C ABI-et fordi nærmest alle programmeringsspråk er istand til å bruke dem.

Lenke til kommentar
Vanlige programmer kjører i ring 2 eller 3, kernel og drivere kjører i ring 0 eller 1 :)

Grunnen er at normalt sett har kun programmer i ring 0 og 1 direkte tilgang til hardware I/O. Programmer som forsøker hardware I/O i ring 2 eller 3 får prosessoren til å kjøre et #GP exception.

[ref: Intel 64 and IA-32 Architecture Software Developers Manual, s. 13-5]

 

Ikke alle CPU'er kan partisjonere virituelt minne i 4 st.k. ringer, slik som Intel CPU'er har støtte for.

 

Etter det jeg husker for x86, så benytter både Windows og Linux CPU Ring 3 for applikasjoner (user space), mens kjernen og drivere (kernel space) kjører i Ring 0.

 

Både Windows og Linux er eksempel på monolitiske OS, hvor kjernen og drivere kjører i samme adresseområde, en mer robust modell (når CPU har 4 ringer) ville være å plassere drivere i Ring 1, slik at bluescreen (eller kernel panic) unngås ved driver bugs.

Lenke til kommentar
Windows er en hybrid kernel

 

Vel, Microsoft kaller det for hybrid kernel, men dette begrepet finner jeg ikke i Modern Operating Systems av Tanenbaum. :)

 

As to the whole ‘hybrid kernel’ thing — it’s just marketing. It’s ‘oh, those microkernels had good PR, how can we try to get good PR for our working kernel? Oh, I know, let’s use a cool name and try to imply that it has all the PR advantages that that other system has’

-Linus

 

Da Win2K kom, var det det største OS'et m.h.p. bloat, 29M kodelinjer! Til sammenligning hadde Solaris 2M kodelinjer, og Linux rundt 1M. Windows er alt annet enn en micro kernel, og monolitisk kernel er beste beskrivelse etter min mening.

Lenke til kommentar
Slik jeg har forstått det så er forskjellen dette

C er prosessorientert

C++ er mer objektorientert (C-kode er (som oftest) gyldig C++-kode)

C# er helt objektorientert. (C++-kode kan være gyldig C#-kode)

C# hører ikke sammen med C/C++. Jeg tror ikke det er mulig å lage et C++-program som er et gyldig C#-program. Jeg tror det er mulig å lage et C#-program som er et gyldt Java-progam.

Endret av JeffK
Lenke til kommentar

C# koden som kjører i JVM er nok ikkje mulig då bibliotekene til java og C# ikkje er dei same eller er kompatible navnemessig.

C# bruker .Net-rammeverket og dermed låst til windows (og porten Mono) mens java kjører sine bibliotek

berre utskrift til kommandolinje vil gjere koden ukompatibel.

 

C# : System.Console.WriteLine("Hello World!");

Java : System.out.println("Hello Wolrd!");

Lenke til kommentar

Computer Science: The March of Progress

 

1980: C

printf("%10.2f", x);

 

1988: C++

cout << setw(10) << setprecision(2) << showpoint << x;

 

1996: Java

java.text.NumberFormat formatter = java.text.NumberFormat.getNumberInstance(); formatter.setMinimumFractionDigits(2); formatter.setMaximumFractionDigits(2); String s = formatter.format(x); for (int i = s.length(); i < 10; i++) System.out.print(' '); System.out.print(s);

 

2004: Java

System.out.printf("%10.2f", x);

 

2008: Scala and Groovy

printf("%10.2f", x)

 

Legg merke til manglende semikolon i 2008. Massiv framgang!!!

Lenke til kommentar
Jeg tror det er mulig å lage et C#-program som er et gyldt Java-progam.

 

Tja, jo, det er nok mulig, men det programmer gjør neppe noe fornuftig, C# låner mye mer fra C++ enn det java gjør når det gjelder syntaks. Ofte er det andre løsningner på problemer i C# enn i Java (C# lager langt mindre bloat-kode enn det java gjør, blandt annet ved å støtte lambda expressions og delegates)

 

Da Win2K kom, var det det største OS'et m.h.p. bloat, 29M kodelinjer! Til sammenligning hadde Solaris 2M kodelinjer, og Linux rundt 1M. Windows er alt annet enn en micro kernel, og monolitisk kernel er beste beskrivelse etter min mening.

Du har kanskje rett, men jeg vet ikke nok om Windows sin kernel at jeg kan si imot wikipedia på dette. Det går vel mer på design, enn på størrelse?

Og hvordan vet du hvor mange kodelinjer Windows har?

Endret av GeirGrusom
Lenke til kommentar
Computer Science: The March of Progress

 

1980: C

printf("%10.2f", x);

 

1988: C++

cout << setw(10) << setprecision(2) << showpoint << x;

 

1996: Java

java.text.NumberFormat formatter = java.text.NumberFormat.getNumberInstance(); formatter.setMinimumFractionDigits(2); formatter.setMaximumFractionDigits(2); String s = formatter.format(x); for (int i = s.length(); i < 10; i++) System.out.print(' '); System.out.print(s);

 

2004: Java

System.out.printf("%10.2f", x);

 

2008: Scala and Groovy

printf("%10.2f", x)

 

Legg merke til manglende semikolon i 2008. Massiv framgang!!!

 

haha genialt :D

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...