Historia języka C. §1 Ogólne informacje o języku. Etapy projektowania programu. Modele cyklu życia aplikacji Historia języka programowania C
Język C i UNIX
Język programowania Z(wymawiane „C”) powstało na początku lat 70., kiedy Ken Thompson i Dennis Ritchie z Bell Labs opracowywali system operacyjny UNDC. Najpierw stworzyli część kompilatora Z, a następnie użył go do skompilowania reszty kompilatora Z iw końcu wykorzystał powstały kompilator do skompilowania systemu UNIX. System operacyjny UNIX był pierwotnie dystrybuowany w kodach źródłowych na Z wśród uczelni i laboratoriów, a odbiorca mógł skompilować źródło w języku Z do kodu natywnego za pomocą odpowiedniego kompilatora Z.
Dystrybucja kodu źródłowego uczyniła system operacyjny UNIX wyjątkowym; programista mógł zmienić system operacyjny, a kod źródłowy można przenieść z jednej platformy sprzętowej na drugą. Dzisiaj standard POSIX definiuje zestaw standardów wywołania systemowe UNIX dostępny w Z, który musi być zaimplementowany w wersjach systemu UNIX zgodnych z POSIX. C był trzecim językiem opracowanym przez Thomsona i Ritchiego podczas tworzenia systemu UNIX; Pierwsze dwie to oczywiście ALE oraz W.
Mobilny język asemblera C
W porównaniu do wcześniejszego języka - BCPL, język Z został ulepszony przez dodanie określonych typów danych długości. Na przykład typ danych int może być użyty do utworzenia zmiennej o określonej liczbie bitów (zwykle 16), podczas gdy typ danych long może zostać użyty do utworzenia zmiennej całkowitej z duża liczba bity (zwykle 32). W przeciwieństwie do innych języków wysoki poziom, Z może pracować z adresami pamięci bezpośrednio za pomocą wskaźników i referencji. Ponieważ Z zachował możliwość bezpośredniego dostępu sprzęt komputerowy, jest często określany jako język średniego poziomu lub żartobliwie określany jako "mobilny język asemblerowy".
C - strukturalny język programowania
Jeśli chodzi o gramatykę i składnię, Z jest ustrukturyzowanym językiem programowania. Podczas gdy wielu współczesnych programistów myśli w kategoriach klas i obiektów, programiści Z myśl w kategoriach procedur i funkcji. W Z możesz zdefiniować własne abstrakcyjne typy danych za pomocą słowa kluczowego struct. Podobnie możesz opisać własne typy liczb całkowitych (wyliczenia) i nadać inne nazwy istniejącym typom danych za pomocą słowo kluczowe typedef . W tym sensie Z to język strukturalny z zalążki programowania obiektowego.
Standaryzacja języka C
Powszechny język C na różne rodzaje komputery (czasami nazywane platformami sprzętowymi) doprowadziły niestety do wielu odmian języka. Byli do siebie podobni, ale nie do pogodzenia. Był to poważny problem dla twórców oprogramowania, którzy musieli pisać kompatybilne programy, które mogłyby działać na wielu platformach. Stało się jasne, że potrzebna jest standardowa wersja C. W 1983 ANSI (American National Standards Committee) utworzył komitet techniczny X3J11 w celu stworzenia standardu językowego C(aby „zapewnić jednoznaczną i niezależną od maszyny definicję języka”). W 1989 r. norma została zatwierdzona. ANSI nawiązała współpracę z ISO (Międzynarodową Organizacją Normalizacyjną) w celu standaryzacji C na arenie międzynarodowej; wspólny standard został opublikowany w 1990 roku i nazwany ANSI/ISO 9899:1990. Ten standard jest wciąż ulepszany i jest obsługiwany przez większość programistów kompilatorów.
Narodziny C++
Bjorn Stroustrup uwalnia potencjał obiektowy Z przenosząc cechy klasy Symulacja 67 w Z. Początkowo nowy język nosił nazwę „C z klasami”, a dopiero potem zaczęto go nazywać C++. Język C++ zyskał popularność dzięki rozwijaniu w Bell Labs, później został przeniesiony do innych branż i korporacji. Dziś jest to jeden z najpopularniejszych (i autorytatywnych) języków programowania na świecie. C++ dziedziczy zarówno dobre, jak i złe strony Z.
Wyznania Bjorna Stroustrupa
Bjorn Stroustrup: „Wymyśliłem C++, zapisał jej pierwotną definicję i wykonał pierwszą implementację. Wybrałem i sformułowałem kryteria projektowe C++, opracowała jego główne cechy i była odpowiedzialna za los propozycji rozszerzeń językowych w komitecie normalizacyjnym C++", - pisze autor najpopularniejszego języka programowania. - "Język C++ wiele zawdzięcza językowi C i język C pozostaje podzbiorem Język C++(ale C++ naprawia kilka poważnych błędów w systemie typu C). Trzymałem też fundusze C, które są wystarczająco niskiego poziomu, aby obsłużyć najbardziej krytyczne zadania systemowe. Język C z kolei wiele zawdzięcza swojemu poprzednikowi, BCPL; nawiasem mówiąc, styl komentarza // został zaczerpnięty z C++ z BCPL. Drugim głównym źródłem inspiracji był język Symulacja67. Od niego zapożyczono pojęcie klas (z klasami pochodnymi i funkcjami wirtualnymi). Przypomina o sposobach przeciążania operatora i możliwości umieszczania deklaracji w dowolnym miejscu, w którym można napisać instrukcję Algol68. "
Dlaczego C++
Nazwa C++ wynaleziony przez Ricka Massitti. Nazwa wskazuje ewolucyjny charakter przejścia do niego z C. „++” to operacja przyrostu w C. Nieco krótsza nazwa C+ jest błędem składni; co więcej, był już używany jako nazwa zupełnie innego języka. Eksperci semantyki C Znajdź to C++ gorsze niż ++C. Tytuły D język tego nie otrzymał, ponieważ jest rozszerzeniem C i nie próbuje naprawiać problemów przez wyrzucanie funkcji.
Dlaczego C++ był potrzebny
Początkowo Język programowania C++ został zaprojektowany tak, aby autor i jego przyjaciele nie musieli programować w asemblerze, C lub innych nowoczesnych językach wysokiego poziomu. Jego głównym celem było pisanie dobre programyłatwiejsze i przyjemniejsze dla indywidualnego programisty. Plan rozwoju C++ nigdy nie było na papierze; projekt, dokumentacja i realizacja ruszyły w tym samym czasie. Oczywiście interfejs zewnętrzny C++ został napisany w C++. Nigdy nie było „Projektu C++” ani „Komitetu Rozwoju C++”. Dlatego C++ opracowany i ewoluuje we wszystkich kierunkach, aby poradzić sobie z trudnościami, z jakimi borykają się użytkownicy, a także w dyskusjach autora z jego przyjaciółmi i współpracownikami.
Prawdziwie zorientowany obiektowo C++
W Język C++ zasady programowania obiektowego są w pełni obsługiwane, w tym trzy filary, na których się opiera: enkapsulacja, dziedziczenie i polimorfizm. Hermetyzacja w C++ obsługiwane przez tworzenie niestandardowych (niestandardowych) typów danych zwanych klasami. Język C++ wspiera dziedziczenie. Oznacza to, że możesz zadeklarować nowy typ dane (klasa) będące rozszerzeniem istniejącej.
Mimo że Język programowania C++ słusznie nazywana kontynuacją Z i dowolny działający program w języku Z będzie wspierany przez kompilator C++, przy przeprowadzce z Z do C++ dokonano znaczącego skoku. Język C++ korzystał z pokrewieństwa z językiem Z przez lata, jak wielu programistów odkryło, że aby w pełni wykorzystać Język C++, muszą zrezygnować z części swojej dotychczasowej wiedzy i zdobyć nową, a mianowicie: studiować nowy sposób konceptualność i rozwiązywanie problemów programistycznych. Zanim zaczniesz się uczyć C++, Stroustrup i większość innych programistów, którzy używają C++ rozważ naukę języka Z opcjonalny.
Język programowania C++ obecnie uważany za dominujący język używany do tworzenia produktów komercyjnych, 90% gier jest napisanych w języku C++ przy użyciu DirectX.
Literatura
Źródła:
- H.M.Deitel, P.J.Deitel "Jak programować w C++"
- Bjorn Stroustrup "Język programowania C++. Wydanie trzecie."
- Simon Robinson, Ollie Cornes, Jay Glynn i inni „C# dla profesjonalistów”
- Jess Liberty „Naucz się C++ w 21 dni”
- Stanislav Gornakov "Lekcje programowania DirectX, C++"
Język programowania C++
Ostatnia aktualizacja: 28.08.2017
Język programowania C++ jest skompilowanym językiem programowania wysokiego poziomu. ogólny cel z pisaniem statycznym, które nadaje się do tworzenia szerokiej gamy aplikacji. C++ jest obecnie jednym z najpopularniejszych i najbardziej rozpowszechnionych języków.
Ma swoje korzenie w języku C, który został opracowany w latach 1969-1973 w Bell Labs przez programistę Dennisa Ritchie. Na początku lat 80. duński programista Bjarne Stroustrup, pracujący wówczas w Bell Labs, opracował C++ jako rozszerzenie języka C. W rzeczywistości na początku C++ po prostu uzupełnił język C o pewne cechy programowania obiektowego. I tak sam Stroustrup nazwał go początkowo „C z klasami” („C z klasami”).
Następnie nowy język zaczął zdobywać popularność. Dodano do niego nowe funkcje, które uczyniły go nie tylko dodatkiem do C, ale zupełnie nowym językiem programowania. W rezultacie nazwa „C z klasami” została zmieniona na C++. I od tego czasu oba języki zaczęły się rozwijać niezależnie od siebie.
C++ to potężny język, dziedziczący bogate możliwości pamięciowe z C. Dlatego C++ często znajduje swoje zastosowanie w programowaniu systemowym, w szczególności przy tworzeniu systemów operacyjnych, sterowników, różnych narzędzi, antywirusów itp. Nawiasem mówiąc, Windows jest w większości napisany w C++. Ale tylko aplikacja do programowania systemu podany język nie jest ograniczona. C++ może być używany w programach na każdym poziomie, gdzie ważna jest szybkość i wydajność. Często służy do tworzenia aplikacji graficznych, różnych programy użytkowe. Jest również szczególnie często używany do tworzenia gier o bogatej, bogatej grafice. Poza tym w ostatnie czasy kierunek mobilny nabiera tempa, gdzie C++ również znalazło swoje zastosowanie. A nawet w tworzeniu stron internetowych możesz również używać C++ do tworzenia aplikacji internetowych lub jakiegoś rodzaju usług pomocniczych, które obsługują aplikacje internetowe. Ogólnie rzecz biorąc, C++ jest powszechnie używanym językiem, w którym można napisać niemal każdy rodzaj programu.
C++ jest językiem skompilowanym, co oznacza, że kompilator tłumaczy kod źródłowy C++ na plik wykonywalny zawierający zestaw instrukcji maszynowych. Ale różne platformy mają swoje własne cechy, więc skompilowanych programów nie można po prostu przenieść z jednej platformy na drugą i tam uruchomić. Jednak na poziomie kodu źródłowego programy w języku C++ są w większości przenośne, chyba że są używane niektóre funkcje specyficzne dla systemu operacyjnego. A dostępność kompilatorów, bibliotek i narzędzi programistycznych dla prawie wszystkich popularnych platform umożliwia kompilację tego samego kodu źródłowego C++ do aplikacji dla tych platform.
W przeciwieństwie do C, język C++ umożliwia pisanie aplikacji w stylu obiektowym, reprezentując program jako zbiór klas i obiektów wchodzących ze sobą w interakcje. Upraszcza to tworzenie dużych aplikacji.
Kamienie milowe rozwoju
W latach 1979-80 Bjarne Stroustrup opracował rozszerzenie języka C - „C z klasami”. W 1983 roku zmieniono nazwę języka na C++.
W 1985 roku została wydana pierwsza komercyjna wersja języka C++, a także pierwsze wydanie książki "Język programowania C++", które stanowiło pierwszy opis tego języka przy braku oficjalnego standardu.
Wydany w 1989 r. nowa wersja C++ 2.0, który zawierał szereg nowych funkcji. Następnie język rozwijał się stosunkowo powoli, aż do 2011 roku. Ale jednocześnie, w 1998 roku, podjęto pierwszą próbę standaryzacji języka przez ISO (Międzynarodową Organizację Normalizacyjną). Pierwszy standard nosił nazwę ISO/IEC 14882:1998 lub w skrócie C++98. Później w 2003 roku została opublikowana nowa wersja standardu C++03.
W 2011 roku został opublikowany nowy standard C++11, który zawierał wiele dodatków i wzbogacił język C++ o dużą liczbę nowych funkcji. W 2014 r. nastąpił niewielki dodatek do standardu, znany również jako C++14. Kolejna kluczowa wersja języka zaplanowana jest na 2017 rok.
Kompilatory i środowiska programistyczne
Do tworzenia programów w C++ potrzebny jest kompilator - tłumaczy on kod źródłowy C++ na plik wykonywalny, który można następnie uruchomić. Ale w tej chwili istnieje wiele różnych kompilatorów. Mogą się różnić w różnych aspektach, w szczególności we wdrażaniu standardów. Podstawową listę kompilatorów dla C++ można znaleźć na wikipedii. Zaleca się, aby programiści wybierali te kompilatory, które opracowują i wdrażają wszystkie najnowsze standardy. Na przykład w tym samouczku będzie używany głównie darmowy kompilator g++, opracowany przez projekt GNU.
Możesz także używać IDE do tworzenia programów, takich jak studio wizualne, Netbeans, Eclipse, Qt itp.
Kiedy Twoja reputacja pracuje na Twój zysk
Zarządzanie społecznością
Tworzenie tonu głosu. Szybkie przetwarzanie zarówno negatywnych, jak i pozytywnych komentarzy w imieniu marki. Zarządzanie komunikacją według zadanych scenariuszy. Przekazywanie problematycznych momentów klientowi.
Agenci wpływu
Tworzenie i wdrażanie „wirtualów” na forach i in w sieciach społecznościowych. Istnieje baza danych rachunków pompowanych i rzeczywistych w ponad 300 witrynach.
Praca z recenzjami
Pisanie, koordynowanie i publikowanie recenzji marki w najlepszych witrynach i witrynach z recenzjami. Przetwarzanie i nakładanie negatywnych komentarzy na pozytywne. W wyniku wyniki wyszukiwania negatyw jest stopniowo zastępowany.
Monitorowanie mediów społecznościowych
Praca z systemami Youscan, IQbuzz, Brand Analytics. Kontrola wzmianek o marce. Identyfikacja kluczowych spostrzeżeń, szybka reakcja na negatywność. Niezbędne narzędzie do kontroli informacja zwrotna od klientów.
Analityka i Badania
Analiza pole informacyjne, badania kategorii produktów oraz głównych konkurentów marki. To narzędzie obejmuje zadania od kontroli reputacji i marketingu w czasie rzeczywistym po dogłębne badania.
SERM
Szczegółowa analiza wyniki wyszukiwania dla wybranych słów kluczowych. Zbieranie wzmianek o kliencie w sieciach społecznościowych, forach i serwisach informacyjnych. Opracowanie strategii postępowania z informacjami negatywnymi. Klient otrzymuje w pełni kontrolowaną emisję w TOP10.
Dlaczego C++
C++ jest obecnie uważany za dominujący język używany do tworzenia komercyjnych produktów oprogramowania. W ostatnich latach ta dominacja została nieco zachwiana podobnymi twierdzeniami języka programowania, takiego jak Java, ale wahadło opinii publicznej odwróciło się w drugą stronę i wielu programistów, którzy porzucili C++ na rzecz Javy, ostatnio powróciło do jego dawnej sympatii. W każdym razie te dwa języki są tak podobne, że ucząc się jednego z nich, automatycznie opanujesz 90% drugiego.
C# to nowy język opracowany przez firmę Microsoft dla platformy sieciowej. W istocie C# jest rodzajem C++ i pomimo szeregu fundamentalnych różnic języki C# i C++ pokrywają się w około 90%. Prawdopodobnie minie dużo czasu, zanim C# stanie się poważnym konkurentem C++; ale nawet jeśli tak, to znajomość języka C++ będzie znaczącą zaletą.
C++ to język programowania ogólnego przeznaczenia. Jego naturalnym zakresem jest szeroko rozumiane programowanie systemowe. Ponadto C++ jest z powodzeniem stosowany w wielu obszarach aplikacji, które wykraczają daleko poza określony zakres. Implementacje C++ są teraz dostępne na każdej maszynie, od najprostszego mikrokomputera do największego superkomputera i dla praktycznie wszystkich systemów operacyjnych.
Powstanie i ewolucja języka C++
Bjorn Stroustrup jest twórcą języka C++ i twórcą pierwszego kompilatora. Jest pracownikiem AT&T Bell Laboratories Research Computing Center w Murray Hill (New Jersey, USA). Otrzymał tytuł magistra matematyki i inżynierii komputerowej na Uniwersytecie w Aarus (Dania), a jego doktorat z Informatyka na Uniwersytecie Cambridge (Anglia). Specjalizuje się w systemy rozproszone, systemy operacyjne, modelowanie i programowanie. Wraz z M. A. Ellisem jest autorem kompletny przewodnik o języku C++ - "Przewodnik po C++ z notatkami".
Oczywiście C++ wiele zawdzięcza językowi C, który jest zachowany jako jego podzbiór. Wszystkie narzędzia niskiego poziomu związane z C, zaprojektowane do rozwiązywania najbardziej palących problemów, są również zachowane. programowanie systemu. C z kolei wiele zawdzięcza swojemu poprzednikowi, BCPL. Komentarz języka BCPL został przywrócony do C++. Innym źródłem inspiracji był język SIMULA-67; to od niego zapożyczono pojęcie klas (wraz z klasami pochodnymi i funkcjami wirtualnymi). Zdolność C++ do przeciążania operatorów i swoboda umieszczania deklaracji wszędzie tam, gdzie operator może się pojawić, przypomina język Algol-68.
Więcej wczesne wersje języki zwane „C z klasami” są używane od 1980 roku. Język ten powstał, ponieważ autor musiał pisać programy symulacyjne sterowane przerwaniami. Język SIMULA-67 jest do tego idealny, oprócz wydajności. Do dużych zadań modelowania używano języka „C z klasami”. W tym czasie rygorystycznym testom poddano możliwości pisania na nim programów, dla których zasoby czasu i pamięci są krytyczne. W tym języku brakowało przeciążania operatorów, referencji, funkcji wirtualnych i wielu innych funkcji. Po raz pierwszy C++ opuścił grupę badawczą, w której pracował autor, w lipcu 1983 roku, ale w tym czasie wiele funkcji C++ nie było jeszcze opracowanych.
Nazwa C++ (C plus plus) została ukuta przez Ricka Maschittiego latem 1983. Nazwa ta odzwierciedla ewolucyjny charakter zmian w języku C. Zapis ++ odnosi się do operacji inkrementacji C. Nieco krótsza nazwa C+ to błąd składni. Ponadto był już używany jako nazwa zupełnie innego języka. Semantycy C uważają, że C++ jest gorszy niż ++C. Język nie nazywa się D, ponieważ jest rozszerzeniem C i nie próbuje rozwiązywać żadnych problemów przez porzucanie funkcji C. Inną interesującą interpretację nazwy C++ można znaleźć w dodatku do .
C++ został pierwotnie pomyślany tak, aby autor i jego przyjaciele nie musieli programować w asemblerze, C lub innych nowoczesnych językach wysokiego poziomu. Jego głównym celem jest uproszczenie i uprzyjemnienie procesu programowania dla indywidualnego programisty. Do niedawna nie było planu rozwoju C++ na papierze. Projekt, realizacja i dokumentacja szły ręka w rękę. Nigdy nie było "Projektu C++" ani "Komitetu Projektowego C++". Dlatego język ewoluował i nadal ewoluuje w taki sposób, aby przezwyciężyć wszystkie problemy, które napotkali użytkownicy. Impulsem do rozwoju są również dyskusje autora o wszelkich problemach z przyjaciółmi i współpracownikami.
Od czasu publikacji pierwszego wydania tej książki język C++ przeszedł znaczące zmiany i udoskonalenia. Chodzi głównie o ujednoznacznienie przeciążenia, łączenie i zarządzanie pamięcią. Wprowadzono jednak drobne zmiany w celu zwiększenia zgodności z językiem C. Wprowadzono również pewne uogólnienia i znaczące rozszerzenia, takie jak dziedziczenie wielokrotne, funkcje składowe ze specyfikacjami statycznymi i stałymi, chronione składowe (chronione), szablony typów i obsługa sytuacje specjalne. Wszystkie te rozszerzenia i ulepszenia miały na celu uczynienie z C++ języka, w którym można tworzyć i używać bibliotek. Wszystkie zmiany zostały opisane w .
Inne rozszerzenia wprowadzone w latach 1985-1991 (takie jak wielokrotne dziedziczenie, statyczne funkcje składowe i czysto wirtualne funkcje) wyłoniły się z uogólnień doświadczenia programowania w C++, a nie z innych języków.
Rozszerzenia języka dokonane w ciągu tych sześciu lat miały na celu przede wszystkim zwiększenie wyrazistości C++ jako języka abstrakcji danych i programowania obiektowego w ogóle, a także jako środka do tworzenia wysokiej jakości bibliotek ze zdefiniowanymi przez użytkownika typami danych.
Około 1987 r. stało się jasne, że prace nad standaryzacją C++ są nieuchronne i że należy natychmiast rozpocząć ich tworzenie.
AT&T Bell Laboratories było głównym współtwórcą tej pracy. Około stu przedstawicieli około 20 organizacji studiowało i komentowało to, co stało się nowoczesną wersją podręcznika referencyjnego i materiału źródłowego dla standaryzacji ANSI. C++. Ostatecznie, z inicjatywy Hewlett-Packarda, w grudniu 1989 r. w ANSI utworzono Komitet X3J16. Oczekuje się, że prace normalizacyjne C++ w ANSI (standard amerykański) staną się część integralna prace normalizacyjne prowadzone przez ISO (Międzynarodowa Organizacja Normalizacyjna).
C++ ewoluował wraz z rozwojem niektórych podstawowych klas.
Tagi: Historia standaryzacji C, ANSI C, ISO C, C99, C11, ISO/IEC C, C.
pochodzenie
C i jest „produktem ubocznym” uzyskanym w momencie tworzenia system operacyjny UNIX, który został opracowany w Bell Laboratories przez Kena Thompsona, Denisa Ritchie i spółkę. Thompson własnoręcznie napisał oryginalną wersję systemu UNIX, która działała na DEC PDP-7, jednym z pierwszych minikomputerów z zaledwie 8K słów pamięci głównej (w końcu był to rok 1969).
Podobnie jak inne ówczesne systemy operacyjne, UNIX został napisany w języku asemblera. Debugowanie programów w języku asemblerowym jest naprawdę trudne i trudne do poprawienia, a UNIX nie był wyjątkiem. Thompson zdecydował, że do dalszego rozwoju systemu operacyjnego potrzebny jest język wysokiego poziomu i wymyślił mały język B. Thompson wziął za podstawę BCPL, język programowania systemowego opracowany w połowie lat 60. XX wieku. BCPL z kolei wywodzi się z Algola 60, jednego z pierwszych (i największy wpływ) Języki.
Ritchie wkrótce dołączył do projektu UNIX i zaczął pisać w B. W 1970 Bell Labs zakupił PDP-11 do projektu. Ponieważ B był gotowy do uruchomienia na PDP-11, Thompson przepisał część UNIX na B. W 1971 stało się jasne, że B nie jest całkiem odpowiedni dla PDP-11, więc Ritchie zaczął tworzyć rozszerzoną wersję B. najpierw nazwał go NB (New B ), ale kiedy język stał się bardzo różny od B, nazwa została zmieniona na C. W 1973 język był na tyle stabilny, że można było w nim przepisać UNIX. Przejście na C przyniosło ważną korzyść: przenośność. Pisząc kompilator C dla każdej maszyny w Bell Labs, zespół programistów mógł przenieść na nie system UNIX.
Normalizacja
C nadal ewoluował w latach 70., zwłaszcza między 1977 a 1979 rokiem, kiedy opublikowano pierwszą książkę o C. Język programowania C, napisany przez Briana Kernighana i Denisa Ritchie i opublikowany w 1978 roku, stał się biblią programistów C. Wobec braku oficjalnego standardu, ta książka – znana również jako K&R lub „Biała Księga”, jak lubią ją nazywać fani C – stała się de facto standardem. W latach 70. było niewielu programistów C, a większość z nich była użytkownikami UNIXa. Jednak w latach 80. C wyszedł poza wąskie ramy świata UNIX-a. Kompilatory C stały się dostępne na różnych komputerach z różnymi systemami operacyjnymi. W szczególności C zaczęło się rozprzestrzeniać na szybko rozwijającej się platformie IBM PC.
Wraz ze wzrostem popularności pojawiły się problemy. Programiści, którzy pisali nowe kompilatory, wzięli za podstawę język opisany w K&R. Niestety w K&R niektóre cechy języka zostały opisane niejasno, więc kompilatory często interpretowały je według własnego uznania. Ponadto książka nie dokonała wyraźnego rozróżnienia między cechą języka a cechą systemu operacyjnego. Systemy UNIX. Co gorsza, po publikacji K&R C nadal się rozwijało: dodawane były do niego nowe funkcje, a stare wycinano z niego. Wkrótce pojawiła się wyraźna potrzeba kompleksowego, dokładnego i odpowiedniego nowoczesne wymagania opis języka. Bez takiego standardu zaczęły pojawiać się dialekty języka, które przeszkadzały w przenoszeniu, najsilniejszej stronie języka.
Rozwój amerykańskiego standardu C rozpoczął się w 1983 roku pod auspicjami American National Standards Institute (ANSI). Po wielu poprawkach standard został ukończony w 1988 roku i formalnie przyjęty w grudniu 1989 roku jako ANSI X3.159-1989. W 1990 roku została zatwierdzona przez Międzynarodową Organizację Normalizacyjną (ISO) jako międzynarodowa norma ISO/IEC 9899:1990. Ta wersja języka jest powszechnie określana jako C89 lub C90, aby uniknąć pomyłek z oryginalną wersją C, powszechnie określaną jako K&R C.
Język uległ niewielkim zmianom w 1995 roku (zmiany są opisane w dokumencie powszechnie określanym jako Poprawka 1). Bardziej znaczące zmiany nastąpiły w 1999 roku, kiedy opublikowano normę ISO/IEC 9899:1999. Język opisany w tym standardzie jest powszechnie określany jako C99. Terminy „ANSI C”, „ANSI/ISO C” i „ISO C”, używane kiedyś do opisania C99, są niejednoznaczne ze względu na istnienie dwóch standardów.
W 2011 roku wraz z wersją języka C++ został wydany standard C11. Pomimo obecności standardu 11, wiele kompilatorów nadal nie obsługuje w pełni nawet wersji C99, więc użycie standardu C11 zostanie wyraźnie stwierdzone.