C/O języku C: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Mku84 (dyskusja | edycje)
Mku84 (dyskusja | edycje)
Linia 46:
 
== 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 [[w:Maszyna wirtualna|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).
 
=== Zalety języka C ===
Kolejną zaletą C jest jego dostępność - właściwie każdy system typu UNIX posiada kompilator C, w C pisane są funkcje systemowe.
 
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 [[w:Maszyna wirtualna|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. Dzięki temu w języku C można pisać aplikację współpracujące z systemem uniksopodobnym (poprzez interfejs programowy systemu operacyjnego, np. POSIX). Przykładowym zastosowaniem jest programowanie równoległe poprzez funkcje "POSIX threads" albo dynamiczne ładowanie bibliotek (np. interpreter język Perl jest w stanie skompilować fragment kodu do poziomu bilioteki i ją podlinkować dynamicznie). Temat jest opisany w książkach o programowaniu systemu UNIX.
 
 
=== Wady języka C ===
 
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 [[Asembler|Asemblerem]].
 
Język C jest dosyć okrojony, tzn. nie posiada wbudowanych bibliotek do typowych struktur danych i algorytmów (w przeciwieństwie do np. C++, Javy). Istnieją co prawda darmowe biblioteki, jednak są one rozwijane oddzielnie.
 
W przypadku konieczności dużej optymalizacji aplikacji dla danego sprzętu konkurencją staje się język asemblera. W większych projektach programiści sięgają często po obiektowy C++ (np. gry, CAD). W świecie oprogramowania biznesowego wykorzystywane są raczej technologie o szybszym procesie tworzenia aplikacji i mniejszym nacisku na wydajność (np. Java).
 
=== Język C w obliczeniach naukowo-technicznych ===
 
Standard C99 zbliżył możliwości języka C do języka Fortran. Dodano niektóre funkcje matematyczne i rozbudowano optymalizację dynamicznie alokowanej pamięci. Standard C11 przyniósł programowanie równoległe. W praktyce wiele zależy od kompilatora. Osiągi narzędzi GNU dla C i Fortranu obu języków bywają zbliżone. Język Fortran posiada jednak np. kotablice oraz obiekty nie występujące w języku C.
 
== Przyszłość C ==