bkf_94 Skrevet 31. mai 2009 Del Skrevet 31. mai 2009 (endret) 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 2. juni 2009 av bkf_94 Lenke til kommentar
jossy Skrevet 31. mai 2009 Del Skrevet 31. mai 2009 (endret) 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 31. mai 2009 av jossy Lenke til kommentar
JeffK Skrevet 31. mai 2009 Del Skrevet 31. mai 2009 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
Giddion Skrevet 31. mai 2009 Del Skrevet 31. mai 2009 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
GeirGrusom Skrevet 1. juni 2009 Del Skrevet 1. juni 2009 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
kernel Skrevet 2. juni 2009 Del Skrevet 2. juni 2009 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
zotbar1234 Skrevet 2. juni 2009 Del Skrevet 2. juni 2009 (...) så er alle system kall C API Nøyaktig hva betyr akkurat dette utsagnet? Lenke til kommentar
jossy Skrevet 2. juni 2009 Del Skrevet 2. juni 2009 (...) så er alle system kall C API Nøyaktig hva betyr akkurat dette utsagnet? Om man skal gjøre "kall" til systemet ("bygge" noe til OS'et/systemet) - tar man i bruk C Lenke til kommentar
kernel Skrevet 2. juni 2009 Del Skrevet 2. juni 2009 (...) så er alle system kall C API Nøyaktig hva betyr akkurat dette utsagnet? Ett system kall, er en funksjon som ikke kun eksekverer i CPU ring 1, men kjøres i CPU ring 0 (kernel space). http://www.google.no/url?sa=t&source=w...ef1GQaeaeg42SBA Lenke til kommentar
GeirGrusom Skrevet 3. juni 2009 Del Skrevet 3. juni 2009 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
kernel Skrevet 3. juni 2009 Del Skrevet 3. juni 2009 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
GeirGrusom Skrevet 3. juni 2009 Del Skrevet 3. juni 2009 Du har jo rett, jeg bare pirket litt (Windows er en hybrid kernel btw, men det heller ikke viktig) Lenke til kommentar
kernel Skrevet 3. juni 2009 Del Skrevet 3. juni 2009 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
BlueEAGLE Skrevet 3. juni 2009 Del Skrevet 3. juni 2009 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) Lenke til kommentar
JeffK Skrevet 3. juni 2009 Del Skrevet 3. juni 2009 (endret) Slik jeg har forstått det så er forskjellen detteC 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 3. juni 2009 av JeffK Lenke til kommentar
Jankee Skrevet 3. juni 2009 Del Skrevet 3. juni 2009 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
kernel Skrevet 3. juni 2009 Del Skrevet 3. juni 2009 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
GeirGrusom Skrevet 3. juni 2009 Del Skrevet 3. juni 2009 (endret) 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 3. juni 2009 av GeirGrusom Lenke til kommentar
jossy Skrevet 3. juni 2009 Del Skrevet 3. juni 2009 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 Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå