Książki informatyczne dzielą się z grubsza na dwie grupy.
Pozycje inżynierskie to opisy składni języków programowania, podręczniki administrowania systemami czy aplikacjami, wskazówki dotyczące korzystania z programów użytkowych. Trafiają się tu rzeczy wybitne (powiedzmy - Wyjątkowy język C++) trafia chłam (zlituję się), ale czy chodzi o zaawansowane strojenie wydajności baz Oracle, czy o naukę Excela w 21 dni, zawsze ostatecznie mamy do czynienia z specjalizowaną instrukcją użytkownika jakiegoś programu.
Pozycje uniwersyteckie to drugi biegun. Drobiazgowe formalizmy matematyczne, teoretyczne modele poprawności i wydajności, twierdzenia z dowodami, klasyfikacje i hierarchie. Bardzo często odkrywcze, wybitne pomysły i algorytmy ale - całkowity brak kontekstu realnego zastosowania.
Można je czytać z dużym zaciekawieniem, ale od - powiedzmy - książki o geometrii obliczeniowej do oprogramowywania wizualizacji, droga niesłychanie daleka.
Książki próbujące połączyć te dwa światy są bardzo rzadkie i cenne. Dlatego postanowiłem napisać kilka słów o Programming Collective Intelligence.
Książka Tobiego Segarana zajmuje się problemem analizy danych (tytułowa zbiorowa inteligencja dotyczy masowych zachowań ludzi - choćby użytkowników serwisów webowych - z których można próbować wyciągać wnioski). Opisany jest spory zestaw przydatnych algorytmów, od filtrowania bayesowskiego, po programowanie genetyczne i zaawansowane techniki optymalizacyjne. Każdy algorytm jest przedstawiony wystarczająco dokładnie, by zrozumieć ideę i metodę jego działania - ale zamiast wchodzić w drobiazgową analizę poprawności, autor daje namiary na biblioteki zawierające dobrej jakości gotową do użycia implementację.
Wszystkie (liczne) przykłady są kompletne i działające, gdy autor zajmuje się analizowaniem trendów giełdowych, zaczyna od kodu ściągającego odpowiednie dane z internetu i parsującego je do przydatnej do obróbki postaci, a gdy grupuje blogi w grupy o zbliżonym temacie, kończy tworząc plik graficzny z przyjemnym grafem. Kwestie zebrania i przygotowania danych do analizy oraz prezentacji wyników są równie ważne, jak działanie samego algorytmu. Aha: przykłady są w Pythonie.
Autor dyskutuje też bardzo szczegółowo, które algorytmy mogą być przydatne do jakiego typu zastosowań, jakie mają zalety a jakie ograniczenia - z swoistym drzewem decyzyjnym pod koniec książki włącznie.
Do tego wszystkiego, Tobi Segaran pisze lekkim, przyjemnym językiem, Programming Collective Intelligence się po prostu fajnie i szybko czyta.
Bardzo, bardzo polecam. Dla osób, którym grozi analizowanie ruchu i zachowań na serwisie społecznościowym, strojenie miejsc i warunków prezentacji reklam, prezentowanie skorelowanych produktów w sklepie internetowym, czy strojenie filtra antyspamowego - wiedza niesłychanie cenna.