Karakteristike C programiranja koje ga čine jedinstvenim (i boljim)

  • Brian Curtis
  • 0
  • 1260
  • 128
Oglas

Programski jezik C matični je od svih modernih programskih jezika. 10 Jezici programiranja koji vjerojatno niste čuli od 10 jezika programiranja koji vjerojatno niste čuli Postoje neki vrlo čudni i bizarni programski jezici koji su pretvorili logiku u glavu i još uvijek su uspjeli ostati istinito znanosti znanosti komunikacije s računalom. Ti ćeš… . Gotovo svaki jezik koji se danas koristi uključuje nekoliko značajki koje su se prvo pojavile na jeziku C. Naširoko se koristi za pisanje softvera za najmanje ugrađene mikroračunala u najveće mainframes i superračunala.

Aplikacije napisane u rasponu C u širokom rasponu od sistemskog softvera, softvera za radne površine, poslovnog softvera, baza podataka itd. Učinite to vrlo dobro za započinjanje karijere programiranja. Potražnja odmah Budući da je postavljanje programskog posla u trenutnom krajoliku teško, razmislite da se usredotočite na jednu od sljedećih koncentracija kako biste poboljšali svoje šanse za uspjeh. s poznavanjem osnova C.

Kratka povijest C

Razvoj jezika C vrlo je usko povezan s Unixom. Razvijen je oko 1972. godine, s više dodataka u kasnijim godinama.

Prije nego je razvijen C, Unix operativni sustav razvijen je za PDP-7 računalo koristeći svoj jezik rada. Kasnije je na ovoj platformi izgrađen prevodilac za C, opet koristeći sklopni jezik. U to je vrijeme C dizajniran tako da olakša razvoj samog Unixa. Pomoću ovog prevoditelja, Unix je u potpunosti prepravljen na C za PDP-11 računalo. I opet, prevodilac jezika C prepravljen je na C (u čemu su mu pomogli, naravno, izvrsni) zakon i yacc alate), čime je završen C / Unix Bootstrapping postupak.

Glavni razlog zašto je Unix prepisan na C-u bio je prenosivost. Budući da su jezici za sklapanje za različite CPU arhitekture Kratki vodič za fantastični AMD Threadripper CPU Kratki vodič za fantastični procesor AMD Threadripper CPD AMD bio je u pustinji CPU-a nekoliko godina, ali vraća se ogromnim praskom. AMD Threadripper jedan je od najmoćnijih potrošačkih CPU-a na tržištu, ali odgovara li vama? su različiti, prenošenje Unix OS-a svakom bi bio značajan napor. Razvojem a jezik sustava kao što je C i prepisivanje Unix OS-a u C, taj je napor smanjen za nekoliko reda veličine.

Jednom kada je jezik razvijen, prepoznato je da se njime moglo pisati mnogo više od softvera sustava. I tako se C počeo koristiti za pisanje softvera kao što su poslužitelji datoteka, poslužitelji baza podataka, mrežni stolovi, desktop softver (i noviji) web poslužitelji Kako Android uređaj pretvoriti u web poslužitelj Kako pretvoriti Android uređaj u web Server Želite ugostiti jednostavnu web stranicu bez skupog hosting plana? Evo kako ugostiti web mjesto na Android telefonu ili tabletu. itd.

1978. Brian Kernighan i Dennis Ritchie objavili su knjigu Programski jezik C. Ova knjiga poslužila je kao neformalna C Jezična specifikacija dugi niz godina sve do 1989. kada je C formalno normirao ANSI. Najnovija inačica C je C11, objavljena 2011.

Pogledajmo sada neke značajke C koja ga čine jedinstvenim.

C vs C ++: Jesu li povezani?

Kako je složeniji softver razvijen na C-u, bilo je prepoznato da će objektno orijentirani koncepti, uključujući inkapsulaciju, polimorfizam, itd. Pomoći u upravljanju složenošću. To dovodi do razvoja C ++ kao superpostave C.

C ++ je izgrađen dodavanjem određenih značajki za pisanje objektno orijentiranog softvera, zadržavajući kompatibilnost s C. Razvijen je sa idejom progresivno poboljšanje - čineći kompatibilne promjene na jeziku C, tako da se C i C ++ moduli mogu kombinirati u istom programu i sastaviti s istim prevoditeljem. To je omogućilo ponovnu uporabu starijih modula temeljenih na C uz minimalne promjene većeg programa napisanog korištenjem objektno orijentiranih koncepata.

Program C može, teoretski, sastaviti C ++ prevodilac bez potrebe za promjenama. U praksi, međutim, stroža provjera tipa forsirana C ++ rezultira pogreškama, zahtijevajući neke izmjene koda.

Mali broj ključnih riječi

Jezik C bio je malobrojni jezik usprkos svojoj moći. To je zato što deklarira samo 32 riječi kao ključne riječi s određenim značenjem. Suprotno tome, C ++ deklarira 82 ključne riječi, java ima 50 rezerviranih ključnih riječi, a javascript 63. A COBOL izjavljuje nevjerojatnih 357 ključnih riječi. Zamislite glavobolju što morate zapamtiti i zakoračiti tako veliki broj ključnih riječi!

Nema eksplicitne vrste niza

Za razliku od većine drugih modernih jezika Da biste napravili aplikaciju za Android, morate naučiti ovih 7 jezika programiranja da biste izgradili aplikaciju za Android, morate naučiti ovih 7 jezika programiranja Koji je programski jezik prikladan za stvaranje Androidovih aplikacija? To se svodi na vašu povijest programiranja i na kojim se jezicima osjećate najugodnije. Srećom, imate mogućnosti. kao što su Java, C ++ i JavaScript, C ne pruža zasebnu vrstu žice. Niz se smatra nizom znakova koji završava a 0 znaka (označeno “\ 0”). Duljina niza označena je konvencijom: broj znakova do 0 znaka. Možete ga ignorirati i prebrojati ili pohraniti prošlo “\ 0”. Taj nedostatak ispravnog niza vrste i konvencija rezultirali su nebrojenim pogreškama tijekom godina, poznatim kao punjenje pufera.

U stvari, prvi crv koji je ikad upadnuo na Internet, Morris Internet Worm, bio je rezultat takve pogreške u ključnom dijelu sistemskog softvera poznatom kao prst demona.

Evo primjera takve bube. To ilustrira koliko je lako uvesti takve bugove u program. Program sastavlja fino, ali se ruši zbog prepunjenosti međuspremnika.

# uključuju main () char * buf = "zdravo svijetu"; buf [12] = 'a'; printf ("% s \ n", buf);  

Suprotno tome, većina modernih jezika pruža eksplicitni niz stringova koji takve shenanigane čine nemogućim. Čak i C ++, koji komponira gornju šifru koda, pruža izričit std :: string tip.

Manipulacija pokazivača

Pokazivač je referenca na mjesto memorije. C je potpuno fleksibilan kad je riječ o čitanju i pisanju proizvoljnih memorijskih mjesta. Ova fleksibilnost dolazi uz veliku cijenu i uzrokovala je brojne pogreške u programskom spektru. Najistaknutiji i koji utječu na cijeli internet uključuju takve bugove na web poslužiteljima, poslužiteljima pošte i ftp poslužiteljima. I danas povremeno postoje vijesti o pogreškama uzrokovanim referenciranjem i ažuriranjem nevažećih memorijskih lokacija.

Zloglasni SSL krvarenje srca otkriven sigurnosni program u 2014. godini bio je rezultat nepravilnog upravljanja lokacijama pokazivača i ilustrira ključnu važnost pravilnog upravljanja pokazivačem u C.

Čak i povremeni BSOD (“plavi ekran smrti”) pogreške koje se vide u Windows sustavima vjerojatno su također uzrokovane nepravilnim rukovanjem pokazivačem.

Jezici koji nisu C ++ ne dopuštaju manipuliranje pokazivačem i stoga nisu ranjivi na ovu klasu grešaka.

Nizovi i pokazivači su međusobno zamjenjivi

U C polju se referentni i pokazivači zamjenjuju. Jezik dopušta upotrebu referentne matrice Kako koristiti Java ArrayList Kako koristiti Java ArrayList Java arrayist je opća namjenska veličina veličine. Pruža većinu objekata koji se obično očekuju od nizova na drugim jezicima. U ovom ćete članku naučiti kako postaviti i koristiti polje. tamo gdje je potreban pokazivač i obrnuto. Iako ovo omogućuje snažne manipulacije, to je rezultiralo i mnogim zloglasnim pogreškama.

Široka upotreba “definirati” Makro

Makronaredbe se koriste za zamjenu imena za različito proširenje. Oni se mogu koristiti za promjenu definicije imena u vrijeme sastavljanja ili zamjenu duljeg proširenja za jednostavno ime. C makro sustav podržava ifdef uvjetni uvjeti koji omogućuju uvjetno sastavljanje. Ovo je jedan način na koji se softver prenosi na različite arhitekture i operativne sustave. Generička imena definiraju se i zamjenjuju u vremenu sastavljanja s različitim proširenjima za različite uvjete.

Moguće je također uključiti ili ukloniti čitave dijelove koda sastaviti pomoću ovih makronaredbi Imate Razer tipkovnicu? Snimanje makronaredbi jednostavno je uz Synapse Imate li Razer tipkovnicu? Snimanje makronaredbi jednostavno je pomoću Synapse Ako koristite Razer periferne uređaje, ali ne iskorištavate softver Synapse, nedostaje vam. Evo kako učinkovito koristiti makronaredbe i kako mogu napuniti vaše igranje. .

Zastareli su, ali dostupni u C ++. Drugi jezici kao što su Java, JavaScript, python itd. Ne pružaju sličnu mogućnost.

Moduli kapsulirani u datoteke

C nema koncept klase i stoga ne podržava pojam zasebne javne, privatne i zaštićene vidljivosti. Jedina enkapsulacija koju pruža C je datoteka. Funkcije, globalne varijable i vrste definirani u izvornoj datoteci vidljivi su samo u toj datoteci osim ako se izvoze imena. Ključne riječi statički i vanjski Navedene su u svrhu kontrole vidljivosti imena varijabli i funkcija.

Nasuprot tome, drugi jezici kao što su C ++, Java i Python uglavnom podržavaju klase i enkapsulacija koja ide uz klase.

Vanjske knjižnice

Osim osnovnih konstrukcija jezika, složenije funkcionalnosti u C delegirane su vanjskim knjižnicama. Vanjske biblioteke osiguravaju manipulaciju nizovima, matematiku, ulaz-izlaz, umrežavanje itd. Suprotno tome, drugi jezici obično dolaze s dobro opskrbljenom bibliotekom modula sa samim jezikom.

A to pokriva neke osnovne karakteristike jezika C, posebno one koje ga izdvajaju od drugih jezika.

Jeste li radili s C-om? Je li vam se svidjelo ili biste radije radili s nekim drugim jezikom? Objasnite u komentarima u nastavku.




Još ne komentari

O modernoj tehnologiji, jednostavnoj i pristupačnoj.
Vaš vodič u svijetu moderne tehnologije. Naučite kako koristiti tehnologije i uređaje koji nas okružuju svaki dan i naučite kako otkriti zanimljivosti na Internetu.