Książki i publikacje.

Jestem przyrodnikiem, nie informatykiem. 
Przede wszystkim piszę o tym, co domorosły, młody programista może robić z komputerem w długie wieczory. Kolekcjonuję ciekawe algorytmy i staram się je implementować w jak najprostszy sposób. Wszystko musi być jak najprostsze, przy tym bardzo kolorowe i efektowne.
Od niedawna zastanawiam się, jak połączyć efektowność programu z efektywnością nauczania programowania. Większość uczniów i studentów kierunków przyrodniczych dostaje gęsiej skórki na samą myśl o algorytmach sortujących, listach, stosach czy kolejkach.
Tymczasem zmieniła się cała epoka - pojawiły się obiekty, realizujące chyba wszystkie, możliwe do pomyślenia struktury danych i wszystkie operacje na nich. Programowanie obiektowe pozwala skoncentrować się na przyrodniczej istocie zagadnienia. Pytania np. o konstrukcje algorytmów sortowania przestają nas interesować. Zostawmy to specjalistom.
Tą książkę napisałem w 1995 roku. Jest to zbiór interesujących algorytmów, zrealizowanych w nieistniejącym, uproszczonym języku programowania i dokładnie skomentowanych. Czytelnik powinien sam napisać odpowiednie programy w swoim ulubionym języku programowania. Tytuł zdecydowanie dla programujących przyrodników.
W książce poruszam m.in.:
- zagadanienia dywanów na ustalonej powierzchni, dywanów iterowanych, dywanu IFS i Mandelbrota,
- problemy wizualizacji 3-wymiarowego świata w ruchu z prędkościami relatywistycznymi,
- wizualizację zjawisk falowych,
- zagadnienia stereoskopii i postrzegania obiektów 3-wymiarowych,
- generowanie form roślinnych tzw. algorytmem wzrostu.

Prawdziwy skarbczyk przyrodnika - programisty!
 

To napisałem w 1997 roku dla wydawnictwa Helion. Właśnie zaczynaliśmy programować w systemie Windows. Wtedy było to bardzo trudne. Pojawiły się techniki obiektowe, dzięki którym można było próbować poruszać się w gąszczu windowsowych reguł.
Powiem bardzo nieskromnie, że książka jest lepsza niż omawiany kompilator Borland C++ 5.0 wraz z biblioteką OWL. Mimo usilnych starań, nie udało mi się uruchomić regularnych zajęć dla studentów fizyki (czyli teoretycznie najlepszych programistów) w tym dialekcie. Programowalismy dalej w DOSie, Windows był jeszcze nie do przełknięcia dla standardowego studenta.
Książka w możliwie najprostszy sposób wyławia i omawia wszystkie techniki, potrzebne do napisania programu: obiekty, zasady ich konstruowania, dziedziczenie i hierarchizację, odbieranie komunikatów i sposoby reakcji na nie. Omawia też elementy interfejsu windowsowego - okienka, przyciski, edytory, ramki, guziki, suwaki itd. Przykładów dostarcza oczywiście świat przyrody - poruszamy się wśród fal, fraktali, automatów komórkowych.
Książki tej, a przede wszystkim biblioteki OWL, dzisiaj raczej nikomu już nie polecam.
Co nie udało się w 1997 roku, zrealizowałem rok później. Oto Borland pokazał kompilator Delphi i niedługo potem C++ Builder. Ci co mordowali się z Object Pascalem albo z C++ 5.0, przeżyli szok. Ja też do nich należałem. Nowe kompilatory, a właściwie nowe języki programowania, pokazały nieznaną dotąd elegancję programowania obiektowego. Programowanie jeszcze nigdy nie było tak łatwe, szybkie i efektowne.
Pamiętam, co się działo, gdy wydałem dużo prywatnych pieniędzy na zakup kompilatora C++ Builder 1.0. Bardzo niemile zaskoczyło mnie, że dialekt języka nie odpowiada dialektowi C++ 5.0, który jako tako już znałem. Gdyby nie to, że pieniądze były moje, wyrzuciłbym wszystko do kosza. Po co komu zupełnie nowy język?
Któregoś wieczora przyjrzałem się nowemu Borlandowi. Niechętnie włączyłem komputer, zły że pozwoliłem się sam sobie tak oszukać. Nowy Borland nie przypominał starego. Ale oto nacisnąłem klawisz F9 (kompiluj) i okazało się, że pierwszy program napisał się sam! Po chwili nakładłem myszką do okienka garść różnych przycisków, edytorów, guzików. Było to bez sensu, ale znów okazało się, że w 10 sekund napisałem duży program!
C++ Builder i Delphi to zupełnie nowa filozofia programowania. Młodzież tego nie doceni, dlatego są to dialekty dla Was, drodzy dinozaurowie epoki kamiennej! Jest to nie tylko łatwe programowanie pod Windows (co najważniejsze dla praktyków), ale w dodatku programowanie obiektowe, niezwykle eleganckie i bardzo skuteczne.
Książka chwyciła wsród studentów fizyki, matematyki, nawet bankowosci. Kilka białostockich uczelni już zaimplementowało regularne, obowiązkowe kursy programowania obiektowego pod Windows. Myslę, że Uniwersytet w Białymstoku był tu awangardą w naszym całym, szerokim kraju.

Wydanie II/2003

Rok 2001. W krakowskiej oficynie Edition 2000 wydałem kolejną książkę, poswięconą programowaniu w dialektach C++ Builder. Jest to wstęp absolutny - omawiam zaledwie kilka wybranych zagadnień, bez znajomości których w Builderze nie da się pracować. 
Jest to też praca o potędze programowania obiektowego - nowej, rewolucyjnej metodologii, która zdaje się przenosić akcenty pracy programistycznej w zupełnie nowe miejsca. Oto programowanie staje się łatwe, o ile dysponujemy instrukcjami obsługi obiektów - pisanie programu zaczyna przypominać budowę domku z klocków.

Poniżej znajduje się spis rozdziałów tej niegrubej (180 stron) książeczki:

C++ BUILDER.
   ZAPIS I ODCZYT PLIKÓW PROGRAMU.
   PROGRAMOWANIE WIZUALNE.
   DOPRACOWYWANIE WYGLĄDU APLIKACJI.
   OKIENKO W INSPEKTORZE OBIEKTÓW.
   PRZYCISK W INSPEKTORZE OBIEKTÓW.
   OPCJE ŚRODOWISKA C++ BUILDER.
   ZADANIA I PROBLEMY.
   ROZWIĄZANIA.
JĘZYK C++.
   PLIKI.
   KLASY.
   ZMIENNE I STAŁE, CZYLI DANE.
   FUNKCJE.
   INSTRUKCJE STERUJĄCE C++.
   ZADANIA I PROBLEMY.
   ROZWIĄZANIA.
PROGRAMOWANIE.
   REAGOWANIE NA KLIKNIĘCIE MYSZKĄ.
   ZADANIA I PROBLEMY.
   ROZWIĄZANIA.
WIĘCEJ PROGRAMOWANIA.
   EDYTORKI.
   SUWAKI.
   ZADANIA I PROBLEMY.
   ROZWIĄZANIA.
GRAFIKA.
   PŁÓTNO MALARSKIE CANVAS.
   ZDARZENIE ONPAINT – TRZEBA RYSOWAĆ!
   ZADANIA I PROBLEMY.
   ROZWIĄZANIA.
DYWAN GRAFICZNY.
   DYWAN LISSAJOUS.
   DYWAN NA USTALONEJ POWIERZCHNI.
   ZADANIA I PROBLEMY.
   ROZWIĄZANIA.
ODCZYT I ZAPIS DANYCH NA DYSKU.
   TAK ZWANY ZAPIS I ODCZYT NISKIEGO POZIOMU.
   WSKAZYWANIE PLIKÓW DO ODCZYTU LUB ZAPISU.
   ZADANIA I PROBLEMY.
   ROZWIĄZANIA.
WIĘCEJ KOMPONENTÓW.
   MENU GŁÓWNE PROGRAMU.
   MENU KONTEKSTOWE PROGRAMU.
   OBRAZEK I POSZUKIWANIE OBRAZKÓW NA DYSKU.
   ZEGAR.
   TSTRINGGRID.
   ZADANIA.
   ROZWIĄZANIA.

Wstęp
Etap poznawania środowiska
  Dywany na ustalonej powierzchni
  Grafika rozpinanej nici
  Serwetka z cykloid
Etap programowania obiektowego
  Skalowanie przestrzeni
  Składanie drgań poprzecznych
  Sumowanie drgań
  Dywany iterowane
  Przekształcenia afiniczne
Etap budowania hierarchii obiektów
  Grafika układu współrzędnych
  Konkurencja międzygatunkowa
  Logistyczne równanie wzrostu populacji
Etap rozbudowywania warsztatu 
programistycznego
  Algorytm barwy fizycznej
  Grafika wykładników Lapunowa
  Fraktal Mandelbrota
  Eksplorator fraktala Mandelbrota
  Ruch w polach sił
  Gra w Życie
  Epidemia
  Mrówka Langtona
  Jednowymiarowy automat komórkowy
 

Kolejną książkę wydał Helion - "C++ Builder - 20 efektownych programów". Jest to zbiór najciekawszych, znanych mi algorytmów i realizacja ich w formie obiektowej. Całość została tak przygotowana, by zainteresować studentów i wykładowców kierunków przyrodniczych (a także - mam nadzieję - domorosłych informatyków). Tak się bowiem składa, że schemat nauczania informatyki na fizyce czy biologii jest zupełnie inny, niż na uczelni informatycznej. Mimo, że tu i tu jest mowa o tej samej dyscyplinie wiedzy, przyrodnik oczekuje efektywnych metod rozwiązywania problemów, informatyk natomiast może zanurzyć się w całej ich teoretycznej złożoności. 
Programowanie obiektowe wydaje się być stworzone dla przyrodników. Krok po kroku, starannie dobierając przykłady, pokazuję budowę drzewa obiektów, które służą do skalowania, kreślenia grafiki układów współrzędnych, barwienia długością fali światła, itp. 
Książce towarzyszy multimedialny krążek CD, zawierający wszystkie omawiane aplikacje oraz ich teksty źródłowe.
 
Oprócz pisania książek, przez wiele lat miałem przyjemność współpracować z redakcją komputerowego miesięcznika ENTER. Prowadziłem tam całkowicie autonomicznie dział o nazwie Akademia, potem Mikroprofesor. Wzorem działu była doskonała rubryka w Scientific American, prowadzona na przełomie lat 1980 - 1990  przez niejakiego A. K. Dewdney'a, mego odległego profesora, którego nigdy nie widziałem na oczy.
W Akademii i Mikroprofesorze zajmowałem się wszystkim, co wymaga komputera, daje się opowiedzieć krótko i popularnie a przy tym jest efektowne i kolorowe. Po kilku akapitach wstępu teoretycznego kilka tysięcy domorosłych programistów odpalało swoje maszyny i zanurzało się w wirtualnej rzeczywistości. Wędrowaliśmy przez ten i inne kosmosy, gubiliśmy się w deterministycznym chaosie a pęd z prędkością podświetlną zatykał dech w piersiach. Badaliśmy fraktalne otchłanie oraz mrowiska pełne automatów komórkowych. Poznawaliśmy nawet przyszłośc.
Bardzo mile i z sentymentem wspominam Akademię i Mikroprofesora. 
Inną książkę wydał Helion w lipcu 2003 r.

Oto spis poruszanych zagadnień:

  • Implementacja barw tęczy,
  • Drgania i fale proste,
  • Fale na wodzie i ich interferencja,
  • Interferencja światła,
  • Postrzeganie głębi i geometria 3D,
  • Fotografia relatywistyczna,
  • Algorytm wzrostu, hodowla realistycznych form roślinnych,
  • Tworzenie wirtualnych przestrzeni za pomocą techniki śledzenia promieni (ray-tracing).
Książka jest poświęcona kilkunastu efektownym i niezbyt złożonym algorytmom. W głębszej warstwie stawiam przed nią ambitniejsze zadanie - ma pokazać, że współczesne programowanie obiektowe jest techniką, stworzoną dla przyrodnika, nie informatyka. Przyrodnik - uzbrojony w bibliotekę kilku kluczowych algorytmów, takich jak przezentacja 3-wymiarowa czy uzyskiwanie fizycznego koloru, swoją aplikację składa z obiektów jak z klocków. Wirtuozeria informatyczna, technika programowania wyraźnie schodzą na dalszy plan, ustępując miejsca zrozumieniu fizyki, czy nieco szerzej - Natury. Współczesne programowanie obiektowe, ciągle jeszcze nieco szorstkie, złożone i nieporadne, wyznacza nową grupę programistów - przyrodników, skoncentrowanych na swojej dziedzinie wiedzy, ale dysponujących ogromnymi możliwościami programowania.

Ta książka - mimo swego akademickiego, zapewne zbyt ogólnego tytułu (nie miałem na to wpływu ...) - ma wprowadzić nieprogramistę w świat nowoczesnego programowania obiektowego.

Seria "Fizyka i Komputer"
"Filmujemy i analizujemy zjawiska fizyczne"
Wydawnictwo MIKOM, listopad 2003.

Wiele zjawisk fizycznych, w szczególności z zakresu mechaniki i dynamiki ruchu, może być sfilmowanych i potem - klatka po klatce - odpowiednio przeanalizowanych. Ta nowoczesna, choć w swej idei bardzo prosta technika badawcza ma wręcz nieograniczone zastosowania.

Opisuję, jak z najprostszej kamery oraz współczesnego komputera uczynić subtelny zestaw pomiarowy. Dowiadujemy się, jak należy filmować ruch, potem jak z poszczególnych klatek filmu wydobyć właściwą informację, jak opracować uzyskany w ten sposób strumień danych i efektownie go zaprezentować.

Książka jest adresowana zarówno do miłośników komputerów, jak i do przyrodników, zafascynowanych otaczającym nas światem. Od Czytelnika wymagam co najmniej gimnazjalnej wiedzy z fizyki i znajomości podstaw programowania. Ponieważ przedstawiony materiał integruje bardzo rozległe umiejętności, szczególnie polecam ją szkolnym kołom zainteresowań.

Praca niniejsza zdobyła pierwsze miejsce w prestiżowym konkursie pt. "Komputerowo Wspomagany Eksperyment Szkolny w Przedmiotach Przyrodniczych", ogłoszonym przez Polskie Towarzystwo Fizyczne i Polskie Towarzystwo Chemiczne.

Seria "Fizyka i Komputer"
"Budujemy spektrometr optyczny"
Wydawnictwo MIKOM, listopad 2003.

Spektrometr jest przyrządem przeznaczonym do pomiarów składu widmowego promieniowania. Jest to bez wątpienia jeden z najważniejszych przyrządów badawczych współczesnej nauki. Szczegółowo opisuję, jak niewielkim nakładem sił i środków wykonać spektrometr optyczny, oraz jak go oprogramować, uruchomić i wyskalować. Zasadniczą częścią spektrometru jest tania kamerka internetowa. Włożyłem dużo wysiłku, by zminimalizować koszty budowy spektrometru, a jednocześnie uzyskać przyrząd na tyle stabilny, aby mógł dostarczyć interesujących danych pomiarowych.

Książka adresowana jest do szerokiej społeczności amatorów fizyki i programowania. Wymaga zainteresowania Naturą, odrobiny zmysłu majsterkowicza i umiejętności programowania w dowolnym języku. Dla tych, co programować nie lubią, załączam gotowe aplikacje, obsługujące spektrometr. Dla tych, którzy na tym przykładzie chcą doskonalić swoje umiejętności programistyczne, podaję wiele uwag na temat algorytmów w języku C++ oraz dołączam odpowiednie klasy do samodzielnego wykorzystania.

Praca niniejsza zdobyła pierwsze miejsce w prestiżowym konkursie pt. "Komputerowo Wspomagany Eksperyment Szkolny w Przedmiotach Przyrodniczych", ogłoszonym przez Polskie Towarzystwo Fizyczne i Polskie Towarzystwo Chemiczne.

Seria "Fizyka i Komputer"
"Drukujemy siatki dyfrakcyjne i soczewki Fresnela"
Wydawnictwo MIKOM, listopad 2003.

Książka opowiada o tym, jak w domowych warunkach przeprowadzić słynne doświadczenie Younga, jak samodzielnie sporządzać siatki dyfrakcyjne, jak tworzyć i obserwować obrazy interferencyjne i jak z tych obserwacji wyciągać naukowe wnioski. Można się z niej także dowiedzieć, jak zrobić soczewkę bez szkła a nawet jak kupić dobrą drukarkę. Przez serię symulacji komputerowych wyjaśniam istotę ruchu falowego, zasady sumowania ciągów falowych, istotę interferencji i dyfrakcji.

Książka adresowana jest zarówno do miłośników komputerów, jak i do przyrodników, zafascynowanych otaczającym nas światem. Od Czytelnika wymaga co najmniej gimnazjalnej wiedzy z fizyki i znajomości podstaw programowania.

Praca niniejsza zdobyła pierwsze miejsce w prestiżowym konkursie pt. "Komputerowo Wspomagany Eksperyment Szkolny w Przedmiotach Przyrodniczych, ogłoszonym przez Polskie Towarzystwo Fizyczne i Polskie Towarzystwo Chemiczne.

Seria "Fizyka i Komputer"
"C++ i przestrzeń 3d w praktyce"
Wydawnictwo TRANSLATOR, 2004.

Zagadnienie odwzorowania wymyślonej, wirtualnej sceny na ekranie należy do podstawowych algorytmów grafiki komputerowej. Istnieją na rynku gotowe, bardzo wydajne biblioteki, realizujące takie projekcje - najbardziej znane to OpenGL i DirectX.

Książka jest zupełnie elementarnym wprowadzeniem do tego zagadnienia. Wyjaśniamy pierwotne pojęcia, takie jak układy odniesienia, transformacje współrzędnych, macierze obrotu, projekcja 3d. Wszystkie problemy są dokładnie zilustrowane za pomocą licznych rysunków i przykładów. Czytelnikowi pomaga też dołączona do książki, starannie napisana aplikacja poglądowa, pozwalająca najpierw w dynamicznym ujęciu zapoznać się z zagadnieniem, zrozumieć go i wreszcie zacząć samodzielne oprogramowanie.

Książka może być także traktowana jako pierwszy, bardzo poglądowy wstęp do najważniejszych idei współczesnego programowania obiektowego z wykorzystaniem biblioteki standardowej języka C++.

Czytelnik powinien mieć odrobinę wyobraźni przestrzennej i znać zasady pisania programów w języku C++, choć nie wymagamy, by był w tym wirtuozem.

Seria "Ćwiczenia Praktyczne"
"C++. Ćwiczenia praktyczne."
Wydawnictwo HELION, 2004.

Wstęp do programowania, zrealizowany w formie zbioru 100 ćwiczeń z załączonymi rozwiązaniami. Dla początkujących programistów.

Seria "Ćwiczenia Praktyczne"
"C++. Ćwiczenia zaawansowane."
Wydawnictwo HELION, 2005.

Zaawansowane zagadnienia języka C++ w formie 100 ćwiczeń z rozwiązaniami. Dla programistów, posługujących się językiem C++ i pragnących poznać najnowsze idee, zmierzające do efektywnego wykorzystania tzw. biblioteki standardowej.

Seria "Tablice"
"C++. Tablice informatyczne."
Wydawnictwo HELION, 2005.

Najistotniejsze elementy języka, podane w formie tablic, czyli maksymalnie zwartej ściągawki.

Przymierzam się do napisania książki o tym, jak warsztat domowego przyrodnika wzbogacić algorytmami profesjonalnej grafiki OpenGL. Posługiwanie się bilioteką OpenGL uchodzi za złożone i rzeczywiście tak jest. W bibliotece tej zrealizowano kilka słynnych gier, np. Doom'a czy Quake'a. Jednak postaram się wyłowić stosunkowo prosty w obsłudze podzbiór poleceń z OpenGL, w sposób wręcz niesamowity poszerzający techniczne możliwości programisty domowego. Tylko sobie wyobraźmy - kompletny teatr 3D, z algorytmami przesłaniania i realistycznym oświetleniem!
2005.05.05