Piękny kod
Jako programista, który przeczytał już kilka podręczników pewnie szukasz źródeł inspiracji na temat programowania i rad od ekspertów – programistów, którzy stworzyli narzędzia których używasz. Mam dla Ciebie taką właśnie książkę.
Jakiś rok temu napisałem program rozszerzający rzeczywistość (Augmented Reality). Prototyp projektu składał się ze wskaźnika „laserowego”, zwykłej kamerki internetowej i programu napisanego w C#. Program odczytywał obraz z kamerki, która była skierowana na przykład na ścianę pokoju. Przesuwanie wskaźnikiem po tej ścianie było rozpoznane przez program i wykonywało określone czynności w programie. Tak więc kiedy przesuwałem po ścianie wskaźnikiem w prawo – uruchamiała się następna piosenka w odtwarzaczu muzyki, a kiedy w lewo – poprzednia. Koncepcję można było rozwijać, aby uzyskać różne gesty myszy powodujące różne akcje. Myślę jednak że poza rozrywką taki projekt nie ma szans na sukces, co zresztą później potwierdziło się, ponieważ takie projekty były już realizowane od 2005 albo i wcześniej.
Ale nie o tym chciałem. W tym projekcie potrzebowałem przetwarzać obraz z kamery (320×240 albo i więcej) tak aby znaleźć położenie punktu na powierzchni. Musiałem to robić szybko, przynajmniej 20x na sekundę. Okazało się, że w .NET jest to dosyć duże wydanie. Są oczywiście gotowe biblioteki do przekształceń na obrazach, ale żadna ze znalezionych nie nadawała się do operacji w czasie rzeczywistym. Na potrzeby projektu napisałem własne przetwarzanie upraszczając wymagania wobec algorytmu dokładnie do moich potrzeb. Uznałem wtedy, że nawet jakbym znalazł bibliotekę w C++ albo w Assemblerze nie pozwoliłoby mi to na zapewnienie kompatybilności ze wszystkimi systemami w przyszłości. Bez zgłębiania tematu skończyłem projekt głównie dlatego, że rozpoznałem tematy, które mnie wtedy interesowały czyli korzystanie z kamery z poziomu C# i kontrolowanie odtwarzacza muzyki.
Gdyby nie książka Andiego Oramy i Grega Wilsona to pewnie nie przypomniałbym sobie wczoraj o tym projekcie. Otóż w książce „Piękny kod – Tajemnice mistrzów programowania” znalazłem wspaniały tekst Charlesa Petzolda pt. „Generowanie w locie kodu do przetwarzania obrazów”. Jest to jeden z guru programowania na Windows, który zaczął swoją freelancerską karierę przez pokazywanie ludziom z magazynu komputerowego PC Magazine swojego oprogramowania. Zaczął pisać książki i artykuły o programowaniu na Windows i został jego fanem do tego stopnia, że wytatuował sobie jego logo na ramieniu.
Tekst zamieszczony w „Pięknym kodzie” to historia od pojawienia się problemu do jego rozwiązania. Problem który miał Charles był taki sam jak ja – za wolne operacje na obrazie aby robić to w czasie rzeczywistym. Charles zaczyna od historii BitBlt w Windows (plagiat od Alto), po czym opisuje swój problem i po kolei pokazuje jak doszedł do rozwiązania które sprawiło, że kod jego kodu stał się 4 razy szybszy.
I taka właśnie jest ta książka. Zawiera perełki spośród tekstów wielkich programistów naszych czasów. Czasem trzeba wybaczyć nieumiejętności literackie, czy nadmiar kodu, ale ostatecznie każdy w tej książce znajdzie coś dla siebie. Uprzedzam jednak że nie jest to lektura do której można podejść z marszu. Po drugim, trzecim podejściu jednak docenisz jej zawartość.
Książka porusza takie tematy jak: wyrażenia regularne, edytor delty w Subversion, pisanie pięknego kodu, wyszukiwanie, gramatyka BNF, optymalizacja kodu, testy akceptacyjne, generowanie kodu w c#, operatory. Oprócz tego też: komunikacja, programowanie niskopoziomowe, bioperl, gene sorter, eliminacja Gaussa, sterowniki w Linuxie, systemy niezawodne (misja marsjańska), programowanie rozszerzone, współbieżność, abstrakcja składni, architektura REST, kontrola wersji, interfejsy użytkownika, w tym dźwiękowe i debugowanie.
Jeżeli chodzi o autorów to znajdziemy tutaj m.in. Joe Bentleya, Jeffa Deana, Briana Hayesa, Piotra Łuszczeka (Jak piękny kod ewoluuje razem ze sprzętem).
Chętnie zostawiłbym tą książkę w swojej bibliotece, ale przekazałem ją na nagrodę w konkursie Dotnetomaniaka. Ale to szczytny cel i bardzo się cieszę z tego konkursu. Mam nadzieję, że dzięki m.in. takiej inicjatywie jak Dotnetomaniak wkrótce będziemy mieli zebrane najlepsze teksty polskich programistów.
Przygotowałem dla Ciebie wpisy:
Dodaj do Sfory | Dodaj do Wykopu | Dodaj do Osnews
Brak komentarzy »
Kanał RSS z komentarzami do tego wpisu. TrackBack URI
Dodaj komentarz
WordPress, Pool Theme - Borja Fernandez - mod
