C/Czego potrzebujesz

< C

Wbrew powszechnej opinii nauczenie się któregoś z języków programowania (w tym języka C) nie jest takie trudne. Do nauki wystarczą Ci:

Sprzęt

edytuj

Język C jest bardzo przenośny, więc będzie działał właściwie na każdej platformie sprzętowej i w każdym nowoczesnym systemie operacyjnym.
Potrzebny będzie komputer z dowolnym systemem operacyjnym, takim jak FreeBSD, Linux, Windows.

Wymagane programy

edytuj
  • Kompilator języka C jest programem który tłumaczy kod źródłowy napisany przez nas do języka asembler, a następnie do postaci zrozumiałej dla komputera (maszyny cyfrowej), czyli do postaci ciągu zer i jedynek które sterują pracą poszczególnych elementów komputera. Kompilator języka C można dostać za darmo.

Przykładem są:

Jako kompilator C może dobrze służyć kompilator języka C++ (różnice między tymi językami przy pisaniu prostych programów są nieistotne). Spokojnie możesz więc użyć na przykład Microsoft Visual C++® lub kompilatorów firmy Borland. Jeśli lubisz eksperymentować, wypróbuj Tiny C Compiler, bardzo szybki kompilator o ciekawych funkcjach. Możesz ponadto wypróbować interpreter języka C. Więcej informacji na Wikipedii.

  • Linker - najczęściej dostarczany jest razem z kompilatorem. Jest to program uruchamiany po etapie kompilacji jednego lub kilku plików źródłowych (pliki z rozszerzeniem *.c, *.cpp lub innym), po procesie kompilacji. Linker łączy wszystkie skompilowane pliki źródłowe i inne funkcje bibliotek (np. printf, scanf) które były użyte (dołączone do naszego programu poprzez użycie dyrektywy #include) w naszym programie, a nie były zdefiniowane w naszych plikach źródłowych. Wywoływany jest on na ogół automatycznie przez kompilator, przez co nie musimy się martwić jego obsługą.

Edytor tekstowy

edytuj
Systemy uniksowe oferują wiele edytorów przydatnych dla programisty, jak choćby vim i Emacs w trybie tekstowym, Kate w KDE czy gedit w GNOME. Zwykły notatnik Windowsa wystarcza do pisania prostych programów w C, choć dla wygody można spróbować poszukać w Internecie innych, wygodniejszych narzędzi, takich jak np. Notepad++. Odpowiednikiem Notepad++ w systemie uniksowym jest SciTE. Narzędziami oferującymi więcej niż edytor tekstu są IDE (zintegrowane środowiska programistyczne, opisane niżej).

Dodatkowe narzędzia

edytuj
  • strace [1]= narzędzie do analizy kodu badające interakcję programu z jądrem systemu operacyjnego. Śledzi wywołania systemowe oraz sygnały w procesie.


Debuger (opcjonalnie, wg potrzeb)

edytuj

Debugger jest to program, który umożliwia prześledzenie (poznanie wartości poszczególnych zmiennych na kolejnych etapach wykonywania programu) linijka po linijce wykonywania naszej aplikacji. Używa się go w celu określenia czemu nasz program nie działa po naszej myśli lub aby zbadać okoliczności występowania błędów. Aby użyć debuggera kompilator musi dołączyć dodatkowe informacje do skompilowanego programu. Przykładowymi debuggerami są: gdb pod Linuksem, lub debugger wchodzący w skład MS Visual Studio.

Zintegrowane środowiska programistyczne

edytuj

Zamiast osobnego kompilatora i edytora, możesz wybrać zintegrowane środowisko programistyczne (integrated development environment, IDE). Zawiera ono wszystkie potrzebne narzędzia w jednym: debuger, analizer kodu, podświetlanie składni i - najważniejsze - kompilator oraz linker. Jeśli pisalibyśmy tylko w zwykłym edytorze tekstowym, to:

  1. Utrudnione jest wychwycenie błędów – wszystko wygląda jednostajnie. Pamiętajmy, że nawet drobna literówka składniowa może spowodować, że program po prostu się nie skompiluje. IDE zazwyczaj po nieudanej kompilacji pokazuje gdzie powstał błąd, który poprawiamy i ponownie kompilujemy
  2. Edytor tekstu nie zawiera kompilatora (tak samo notepad++ i inne wzbogacone o podświetlanie składni), więc żeby uruchomić program będziemy musieli zaopatrzyć się w jakieś IDE
  3. Pomimo dużej liczby opcji, IDE nadaje się zarówno dla początkujących jak i zaawansowanych programistów.

Analiza kodu

edytuj

Dynamiczna analiza kodu

edytuj

Wśród narzędzi które nie są niezbędne, ale zasługują na uwagę, można wymienić Valgrinda[2] – specjalnego rodzaju debugger. Valgrind kontroluje wykonanie programu i wykrywa nieprawidłowe operacje w pamięci oraz wycieki pamięci. Użycie Valgrinda jest proste - kompilujemy program, jak do debugowania, następnie podajemy jako argument Valgrindowi.[3] Istnieje wersja z gui dla Gnome : Alleyoop[4]

Statyczna analiza kodu

edytuj

Istnieją również specjalistyczne programy do analizy kodu, np.:[5]

  • Lint (obecnie już nie używane)
  • Splint - rozszerzona wersja Linta[6]
  • Frama C[7]

Formatowanie kodu

edytuj

c-reduce

edytuj
  • c-reduce to narzędzie redukujące ilość kodu c,c++ lub OpenCl w przypadku raportowania błędów kompilacji

Bibliografia

edytuj
  1. Co skrywa przed Tobą program „Hello World!”? Poznaj jego tajemnice. Dodane przez Robert Bałdyga 29 kwietnia, 2018 w kategorii Linux
  2. Valgrind
  3. Manual jak używać Valgrinda
  4. alleyoop - okienkowa wersja Valgrinda
  5. List of tools for static code analysis
  6. splint - strona domowa
  7. frama-c - is an extensible and collaborative platform dedicated to source-code analysis of C software. It is Open Source software. It works on Windows and Unix (Linux, Mac OS X,…)