
Brian Curtis
0
2537
161
Programovací jazyk C je matkou všech moderních programovacích jazyků. 10 Programovacích jazyků, které jste pravděpodobně nikdy neslyšeli Z 10 programovacích jazyků, které jste pravděpodobně nikdy neslyšeli Existuje několik velmi zvláštních a bizarních programovacích jazyků, které otočily logiku na hlavu a stále se jim podařilo zůstat věrný vědě o komunikaci s počítačem. Budeš… . Téměř každý používaný jazyk dnes obsahuje několik funkcí, které se poprvé objevily v jazyce C. To bylo široce používáno psát software pro nejmenší vestavěné mikropočítače k největším sálovým počítačům a superpočítačům.
Aplikace napsané v jazyce C se pohybují v široké škále od systémového softwaru, stolního softwaru, podnikového softwaru, databází atd. Velmi dobře byste mohli zahájit programovací kariéru. Nyní poptávka Vzhledem k tomu, že přistání na programování může být v současné situaci obtížné, zvažte soustředění na jednu z následujících koncentrací, abyste zvýšili své šance na úspěch. se znalostí základů C.
Stručná historie C
Vývoj jazyka C je velmi úzce spojen s Unixem. Byla vyvinuta kolem roku 1972, s dalšími přírůstky v pozdějších letech.
Předtím, než byl vyvinut C, byl pro počítač PDP-7 vyvinut operační systém Unix pomocí jeho jazyka sestavení. Později byl na této platformě postaven kompilátor pro C, opět pomocí jazyka sestavení. V této době byl C navržen tak, aby usnadnil vývoj samotného Unixu. Pomocí tohoto kompilátoru byl Unix přepsán zcela do C pro počítač PDP-11. A opět byl kompilátor jazyka C přepsán v jazyce C (samozřejmě pomohl vynikajícím lex a yacc nástroje), čímž se dokončí proces zavádění systému C / Unix.
Hlavním důvodem, proč byl Unix přepsán v C, byla přenositelnost. Protože jazyky sestavení pro různé architektury CPU Krátký průvodce procesorem Fantastic AMD Threadripper Krátký průvodce procesorem Fantastic AMD Threadripper CPU AMD byl v divočině CPU několik let, ale je zpět s masivním třeskem. AMD Threadripper je jedním z nejvýkonnějších spotřebitelských CPU na trhu, ale je to pro vás to pravé? jsou různé, přenesení unixového OS na každý by bylo značné úsilí. Vytvořením a systémový jazyk takový jako C, a přepisovat unixový OS v C, toto úsilí bylo redukováno několik řádů velikosti.
Jakmile byl tento jazyk vyvinut, bylo uznáno, že lze použít k psaní mnohem více než systémového softwaru. A tak se C začalo používat pro psaní softwaru, jako jsou souborové servery, databázové servery, síťové zásobníky, stolní software a (a novější) webové servery. Jak proměnit zařízení Android na webový server Jak proměnit zařízení Android na web Server Chcete hostit jednoduchý web bez nákladného hostovacího plánu? Zde je návod, jak hostit web v telefonu nebo tabletu Android. , atd.
V roce 1978 knihu publikovali Brian Kernighan a Dennis Ritchie Programovací jazyk C. Tato kniha sloužila jako neformální Specifikace jazyka C po mnoho let až do roku 1989, kdy byla C formálně standardizována ANSI. Poslední verze C je C11, publikovaná v roce 2011.
Podívejme se nyní na některé vlastnosti C, díky nimž je jedinečný.
C vs C ++: Souvisí?
Protože komplexnější software byl vyvinut v C, bylo zjištěno, že objektově orientované koncepty včetně zapouzdření, polymorfismu atd. By pomohly zvládnout složitost. To vedlo k vývoji C ++ jako nadmnožiny C.
C ++ byl vytvořen přidáním určitých funkcí pro psaní objektově orientovaného softwaru při zachování kompatibility s C. Byl vyvinut s myšlenkou progresivní vylepšení - provádění kompatibilních změn jazyka C, takže moduly C a C ++ lze kombinovat ve stejném programu a kompilovat se stejným kompilátorem. To umožnilo opětovné použití starších modulů založených na C s minimálními změnami ve větším programu psaném pomocí objektově orientovaných konceptů.
Program C může být teoreticky kompilován kompilátorem C ++ bez nutnosti jakýchkoli změn. V praxi však přísnější kontrola typu vynucená C ++ vede k chybám, které vyžadují určité změny kódu.
Malý počet klíčových slov
Jazyk C byl navzdory své moci malým jazykem. Důvodem je, že deklaruje pouze 32 slov jako klíčová slova se specifickým významem. Naproti tomu C ++ deklaruje 82 klíčových slov, java má 50 rezervovaných klíčových slov a javascript má 63. A COBOL deklaruje neuvěřitelných 357 klíčových slov. Představte si bolest hlavy, kterou si musíte pamatovat a vyhýbat se tak velkému počtu klíčových slov!
Žádný výslovný typ řetězce
Na rozdíl od většiny ostatních moderních jazyků Chcete-li vytvořit aplikaci pro Android, musíte se naučit těchto 7 programovacích jazyků Chcete-li vytvořit aplikaci pro Android, musíte se naučit těchto 7 programovacích jazyků Který programovací jazyk je vhodný pro vytváření aplikací pro Android? Záleží to na vaší historii programování a jazycích, které se vám nejvíce hodí. Naštěstí máte možnosti. například Java, C ++ a JavaScript, C neposkytuje samostatný řetězec. Řetězec je považován za řadu znaků ukončených znakem 0 znaků (označeno “\ 0”). Délka řetězce je označena konvencí: počet znaků do 0 znaků. Můžete to ignorovat a počítat nebo ukládat kolem “\ 0”. Tento nedostatek správného typu řetězce a konvence vedl v průběhu let k nespočetným chybám, známým jako přetečení zásobníku.
Ve skutečnosti byl první červ, který kdy zasáhl internet, internetový červ Morris, výsledkem takové chyby v zásadním kusu systémového softwaru známého jako prstový démon.
Zde je příklad takové chyby. Ukazuje, jak snadné je zavést takové chyby do programu. Program se kompiluje v pořádku, ale z důvodu přetečení vyrovnávací paměti dojde k chybě.
# include main () char * buf = "ahoj svět"; buf [12] = 'a'; printf ("% s \ n", buf);
Naproti tomu většina moderních jazyků poskytuje explicitní typ řetězce, který znemožňuje takové shenanigany. I C ++, které kompiluje výše uvedený kód v pořádku, poskytuje explicitní std :: string typ.
Manipulace s ukazatelem
Ukazatel je odkaz na umístění v paměti. C je zcela flexibilní, pokud jde o čtení a zápis libovolných paměťových míst. Tato flexibilita přichází za velkou cenu a byla příčinou mnoha chyb v celém softwarovém spektru. Mezi nejvýznamnější a nejvíce ovlivňující celý internet patří takové chyby na webových serverech, poštovních serverech a ftp serverech. Dokonce i dnes se občas objevují zprávy o chybách způsobených odkazováním a aktualizací neplatných umístění paměti.
Neslavný SSL HeartBleed bezpečnostní chyba objevená v roce 2014 byla výsledkem nesprávné správy umístění ukazatelů a ukazuje zásadní význam správné správy ukazatelů v C.
I příležitostný BSOD (“modrá obrazovka smrti”) chyby, ke kterým dochází v systémech Windows, jsou pravděpodobně způsobeny také nesprávným zpracováním ukazatelů.
Jiné jazyky než C ++ neumožňují manipulaci s ukazatelem, a proto nejsou vůči těmto třídám chyb zranitelné.
Pole a ukazatele jsou zaměnitelné
V poli C jsou odkazy a ukazatele zaměnitelné. Jazyk umožňuje použití odkazu na pole Jak používat Java ArrayList Jak používat Java ArrayList Java arraylist je univerzální velikost s možností změny velikosti. Poskytuje většinu zařízení obecně očekávaných od polí v jiných jazycích. V tomto článku se naučíte nastavit a používat arraylist. kde je vyžadován ukazatel a naopak. I když to umožňuje silnou manipulaci, vedlo to také k mnoha neslavným chybám.
Široké použití “definovat” Makra
Makra se používají k nahrazení názvu jinou expanzí. Mohou být použity ke změně definice jména v době kompilace nebo k nahrazení delšího rozšíření jednoduchým jménem. Makro systém C podporuje ifdef podmínky, které umožňují podmíněné kompilace. Toto je jednosměrný software přenášený do různých architektur a operačních systémů. Obecná jména jsou definována a nahrazována při kompilaci různými expanzemi pro různé podmínky.
Je také možné zahrnout nebo vyloučit kompilaci celých sekcí kódu pomocí těchto maker. Máte A Razer Keyboard? Nahrávání maker je snadné díky Synapse Máte Razer Keyboard? Nahrávání maker je snadné díky Synapse Pokud používáte periferní zařízení Razer, ale nevyužíváte software Synapse, tak vám chybí. Zde je návod, jak efektivně využívat makra a jak mohou vaše hry nabít. .
Jsou zastaralé, ale jsou k dispozici v C ++. Jiné jazyky jako Java, JavaScript, python atd. Podobné zařízení neposkytují.
Moduly zapouzdřené v souborech
C nemá pojem třídy, a proto nepodporuje pojem oddělené veřejné, soukromé a chráněné viditelnosti. Jediné zapouzdření poskytované C je to souborů. Funkce, globální proměnné a typy definované ve zdrojovém souboru jsou v tomto souboru viditelné pouze v případě, že názvy nejsou exportovány. Klíčová slova statický a navenek jsou poskytovány za účelem kontroly viditelnosti názvů proměnných a funkcí.
Naproti tomu ostatní jazyky jako C ++, Java a Python obecně podporují třídy a zapouzdření, které jde s třídami.
Externí knihovny
Na jiné než základní jazykové konstrukce je složitější funkce v C delegována na externí knihovny. Manipulace s řetězci, matematika, vstup-výstup, síť atd. Jsou poskytovány externími knihovnami. Naproti tomu jiné jazyky obvykle přicházejí s dobře zásobenou knihovnou modulů se samotným jazykem.
A to zahrnuje některé základní vlastnosti jazyka C, zejména ty, které jej odlišují od ostatních jazyků.
Pracovali jste s C? Líbilo se vám to, nebo byste raději pracovali s jiným jazykem? Vysvětlete prosím níže uvedené komentáře.