C/O języku C: Różnice pomiędzy wersjami
Linia 41: | Linia 41: | ||
* utworzono kilka nowych plików nagłówkowych (stdbool.h, [[C/inttypes.h|inttypes.h]]) |
* utworzono kilka nowych plików nagłówkowych (stdbool.h, [[C/inttypes.h|inttypes.h]]) |
||
[http://std.dkuug.dk/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf standard C99]. |
[http://std.dkuug.dk/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf standard C99 jest dostępny tutaj]. |
||
Na dzień dzisiejszy normą obowiązującą jest norma C11. |
Rozwój języka C trwał dalej. Na dzień dzisiejszy normą obowiązującą jest norma C11. Wprowadzono w niej m.in. wsparcie programowania równoległgo. |
||
== Zastosowania języka C == |
== Zastosowania języka C == |
Wersja z 08:12, 14 kwi 2016
C jest językiem programowania wysokiego poziomu. Jego nazwę interpretuje się jako następną literę po B (nazwa jego poprzednika), lub drugą literę języka BCPL (poprzednik języka B).
Historia C
W 1947 roku trzej naukowcy z Bell Telephone Laboratories - William Shockley, Walter Brattain i John Bardeen - stworzyli pierwszy tranzystor; w 1956 roku, w MIT skonstruowano pierwszy komputer oparty wyłącznie na tranzystorach: TX-O; w 1958 roku Jack Kilby z Texas Instruments skonstruował układ scalony. Ale zanim powstał pierwszy układ scalony, pierwszy język wysokiego poziomu został już napisany.
W 1954 powstał Fortran (Formula Translator), który zapoczątkował napisanie języka Fortran I (1956). Później powstały kolejno:
- Algol 58 - Algorithmic Language w 1958 r.
- Algol 60 (1960)
- CPL - Combined Programming Language (1963)
- BCPL - Basic CPL (1967)
- B (1969)
i C w oparciu o B.
B został stworzony przez Kena Thompsona z Bell Labs; był to język interpretowany, używany we wczesnych, wewnętrznych wersjach systemu operacyjnego UNIX. Inni pracownicy Bell Labs, Thompson i Dennis Ritchie, rozwinęli B, nazywając go NB; dalszy rozwój NB dał C - język kompilowany. Większa część UNIX-a została ponownie napisana w NB, a następnie w C, co dało w efekcie bardziej przenośny system operacyjny. W 1978 roku wydana została książka pt. "The C Programming Language", która stała się pierwszym podręcznikiem do nauki języka C.
Możliwość uruchamiania UNIX-a na różnych komputerach była główną przyczyną początkowej popularności zarówno UNIX-a, jak i C; zamiast tworzyć nowy system operacyjny, programiści mogli po prostu napisać tylko te części systemu, których wymagał inny sprzęt, oraz napisać kompilator C dla nowego systemu. Odkąd większa część narzędzi systemowych była napisana w C, logiczne było pisanie kolejnych w tym samym języku.
Kilka z obecnie powszechnie stosowanych systemów operacyjnych takich jak Linux, Microsoft Windows zostało napisanych w języku C.
Standaryzacje
W 1978 roku Ritchie i Kerninghan opublikowali pierwszą książkę nt. języka C - "The C Programming Language". Owa książka przez wiele lat była swoistym "wyznacznikiem", jak programować w języku C. Była więc to niejako pierwsza standaryzacja, nazywana od nazwisk twórców "K&R". Oto nowości, wprowadzone przez nią do języka C w stosunku do jego pierwszych wersji (pochodzących z początku lat 70.):
- możliwość tworzenia struktur (słowo struct)
- dłuższe typy danych (modyfikator long)
- liczby całkowite bez znaku (modyfikator unsigned)
- zmieniono operator "=+" na "+="
Ponadto producenci kompilatorów (zwłaszcza AT&T) wprowadzali swoje zmiany, nieobjęte standardem:
- funkcje nie zwracające wartości (void) oraz typ void*
- funkcje zwracające struktury i unie
- przypisywanie wartości strukturom
- wprowadzenie słowa kluczowego const
- utworzenie biblioteki standardowej
- wprowadzenie słowa kluczowego enum
Owe nieoficjalne rozszerzenia zagroziły spójności języka, dlatego też powstał standard, regulujący wprowadzone nowinki. Od 1983 roku trwały prace standaryzacyjne, aby w 1989 roku wydać standard C89 (poprawna nazwa to: ANSI X3.159-1989). Niektóre zmiany wprowadzono z języka C++, jednak rewolucję miał dopiero przynieść standard C99, który wprowadził m.in.:
- funkcje inline
- nowe typy danych (np. long long int)
- nowy sposób komentowania, zapożyczony od C++ (//)
- przechowywanie liczb zmiennoprzecinkowych zostało zaadaptowane do norm IEEE
- utworzono kilka nowych plików nagłówkowych (stdbool.h, inttypes.h)
standard C99 jest dostępny tutaj.
Rozwój języka C trwał dalej. Na dzień dzisiejszy normą obowiązującą jest norma C11. Wprowadzono w niej m.in. wsparcie programowania równoległgo.
Zastosowania języka C
Język C został opracowany jako strukturalny język programowania do celów ogólnych. Przez całą swą historię (czyli ponad 30 lat) służył do tworzenia przeróżnych programów - od systemów operacyjnych po programy nadzorujące pracę urządzeń przemysłowych. C, jako język dużo szybszy od języków interpretowanych (Perl, Python) oraz uruchamianych w maszynach wirtualnych (np. C#, Java) może bez problemu wykonywać złożone operacje nawet wtedy, gdy nałożone są dość duże limity czasu wykonywania pewnych operacji. Jest on przy tym bardzo przenośny - może działać praktycznie na każdej architekturze sprzętowej pod warunkiem opracowania odpowiedniego kompilatora. Często wykorzystywany jest także do oprogramowywania mikrokontrolerów i systemów wbudowanych. Jednak w niektórych sytuacjach język C okazuje się być mało przydatny, zwłaszcza chodzi tu o obliczenia matematyczne, wymagające dużej precyzji (w tej dziedzinie znakomicie spisuje się Fortran) lub też dużej optymalizacji dla danego sprzętu (wtedy niezastąpiony jest język asemblera).
Kolejną zaletą C jest jego dostępność - właściwie każdy system typu UNIX posiada kompilator C, w C pisane są funkcje systemowe.
Problemem w przypadku C jest zarządzanie pamięcią, które nie wybacza programiście błędów, niewygodne operowanie napisami i niestety pewna liczba "kruczków", które mogą zaskakiwać nowicjuszy. Na tle młodszych języków programowania, C jest językiem dosyć niskiego poziomu więc wiele rzeczy trzeba w nim robić ręcznie, jednak zarazem umożliwia to robienie rzeczy nieprzewidzianych w samym języku (np. implementację liczb 128 bitowych), a także łatwe łączenie C z Asemblerem.
Przyszłość C
Pomimo sędziwego już wieku (C ma ponad 30 lat) nadal jest on jednym z najczęściej stosowanych języków programowania. Doczekał się już swoich następców, z którymi w niektórych dziedzinach nadal udaje mu się wygrywać. Widać zatem, że pomimo pozornej prostoty i niewielkich możliwości język C nadal spełnia stawiane przed nim wymagania. Warto zatem uczyć się języka C, gdyż nadal jest on wykorzystywany (i nic nie wskazuje na to, by miało się to zmienić), a wiedza którą zdobędziesz ucząc się C na pewno się nie zmarnuje. Składnia języka C, pomimo że przez wielu uważana za nieczytelną, stała się podstawą dla takich języków jak C++, C# czy też Java.