Kjennetegn ved C-programmering som gjør den unik (og bedre)
C-programmeringsspråket er mor til alle moderne programmeringsspråk 10 Programmeringsspråk du sikkert aldri har hørt om 10 programmeringsspråk du sikkert aldri har hørt om Det er noen veldig rare og bisarre programmeringsspråk som har slått logikk på hodet og fortsatt har klart å holde seg sant til vitenskapen om kommunikasjon med en datamaskin. Du skal ... Les mer. Nesten alle språkene som brukes i dag, inneholder flere funksjoner som først ble vist på C-språket. Det har vært mye brukt til å skrive programvare for de minste innebygde mikrodatamaskinene til de største hovedrammer og superdatamaskiner.
Programmer skrevet i C-område i et bredt spekter fra systemprogramvare, stasjonær programvare, bedriftsprogramvare, databaser, etc. Du vil gjøre det veldig bra å starte en programmerings karriere 10 Dataprogrammeringsjobber som er i etterspørselen akkurat nå 10 Dataprogrammeringsjobber som er i Etterspørselen akkurat nå Siden landing av en programmeringsjobb kan være tøff i dagens landskap, bør du vurdere å fokusere på en av følgende konsentrasjoner for å forbedre sjansene for suksess. Les mer med kunnskap om grunnleggende om C.
En kort historie om C
Utviklingen av C-språket er svært nært forbundet med Unix. Den ble utviklet rundt 1972, med flere tillegg i senere år.
Før C ble utviklet, ble Unix operativsystemet utviklet for PDP-7-datamaskinen ved hjelp av sitt monteringsspråk. Senere ble en kompilator for C bygget på denne plattformen, igjen ved å bruke monteringsspråk. På denne tiden ble C designet for å lette utviklingen av Unix selv. Ved hjelp av denne kompilatoren ble Unix omskrevet helt i C for PDP-11-datamaskinen. Og igjen, C-språket kompilatoren ble omskrevet i C (hjalp, selvfølgelig, av den utmerkede lex og yacc verktøy), og dermed fullfører C / Unix Bootstrapping-prosessen.
Hovedårsaken til at Unix ble omskrevet i C var for portabilitet. Siden monteringsspråk for forskjellige CPU-arkitekturer En kort guide til den fantastiske AMD-tråkkripper-CPU En kort guide til den fantastiske AMD-tråkkripper-CPU AMD var i CPU-villmarken i flere år, men er tilbake med et massivt bang. AMD Threadripper er en av de kraftigste forbrukerprosessene på markedet, men er det riktig for deg? Les mer er annerledes, og portene til Unix OS til hver ville ha vært en betydelig innsats. Ved å utvikle en system språk slik som C, og omskrivning av Unix OS i C, ble denne innsatsen redusert med flere størrelsesordener.
Når språket ble utviklet, ble det anerkjent at det kunne brukes til å skrive mye mer enn systemprogramvare. Og dermed begynte C å bli brukt til å skrive programvare som filservere, databaseservere, nettverksstabler, stasjonær programvare, (og senere) webservere. Slik bytter du en Android-enhet til en webserver Slik bytter du en Android-enhet til en web Server Verten din egen webserver enkelt og billig med en Android-smarttelefon eller nettbrett. Les mer, osv.
I 1978 publiserte Brian Kernighan og Dennis Ritchie boken C-programmeringsspråket. Denne boken fungerte som en uformell C Spesifikasjon i mange år fram til 1989 da C ble formelt standardisert av ANSI. Den nyeste versjonen av C er C11, publisert i 2011.
La oss nå se på noen funksjoner i C som gjør den unik.
C vs C ++: er de relatert?
Etter hvert som mer komplisert programvare ble utviklet i C, ble det anerkjent at objektorienterte begreper inkludert innkapsling, polymorfisme osv. Ville bidra til å håndtere kompleksiteten. Dette førte til utviklingen av C ++ som en supersett av C.
C ++ ble bygd ved å legge til bestemte funksjoner for å skrive objektorientert programvare, samtidig som kompatibiliteten med C. ble utviklet med ideen om progressiv forbedring - gjør kompatible endringer i C-språk slik at C og C + + moduler kan kombineres i samme program og kompileres med samme kompilator. Dette gjorde det mulig for eldre C-baserte moduler å bli brukt med mindre endringer i et større program som er skrevet ved hjelp av objektorienterte konsepter.
Et C-program kan i teorien kompileres av en C ++-kompilator uten å kreve noen endringer. I praksis, men strengere type kontroll håndhevet av C + + resulterer i feil, noe som krever noen endringer i koden.
Liten antall søkeord
C-språket har vært et lite språk til tross for dets kraft. Dette skyldes at det kun er 32 ord som nøkkelord med en bestemt betydning. I motsetning C + + erklærer 82 søkeord, java har 50 reserverte søkeord og javascript har 63. Og COBOL erklærer et stort antall 357 søkeord. Tenk på hodepine av å måtte huske og sidestep så mange søkeord!
Ingen eksplisitt strengtype
I motsetning til de fleste andre moderne språk å bygge en Android-app trenger du å lære disse 7 programmeringsspråkene å bygge en Android-app, må du lære disse 7 programmeringsspråk hvilke programmeringsspråk er riktig for å lage Android-apper? Det kommer ned til programmeringshistorikken din og hvilke språk du føler deg mest komfortabel med å bruke. Heldigvis har du muligheter. Les mer som Java, C ++ og JavaScript, C gir ikke en egen type for strenge. En streng anses som en rekke tegn som er avsluttet av a 0 tegn (angitt “\ 0”). Lengden på strengen er betegnet av en konvensjon: antall tegn til 0 tegn. Du er fri til å ignorere den og telle eller lagre forbi “\ 0”. Denne mangelen på en riktig streng type og konvensjonen har resultert i utallige feil i løpet av årene, kjent som bufferoverløp.
Faktisk var den første ormen som noen gang slo på internett, Morris Internet Worm, resultatet av en slik feil i et viktig stykke systemprogramvare kjent som fingerdamon.
Her er et eksempel på en slik feil. Det illustrerer hvor enkelt det er å introdusere slike feil i et program. Programmet kompilerer fint, men krasjer på grunn av bufferoverløpet.
# inkluderer main () char * buf = "hei verden"; buf [12] = 'a'; printf ("% s \ n", buf);
Derimot gir de fleste moderne språk en eksplisitt strengtype som gjør slike shenanigans umulige. Selv C + +, som kompilerer koden ovenfor, gir en eksplisitt std :: string type.
Pointer Manipulation
En peker er en referanse til et minnessted. C er helt fleksibel når det gjelder lesing og skriving av vilkårlig minneplassering. Denne fleksibiliteten kommer til en god pris, og har vært årsaken til mange feil i programvarespekteret. Mest bemerkelsesverdige og påvirker hele internett inkluderer slike feil i webservere, postservere og ftp-servere. Selv i dag er det noen ganger nyheter om feil som skyldes referanse og oppdatering av ugyldige minnesteder.
Den beryktede SSL HeartBleed sikkerhetsfeil oppdaget i 2014 var et resultat av feil styring av pekerlokaliseringen og illustrerer den avgjørende betydningen av riktig pointerhåndtering i C.
Selv sporadisk BSOD (“blå skjerm av død”) Feil som er sett på Windows-systemer skyldes også sannsynligvis feilaktig håndtering av peker.
Språk som ikke er C + + tillater ikke pointermanipulering og er dermed ikke sårbare for denne klassen av feil.
Arrayer og pekere er utskiftbare
I C-serien er referanser og pekere utskiftbare. Språket tillater bruk av en arrayreferanse Slik bruker du en Java ArrayList Slik bruker du en Java ArrayList En Java arraylist er en generell resizeable array. Det gir de fleste av fasilitetene som generelt forventes av arrays på andre språk. I denne artikkelen lærer du å sette opp og bruke en arraylist. Les mer der en peker er nødvendig, og omvendt. Selv om dette muliggjør kraftig manipulasjon, har det også resultert i mange beryktede feil.
Bred bruk av “definere” makroer
Makroer brukes til å erstatte et navn for en annen utvidelse. De kan brukes til å endre definisjonen av et navn på kompileringstid, eller å erstatte en lengre utvidelse for et enkelt navn. C-makrosystemet støtter ifdef conditionals som tillater betinget kompilering. Dette er en måte programvare er portet til forskjellige arkitekturer og operativsystemer. Generiske navn defineres og erstattes på kompileringstid med forskjellige utvidelser for forskjellige forhold.
Det er også mulig å inkludere eller eliminere hele deler av koden fra å bli kompilert ved hjelp av disse makroene Har et Razer-tastatur? Opptak Makroer er lett med Synapse Har et Razer tastatur? Opptaksmakroer er enkle med synaps Hvis du bruker Razer-periferiutstyr, men ikke utnytter Synapse-programvaren, går du glipp av det. Slik bruker du makroer effektivt og hvordan de kan overbelaste spillingen din. Les mer .
De er deprecated, men er tilgjengelige i C ++. Andre språk som Java, JavaScript, Python, osv. Gir ikke noe lignende anlegg.
Moduler innkapslet i filer
C har ikke begrepet en klasse, og støtter derfor ikke begrepet separat, privat og beskyttet synlighet. Den eneste innkapslingen som er gitt av C, er den av filer. Funksjoner, globale variabler og typer definert i en kildefil, er bare synlige i den filen, med mindre navnene eksporteres. Søkeordene statisk og extern er gitt for å kontrollere synligheten av variabel- og funksjonsnavn.
I motsetning til dette støtter andre språk som C ++, Java og Python generelt klasser, og innkapslingen som går med klasser.
Eksterne biblioteker
Annet enn grunnleggende språkkonstruksjoner, blir mer komplisert funksjonalitet i C delegert til eksterne biblioteker. Stringmanipulering, matte, input-output, nettverk, etc er alle gitt av eksterne biblioteker. I motsetning til dette kommer andre språk vanligvis med et velfylt bibliotek med moduler med selve språket.
Og det dekker noen grunnleggende egenskaper til C-språket, spesielt de som skiller det fra andre språk.
Har du jobbet med C? Liker du det, eller har du foretrukket å jobbe med noe annet språk? Vennligst forklar i kommentarene nedenfor.
Utforsk mer om: Programmering.