C/Czego potrzebujesz
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
[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ą:
- gcc pod systemy uniksowe,
- gcc - kompilacja pod systemy uniksowe,
- DJGPP pod systemy DOS,
- MinGW
- lcc pod systemy typu Windows,
- w64devkit: Portable C and C++ Development Kit for x64 Windows by Portable C and C++ Development Kit for x64 Windows
- wieloplatformowy Clang (część pakietu LLVM)
- Oracle Studio
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.
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:
- 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
- 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
- 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]
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]- ↑ Co skrywa przed Tobą program „Hello World!”? Poznaj jego tajemnice. Dodane przez Robert Bałdyga 29 kwietnia, 2018 w kategorii Linux
- ↑ Valgrind
- ↑ Manual jak używać Valgrinda
- ↑ alleyoop - okienkowa wersja Valgrinda
- ↑ List of tools for static code analysis
- ↑ splint - strona domowa
- ↑ 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,…)