29 maj 2008

C++ Programowanie zorientowane obiektowo

Autor: Nicolai M. Josuttis
Wydawnictwo: Helion

Była to moja pierwsza książka o programowaniu w C++. Kupiłem ją na początku liceum i korzystam do dziś. Przyznam, że decyzja o jej zakupie nie była zbytnio przemyślana - wybrałem ją po pobieżnym przeglądnięciu spisu treści. Książka zaczyna od ogólnego wprowadzenia do programowania obiektowego, wyjaśniając typowe pojęcia, typu: polimorfizm czy hermetyzacja danych. Następnie dosyć typowo, czyli "Hello world" i opis podstaw: od instrukcji sterujących i typów danych po wskaźniki, wyjątki i zarządzanie pamięcią. Programowanie zorientowane obiektowo zaczyna sie od rozdziału czwartego, gdzie tworzymy pierwszą klasę. Następnie autor opisuje przeciążanie operatorów, rozwija temat konstruktorów i referencji aż dochodzi to obsługi błędów przez zastosowanie wyjątków. Wszystko opisane jest przystępnym i dość prostym językiem, aczkolwiek nie jest to "Symfonia C++" - stosunek treści dotyczącej programowania do ilości, stron, w tym wypadku, wychodzi na plus ;) Kolejne rozdziały traktują o dziedziczeniu, polimorfizmie a także o składowych dynamicznych i statycznych, którym autor poświęca dość dużo uwagi. Nieco mniej miejsca przeznacza na szablony i bibliotekę STL, ale od tego są już inne pozycje na rynku. W wielu przypadkach autor skupia się na szczegółach działania poszczególnych kawałków kodu, np. konstruktorów czy przeciążonych operatorów. W jasny sposób tłumaczy zasady ich działania, ucząc wielu dobrych praktyk programowania. Wspomina także o aspektach często pomijanych w innych podręcznikach (wyszukiwanie Koeninga, czy wskaźniki na składowe klas). Bardzo dobrze wytłumaczone jest dynamiczne zarządzanie pamięcią na przykładzie klasy zarządzającej łańcuchami znaków. Nawet po zaznajomieniu się z całością książki nie odstawimy jej na półkę, by mogła pokryć się grubą warstwą kurzu. Jasny i czytelny układ wraz z dobrze opracowanym indeksem, pomagają w szybkim wyszukiwaniu konkretnych informacji. Podsumowywując - książka będzie idealnym prezentem dla osób chcących uporządkować bądź pogłębić swoja wiedzę na temat programowania w C++ ;)

17 maj 2008

penspinning... ;)

Cóż to jest? Według PSPedii jest to jedna z odmian żonglerki kontaktowej, w której używanym przedmiotem jest długopis, lub coś co go przypomina. Spotkałem sie także z określeniem "ekstremalny sport manualny" :). Jak możemy uprawiać ów sport? Na początek musimy mieć pen. Jest to spreparowany długopis bądź ołówek za pomocą którego możemy wykonywać różnego rodzaju ewolucje. Ważne by pen, był odpowiednio przystosowany - liczy się przede wszystkim wyważenie, długość i grubość. Mając taką zabawkę, możemy zaczynać. Na początku najlepiej zacząć od opanowania fundamentali, czyli czterech podstawowych tricków (charge, fingerpass, sonic, thumbaround). Jeśli będziemy umieli bez przeszkód wykonać wszystkie te ewolucje, możemy iść dalej, ucząc sie nowych rzeczy. Jak to zwykle bywa początki są trudne, choć tutaj jest na prawdę ciężko ;) O ile thumbaround może wydawać sie dość prosty, to pełne opanowanie fingerpass'a może zająć troche więcej czasu. Cóż ja mam z tym wspólnego? Hmm... W sumie to niewiele: uczę się dopiero fundamentali, jednak są już postępy. Znacznie więcej informacji, forum oraz masę kursów możemy znaleźć pod adresem penspinning.pl. Jest to największy polski serwis poświęcony tej tematyce. Sport pochodzi z Japonii, więc z tego regionu jest najwięcej filmików na youtub'ie. Oto jeden z nich ;)

06 maj 2008

Triki najlepszych programistów gier 3D

Autor: Andre LaMothe
Wydawnictwo: Helion

Książka ta, jest jedną z najbardziej opasłych pozycji dotyczących programowania gier na naszym rynku. Ma ponad 1300 stron i równie sporo waży. Ogólnie rzecz ujmując, jest to kompendium dla osób, które próbują napisać własny render software'owy. Jest tam opisane to krok, po kroku: od wyświetlania pojedynczego punktu na ekranie, po rendering oświetlonych, oteksturowanych scen 3D. Jednak, czy opłaca sie wydawać 150 zł, na książkę, która opisuje już dość przestarzałą i mało popularna technikę renderingu software'owego? Nikt przecież dziś nie będzie pisał od początku własnych procedur kreślenia trójkątów, mając do dyspozycji znacznie wydajniejsze metody dostępne w Direct3D czy OpenGL, które w dodatku korzystają z mocy najnowszych kart graficznych. Podręcznik ten opisuje jednak znacznie szerszy zakres materiału. Obowiązkowo znalazł sie rozdział traktujący o matematyce. Na ok. 100 stronach autor w bardzo przejrzysty i czytelny sposób wytłumaczył operacje na wektorach, macierzach, liczbach zespolonych, kwaternionach i wielu innych tworach matematycznego świata. Jest tam zawarta cała matematyka 3D, której znajomość jest niezbędna w programowaniu gier. Mało tego. Autor poświecił oddzielny rozdział na opisanie implementacji tych metod, z których korzysta sie podczas tworzenia gry. We wprowadzeniu, zawarty jest ogólny zarys działania i architektury silnika. Jest tam opisanych kilka rodzajów enginów a do każdego są przykłady wykorzystujących go gier. Osobny rozdział jest poświęcony podziałowi przestrzennemu i algorytmom określania widoczności. Jest to jeden z najlepszych opisów, z jakim sie spotkałem, takich struktur jak: BSP, PVS, BHV , OctTree. Czytając te książkę poznamy także zasady działania jednostki FPU, nauczymy się ją programować, a także poznamy podstawy pisania kodu używającego SIMD. Książka ma jednak jedną wadę: dość nieporęczny rozmiar i waga. Trudno sie ja czyta w podróży, trzymając ja w ręku i równie ciężko nosi w plecaku ;)

Więc, jeśli masz w kieszeni kilka złociszy i chcesz trudzić sie tworzeniem gier - zachęcam do kupna. :)

04 maj 2008

Pierwszy wpis

Witam na moim devBlogu! Jest to pierwszy wpis więc zbyt dużo nie będzie. Postaram się zamieszczać informacje o moich aktualnych projektach i trochę informacji o sobie.