Podstawy programowania w C :: Podstawy programowania w C++ :: Podstawy programowania Unixa/Linuxa :: Sieci TCP/IP :: Rzeczy trochę ciekawsze :: Graficzny interfejs użytkownika (GUI) :: Multimedia :: Bliżej sprzętu i jądra :: Metody numeryczne :: Linki i moje projekty

Programowanie C/C++ (Linux)

W dziale tym zajmę się programowaniem w C i C++ głównie dla Linuxa (ze względu na wykorzystywane funkcje systemowe tego systemu i testowanie w nim prezentowanych rozwiązań). Nie będzie to jednak typowe omówienie czy kurs tego języka, prócz krótkiego wprowadzenia w podstawy tego języka, zamieszczę tutaj szereg bogato komentowanych, niewielkich programów ilustrujących poszczególne zagadnienia. Omówię również korzystanie z ważniejszych/ciekawszych bibliotek (w tym bibliotek standardowych C i C++). Na wstępie zachęcam do zapoznania się z przykładem zamieszczonym w części "wstępu do techniki" poświęconej programowaniu. Zobacz także: C @ Wikibooks, C++ @ Wikibooks, C & C++ reference, cplusplus.com.

Podstawy programowania w C

Podstawy programowania w C++

Podstawy programowania Unixa/Linuxa

Sieci TCP/IP

Rzeczy trochę ciekawsze

Warto też zajrzeć na C++0x aby zobaczyć jakie zmiany planowane są w następnej wersji standardu C++.

Graficzny interfejs użytkownika (GUI)

GTK jest biblioteką do tworzenia GUI, stworzoną na potrzeby GIMPa oraz wykorzystywaną w projekcie GNOME. Napisana jest w sposób obiektowy w języku C. Inną biblioteką do tworzenia GUI (i nie tylko ma moduły obsługi baz danych, sieci, grafiki 3D - OpenGL, ...) jest Qt, w której powstaje KDE. Jest to w pełni obiektowa biblioteka C++.

Multimedia

Dźwięk w Linuxie obsługiwany jest najczęściej przez sterowniki Alsa lub OSS - w obu przypadkach dostępne jest urządzenie /dev/dsp jednak w przypadku Alsa nie jest ono natywnym sposobem obsługi tego sterownika. Często także powyżej sterownika funkcjonują serwery dźwięku takie jak "jack" lub "arts"

Z kolei SDL jest biblioteka multimedialna, obsługująca grafikę 2D i 3D, dźwięk, urządzenia wejścia/wyjścia. W zastosowaniach graficznych wykorzystuje OpenGL (niskopoziomowy interfejs graficzny). OpenGL posiada również własne wyżej poziomowe biblioteki (GLU, GLUT, GLUI, ...). Można powiedzieć że SDL stanowi swego rodzaju wieloplatformowy odpowiednik dla DirectX (OpenGL jest rozwiązaniem konkurencyjnym dla Direct3D).

W tym miejscu warto też wspomnieć że istnieją również wyżej poziomowe, wieloplatformowe biblioteki wyspecjalizowane w tworzeniu gier, takie jak: Allegro (grafika 2D), Crystal Space (grafika 3D), ... .

Zobacz w Sieci: Strona domowa Janusza Ganczarskiego - OpenGL, OpenGL Shading Language Tutorials and Demos, GLSL Tutorial, Grafika 3D - OpenGL, Tutoriale do OpenGL na spacesimulator.net, Kurs programowania GLUT, Jaka metoda generowania dynamicznych cieni?, oficjalna dokumentacja OpenGL (man pages, specifications, ... for OpenGL, GLUT, GLU, GLX, ...), Shader, Opengl, GLUT, OpenGL Shading Language, OpenGL Shading Language @ Wikibooks, OpenCL. Interesujące jest także wykorzystanie dostępnych na wolnych licencjach bibliotek / silników obsługi grafiki trójwymiarowej, takich jak OGRE, Irrlicht, Crystal Space. Zobacz w Sieci: Kurs Irrlicht, C++, OGRE @ Wikibooks.

Bliżej sprzętu i jądra

Oczywiście oprócz zaprezentowanych w powyższych przykładach technik programowania modułów jądra. Linux oferuje wiele innych udogodnień - np. kolejki kfifo (bufory cykliczne). Należy zaznaczyć też iż programowanie jądra wymaga szczególnej uwagi gdyż wiele z mechanizmów chroniących programy uruchamiane w przestrzeni użytkownika tutaj nie funkcjonuje. Ponadto szczególną uwagę należy zwrócić na niemożność używania wielu funkcji w obsłudze przerwań.

Metody numeryczne

Jest to zbiór funkcji prezentujących podstawy metod numerycznych. Jako że programy te napisałem pewien czas temu nie jestem w stanie obecnie zagwarantować że działają one w pełni poprawnie. Więcej o metodach numerycznych także na Strona o Metodach Numerycznych.

Zachęcam także do zapoznania się z moimi projektami związanymi z językiem C/C++: Sterowanie magnetowidem, detekcja radiometeorów, powiadamiacz o IM dla jabberd2 (serwer - mysql, autoryzacja PAM, parsowanie napisów, klient - AVR NutOS), sterownik ogrzewania (AVR), sterownik oświetlenia (AVR).

Zobacz w Sieci: C++ bez cholesterolu, KDMwiki - Programowanie (głównie o uruwnoleglaniu obliczeń), Serwis Numeryczny ICM, Wiki o C/C++, niekompatybilności między C a C++, libftdi, libmodbus, Optimizing C++, C++ Programming As A Set Of Problems.



Copyright (c) 1999-2015, Robert Paciorek (http://www.opcode.eu.org/), BSD/MIT-type license


Redystrybucja wersji źródłowych i wynikowych, po lub bez dokonywania modyfikacji JEST DOZWOLONA, pod warunkiem zachowania niniejszej informacji o prawach autorskich. Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użytkowania tego dokumentu/programu oraz za wykorzystanie zawartych tu informacji.

This text/program is free document/software. Redistribution and use in source and binary forms, with or without modification, ARE PERMITTED provided save this copyright notice. This document/program is distributed WITHOUT any warranty, use at YOUR own risk.

Valid XHTML 1.1 Dokument ten (URL: http://www.opcode.eu.org/programing/c_cpp) należy do serwisu OpCode. Autorem tej strony jest Robert Paciorek, wszelkie uwagi proszę kierować na adres e-mail serwisu: webmaster@opcode.eu.org.
Data ostatniej modyfikacji artykulu: '2015-10-10 11:57:17 (UTC)' (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).