
Gabriel Brooks
0
3367
728
C-programmeringssprog er mor til alle moderne programmeringssprog 10 Programmeringssprog, du sandsynligvis aldrig har hørt af 10 programmeringssprog, du sandsynligvis aldrig har hørt om. Der er nogle meget underlige og bisarre programmeringssprog, der har vendt logik på hovedet og stadig har formået at forblive tro mod videnskaben om kommunikation med en computer. Du skal til…. Næsten hvert sprog, der bruges i dag, indeholder flere funktioner, der først blev vist på C-sproget. Det er blevet udbredt brugt til at skrive software til de mindste integrerede mikrocomputere til de største mainframes og supercomputere.
Ansøgninger skrevet i C spænder i en lang række fra systemsoftware, desktop software, enterprise software, databaser osv. Du ville gøre det meget godt at starte en programmeringskarriere 10 Computerprogrammeringsjob der er i efterspørgsel lige nu 10 Computerprogrammering job der er i Efterspørgsel lige nu Da landing af et programmeringsopgave kan være hårdt i det aktuelle landskab, skal du overveje at fokusere på en af følgende koncentrationer for at forbedre dine chancer for succes. med kendskab til det grundlæggende i C.
En kort historie om C
Udviklingen af C-sproget er meget tæt forbundet med Unix. Det blev udviklet omkring 1972 med flere tilføjelser foretaget i senere år.
Før C blev udviklet, blev Unix-operativsystemet udviklet til PDP-7-computeren ved hjælp af dets monteringssprog. Senere blev der bygget en kompilator til C på denne platform, igen ved hjælp af monteringssprog. På dette tidspunkt blev C designet til at lette udviklingen af selve Unix. Ved hjælp af denne kompilator blev Unix omskrevet fuldstændigt i C til PDP-11-computeren. Og igen blev C-sprogkompilatoren omskrevet i C (selvfølgelig hjulpet af det fremragende lex og yacc værktøjer), hvorved C / Unix Bootstrapping-processen afsluttes.
Hovedårsagen til, at Unix blev omskrevet i C, var for bærbarhed. Siden monteringssprog til forskellige CPU-arkitekturer En kort guide til den fantastiske AMD Threadripper CPU En kort guide til den fantastiske AMD Threadripper CPU AMD var i CPU-vildmarken i flere år, men er tilbage med et massivt smell. AMD Threadripper er en af de mest kraftfulde forbruger-CPU'er på markedet, men er det rigtigt for dig? er forskellige, ville det at have været en betydelig indsats at transportere Unix OS til hvert andet. Ved at udvikle en systemsprog såsom C og omskrivning af Unix OS i C blev denne indsats reduceret med flere størrelsesordrer.
Når sproget blev udviklet, blev det erkendt, at det kunne bruges til at skrive meget mere end systemsoftware. Og dermed begyndte C at blive brugt til skrivning af software, f.eks. Filservere, databaseservere, netværksstakke, desktop-software (og senere) webservere Sådan drejes en Android-enhed til en webserver Sådan drejes en Android-enhed til en web Server Vil du være vært for et simpelt websted uden en dyre hostingplan? Sådan hostes et websted på din Android-telefon eller -tablet. , etc.
I 1978 udgav Brian Kernighan og Dennis Ritchie bogen C-programmeringssprog. Denne bog tjente som en uformel C Sprogspecifikation i mange år indtil 1989, da C formelt blev standardiseret af ANSI. Den seneste version af C er C11, der blev offentliggjort i 2011.
Lad os nu se på nogle funktioner i C, der gør det unikt.
C vs C ++: Er de beslægtede?
Efterhånden som mere kompleks software blev udviklet i C, blev det erkendt, at objektorienterede koncepter, herunder indkapsling, polymorfisme osv., Ville hjælpe med at styre kompleksiteten. Dette førte til udviklingen af C ++ som et supersæt af C.
C ++ blev bygget ved at tilføje visse funktioner til at skrive objektorienteret software, samtidig med at kompatibilitet med C opretholdes. Det blev udviklet med ideen om progressiv forbedring - foretage kompatible ændringer til C-sprog, så C- og C ++ -moduler kan kombineres i det samme program og kompileres med den samme compiler. Dette gjorde det muligt at genbruge ældre C-baserede moduler med minimale ændringer i et større program skrevet ved hjælp af objektorienterede koncepter.
Et C-program kan i teorien udarbejdes af en C ++ -kompiler uden at kræve ændringer. I praksis resulterer imidlertid strengere typekontrol, der håndhæves af C ++, i fejl, hvilket kræver nogle ændringer af koden.
Lille antal nøgleord
C-sproget har været et lille sprog på trods af dets magt. Dette skyldes, at det kun erklærer 32 ord som nøgleord med en bestemt betydning. I modsætning hertil erklærer C ++ 82 nøgleord, java har 50 reserverede nøgleord, og javascript har 63. Og COBOL erklærer over 357 nøgleord. Forestil dig hovedpinen ved at skulle huske og sidestykke et så stort antal nøgleord!
Ingen eksplicit strengtype
I modsætning til de fleste andre moderne sprog For at oprette en Android-app skal du lære disse 7 programmeringssprog For at opbygge en Android-app, skal du lære disse 7 programmeringssprog Hvilket programmeringssprog er det rigtige til at oprette Android-apps? Det kommer ned på din programmeringshistorie, og hvilke sprog du føler dig bedst at bruge. Heldigvis har du muligheder. såsom Java, C ++ og JavaScript, giver C ikke en separat type til strenge. En streng betragtes som en række tegn afsluttet af en 0 tegn (betegnet “\ 0”). Længden på strengen er angivet ved en konvention: antallet af tegn indtil 0 tegn. Du kan frit ignorere det og tælle eller gemme forbi “\ 0”. Denne mangel på en ordentlig strengtype og konventionen har resulteret i utallige bugs gennem årene, kendt som bufferoverløb.
Faktisk var den første orm, der nogensinde ramte internettet, Morris Internet Worm, resultatet af en sådan bug i et vigtigt stykke systemsoftware, der kaldes den finger dæmon.
Her er et eksempel på en sådan fejl. Det illustrerer, hvor let det er at introducere sådanne fejl i et program. Programmet kompilerer fint, men går ned på grund af bufferoverløbet.
# include main () char * buf = "hej verden"; buf [12] = 'a'; printf ("% s \ n", buf);
I modsætning hertil giver de fleste moderne sprog en eksplicit strengetype, der gør sådanne shenanigans umulige. Selv C ++, som kompilerer ovenstående kode fint, giver en eksplicit std :: string type.
Markørmanipulation
En markør er en henvisning til et hukommelsessted. C er helt fleksibel, når det kommer til at læse og skrive vilkårlige hukommelsesplaceringer. Denne fleksibilitet kommer til en stor pris og har været årsagen til mange fejl i hele softwarespektret. Mest bemærkelsesværdigt og påvirker hele internettet inkluderer sådanne fejl i webservere, mailserver og ftp-servere. Selv i dag er der lejlighedsvis nyheder om fejl, der skyldes henvisning og opdatering af ugyldige hukommelsesplaceringer.
Den berygtede SSL HeartBleed sikkerhedsfejl opdaget i 2014 var resultatet af forkert styring af markørplaceringer og illustrerer den afgørende betydning af korrekt markørstyring i C.
Selv lejlighedsvis BSOD (“blå skærm af død”) fejl, der ses på Windows-systemer, er også sandsynligvis forårsaget af forkert pointerhåndtering.
Sprog andre end C ++ tillader ikke markørmanipulation og er derfor ikke sårbare over for denne klasse af bugs.
Arrays og pointers kan udskiftes
I C-array kan referencer og pointer udskiftes. Sproget tillader brug af en array-reference Sådan bruges en Java ArrayList Sådan bruges en Java ArrayList En Java-arraylist er en array med generel størrelse, der kan ændres til størrelse. Det giver de fleste af de faciliteter, der generelt forventes af matriser på andre sprog. I denne artikel lærer du at opsætte og bruge en arraylist. hvor en markør er påkrævet, og vice versa. Selvom dette muliggør kraftig manipulation, har det også resulteret i mange berygtede bugs.
Bred brug af “Definere” Makroer
Makroer bruges til at erstatte et navn med en anden udvidelse. De kan bruges til at ændre definitionen af et navn på kompileringstidspunktet eller til at erstatte en længere udvidelse med et simpelt navn. C-makrosystemet understøtter ifdef betingelser, der tillader betinget kompilering. Dette er en måde, hvorpå software porteres til forskellige arkitekturer og operativsystemer. Generiske navne defineres og erstattes på kompileringstidspunktet med forskellige udvidelser til forskellige forhold.
Det er også muligt at inkludere eller fjerne hele kodesektioner fra at blive kompileret ved hjælp af disse makroer. Har du et Razer-tastatur? Det er nemt at optage makroer med Synapse Har du et Razer-tastatur? Det er nemt at optage makroer med Synapse Hvis du bruger Razer-perifere enheder, men ikke drager fordel af Synapse-softwaren, går du glip af det. Her er, hvordan du bruger makroer effektivt, og hvordan de kan supercharge dit spil. .
De er forældede, men fås i C ++. Andre sprog som Java, JavaScript, python osv. Leverer ikke en lignende facilitet.
Moduler indkapslet i filer
C har ikke begrebet en klasse, og støtter derfor ikke tanken om separat offentlig, privat og beskyttet synlighed. Den eneste indkapsling leveret af C er filer. Funktioner, globale variabler og typer defineret i en kildefil er kun synlige i denne fil, medmindre navnene eksporteres. Nøgleordene statisk og extern leveres med det formål at kontrollere synligheden af variabel- og funktionsnavne.
I modsætning hertil understøtter andre sprog som C ++, Java og Python generelt klasser og indkapslingen, der følger med klasser.
Eksterne biblioteker
Bortset fra grundlæggende sprogkonstruktioner delegeres mere kompleks funktionalitet i C til eksterne biblioteker. Strengemanipulation, matematik, input-output, netværk osv. Leveres alle af eksterne biblioteker. I modsætning hertil kommer andre sprog normalt med et velassorteret bibliotek med moduler med selve sproget.
Og det dækker nogle grundlæggende egenskaber ved C-sproget, især dem, der adskiller det fra andre sprog.
Har du arbejdet med C? Kan du lide det, eller ville du have foretrukket at arbejde med et andet sprog? Forklar venligst i kommentarerne nedenfor.