Posted on

Ten artyku艂 pochodzi z mojego starego bloga na kacperkolodziej.pl.

Kilka tygodni temu przeczyta艂em pierwsz膮 ksi膮偶k臋 Gynvaela Coldwinda pt. 鈥瀂rozumie膰 programowanie". Jest to lektura dla os贸b, kt贸re ju偶 wesz艂y w 艣wiat informatyki, pozna艂y jaki艣 j臋zyk programowania i rozumiej膮 podstawowe zasady dzia艂ania komputer贸w. Ksi膮偶ka jest podzielona na 5 cz臋艣ci sk艂adaj膮cych si臋 w sumie z 15 rozdzia艂贸w. Ka偶da z cz臋艣ci opisuje inn膮 dziedzin臋 informatyki.

Na pocz膮tku dowiadujemy si臋 podstawowych rzeczy o konsolach i interpreterach oraz o tym jak te narz臋dzia wp艂ywaj膮 na prac臋 programisty. Dalej autor udziela nam praktycznych wskaz贸wek, kt贸re maj膮 pom贸c czyta膰 kod napisany w nieznanym nam j臋zyku programowania.

W drugiej cz臋艣ci znalaz艂y si臋 rozdzia艂y dotycz膮ce niskopoziomowych aspekt贸w informatyki. Ta cz臋艣膰 najbardziej przypad艂a mi do gustu. W jej pierwszym rozdziale Gynvael pokazuje jak stworzy膰 prost膮 maszyn臋 wirtualn膮 wykonuj膮c膮 kod maszynowy. W kolejnych trzech rozdzia艂ach nast臋puje przypomnienie podstawowych informacji z zakresu kodowania liczb ca艂kowitych, zmienno i sta艂oprzecinkowych oraz liter. Jest to idealne wprowadzenie dla os贸b, kt贸re chc膮 zacz膮膰 programowa膰 aplikacje niskopoziomowe w C czy nawet w Asemblerze.

Trzecia cz臋艣膰 traktuje o procesach, w膮tkach i wsp贸艂bie偶no艣ci, a tak偶e sposobach synchronizacji. Szkoda, 偶e jest taka kr贸tka. Mimo, 偶e opisuje zrozumiale najwa偶niejsze mechanizmy, to autor m贸g艂 wspomnie膰 o kilku gotowych rozwi膮zaniach, wspomagaj膮cych pisanie aplikacji wsp贸艂bie偶nych, dost臋pnych w bibliotece standardowej C++11. Moim zdaniem zawarcie przeno艣nych mechanizm贸w wsp贸艂bie偶no艣ci w bibliotece C++ by艂o, jak do tej pory, najlepszym krokiem w rozwoju tego j臋zyka.

W kolejnej cz臋艣ci otrzymali艣my dog艂臋bny opis formatu BMP. Opr贸cz tego Gynvael opisa艂 r贸wnie偶 PNG. Dla mnie by艂a to zdecydowanie najmniej interesuj膮ca cz臋艣膰 ksi膮偶ki, co nie znaczy, 偶e mnie nudzi艂a.

Pi膮ta cz臋艣膰 to opis komunikacji mi臋dzyprocesowej i podstawy komunikacji sieciowej. Jako 偶e z opisanymi w rozdziale 15 protoko艂ami TCP i UDP mia艂em ju偶 wielokrotnie do czynienia, bardziej zainteresowa艂a mnie komunikacja mi臋dzyprocesowa oparta o potoki i gniazda, w kt贸r膮 od strony programistycznej do tej pory si臋 nie zag艂臋bia艂em.

Lektura tej ksi膮偶ki pobudzi艂a we mnie zainteresowanie pewnymi tematami. Najciekawsze by艂o dla mnie tworzenie maszyny wirtualnej emuluj膮cej komputer (rozdzia艂 3.). Uwa偶am, 偶e takie zadanie jest zdecydowanie lepszym sposobem na nauk臋 architektury komputer贸w ni偶 pisanie program贸w w asemblerze na zbyt rozbudowan膮 (jak na pocz膮tek) x86.

Zdecydowanym plusem jest to, 偶e autor korzysta z r贸偶nych technologii. Opisuje zar贸wno Linuksa jak i Windowsa. Mo偶emy spotka膰 przyk艂adowe programy pisane zar贸wno w Pythonie jak i w C, C++ czy nawet Javie.

Ka偶dy kto interesowa艂 si臋 osob膮 autora wie, 偶e jest on bardzo dobrym zawodnikiem bior膮cym udzia艂 w rywalizacjach typu Capture The Flag (w skr贸cie CTF). Konkursy te polegaj膮 na odkrywaniu flag (czyli kr贸tkich fraz) ukrytych w oprogramowaniu czy niezrozumia艂ych seriach zer i jedynek. Gynvael zafundowa艂 swoim czytelnikom podobn膮 zabaw臋. Opr贸cz wielu ciekawych zada艅, w ksi膮偶ce ukryte zosta艂y flagi, kt贸re mo偶na odkrywa膰 i wpisywa膰 na specjalnie przeznaczonej do tego celu stronie internetowej.

Ksi膮偶k臋 mo偶na zam贸wi膰 na stronie wydawnictwa PWN: http://ksiegarnia.pwn.pl/Zrozumiec-programowanie,114589762,p.html

Strona internetowa Gynvaela: http://gynvael.coldwind.pl/