Już w czasie studiów pracował jako programista i tworzył aplikacje, które dziś spotykamy np. w taksówkach. W domu ma dziewięć komputerów: pięć do różnego rodzaju prac, jeden do gier i dwa do pracy w terenie. Badania prowadzone w ramach doktoratu poświęcił aplikacjom wielowątkowym. Przygotowaną na naszej uczelni rozprawę doktorską pt. „Metoda wykrywania konfliktów zasobowych w aplikacjach wielowątkowych” obronił z wyróżnieniem.
Z dr. inż. Damianem Giebasem rozmawiamy o pracy nad doktoratem, o miłości do komputerów oraz o przyszłości zapisanej w aplikacjach.
Czym jest aplikacja wielowątkowa?
– Samo pojęcie brzmi może mało przystępnie, ale aplikacje wielowątkowe spotykamy na każdym kroku: w naszych komputerach, w smartfonach. Korzystamy z nich na co dzień: w domach, w pracy, załatwiając sprawę w urzędzie, idąc do lekarza czy robiąc zakupy. Jednak, mimo że otaczają nas wszędzie, to niewiele jeszcze o nich wiemy. Z punktu widzenia informatyki programowanie wielowątkowe, w efekcie którego powstaje taka aplikacja, to jeden ze sposobów pisania programów. W tego typu aplikacjach różne operacje wykonywane są równolegle. W takiej sytuacji o problem z synchronizacją poszczególnych działań wykonywanych w różnych wątkach nie jest trudno.
Jaki jest na to sposób?
– Te rozwiązania są wykorzystywane w tworzeniu np. przeglądarek internetowych, ale i w aparaturze medycznej. W związku z tym aplikacje wielowątkowe wymagają bardziej ścisłej opieki niż aplikacje jednowątkowe. Powinno to zagwarantować, że operacje będą wykonywane w zamierzonej kolejności także by zapobiec zawieszeniu się programu. Bo pół biedy, jeśli zawiesi się nam przeglądarka Internetu: zamykamy karty, resetujemy komputer i wszystko znów działa jak należy. Gorzej, jeśli awaria nastąpi w samochodzie, w którym na komputerze pokładowym też działają różne aplikacje, w tym aplikacje wielowątkowe. A co jeśli posłuszeństwa odmówi nam aparatura na sali operacyjnej? Na wielu urządzeniach medycznych też działają aplikacje wielowątkowe. Nie możemy dopuścić do sytuacji, w których te urządzenia przestają działać, np. w trakcie bardzo skomplikowanej operacji.
Skąd taki obszar zainteresowań?
– Na początku badań chciałem zająć się kompresją, czyli zmianą sposobu zapisu informacji w celu zmniejszenia jej objętości. Chodzi o przedstawienie tego samego zestawu informacji, lecz za pomocą mniejszej liczby bitów. Kiedy jednak zrobiłem rozeznanie, okazało się, że ten temat jest już dość dobrze opracowany. Kompresji poświęcono liczne badania i publikacje. Jestem programistą w jednej z firm z branży IT. Posiadam ośmioletnie doświadczenie zawodowe i właśnie praca podsunęła mi problem naukowy. Na kłopoty natrafiłem podczas testowania jednej z aplikacji. Okazuje się, że w czasie korzystania z aplikacji wielowątkowych wykonywanie pewnych czynności naraz może skończyć się konfliktem, który może doprowadzić m.in. do zawieszenia się urządzenia. Postanowiłem podczas rozwiązywania tego problemu skorzystać z monografii mojego promotora, profesora Politechniki Koszalińskiej, dr hab. inż. Grzegorza Bocewicza. Znalazłem w niej matematyczne schematy, które pasowały do mojej sytuacji. Pomyślałem o tym, by zastosować te obliczenia. Niestety, nie udało się uzyskać tak pozytywnych efektów na jakie się nastawiłem, ale otworzyło mi to pewną furtkę.
W jaki sposób rozwinął więc Pan swoje badania?
– Zacząłem opracowywać i testować coraz to nowsze rozwiązania. Powoli wyciągałem z tych matematycznych schematów to, co było mi potrzebne. Aby przetestować kolejne rozwiązania przygotowałem cały szereg mikroaplikacji, które różniły się między sobą drobnymi szczegółami. Dalej w procesie testowania mojego modelu nanosiłem poprawki, a następnie sprawdzałem tego efekt na wcześniej opracowanych mikroaplikacjach. Jeśli nie, to nanosiłem kolejne poprawki. Znów robiłem testy i tak wiele razy. Czasem wydawało się, że już wszystko pasuje, sprawdzałem ostatni element w danej aplikacji i … trzeba było wszystko zaczynać od początku, ponieważ czegoś nie uwzględniłem. Ostatecznie jednak udało się, a rezultaty tych badań opisałem w pracy doktorskiej. Cały problem, któremu poświęciłem badania i stworzyłem pracę doktorską, polega na tym, że można spędzić dziesiątki godzin na sprawdzaniu aplikacji, a ona może przestać działać chwilę po podpisaniu raportu, że wszystko jest dobrze. Dzisiaj technologia poszła tak mocno do przodu, że czasem nawet sam programista nie wie, że tworząc jakiś program korzysta z mechanizmów wielowątkowych.Dlatego podjąłem się próby stworzenia metody wykrywania błędów i tym samym wsparcia programistów przy tworzeniu takich aplikacji.
Co to znaczy?
– Wśród informatyków krąży takie powiedzenie: „problem znajduje się między krzesłem a klawiaturą”. Oznacza to, że mimo rozwoju technologii czynnik ludzki jest decydujący. Jesteśmy tylko ludźmi i popełniamy błędy np. tworząc narzędzia jakimi są języki programowania. Potem stosujemy te narzędzia, więc i nasze programy nie są idealne. Pracuję w przemyśle i wiem, ile pracy trzeba włożyć w to, by powstał nowy program, aplikacja komputerowa czy gra. Często trwa to kilka lat. A pod koniec, przed wprowadzeniem na rynek, i tak pojawia się lęk, że jakiejś sytuacji nie udało się przewidzieć, że nastąpi awaria urządzenia, w rezultacie której ktoś może ucierpieć. W świecie powstają już autonomiczne samochody, które nie potrzebują obsługi i unikają wypadków. Ale przecież urządzenie może się zepsuć i wtedy może dojść do tragedii. Tak też może się stać podczas operacji, gdy nagle zawiesi się aparatura podtrzymująca życie.
Czy ta zawodność technologii nie napawa Pana lękiem?
– Oczywiście. Pracuję jako programista już na tyle długo, by pewne zależności i mechanizmy poznać. W pracy badawczej korzystałem z raportów, które otrzymałem z Fundacji Mozilla. To organizacja non-profit wspierająca Firefoksa. Dopiero dzięki tym raportom uświadomiłem sobie, jak to są ogromne problemy, ile jeszcze nie wiemy jako programiści. To, czym zajmujemy się w tej chwili, to wierzchołek góry lodowej: wiele problemów będziemy musieli rozwiązać w najbliższej przyszłości. Zdarza się, że pracowałem nad czymś dwa lata temu, ale dopiero teraz ludzie to poznają. Dla mnie to jest historia, a dla ludzi teraźniejszość czy przyszłość, a i tak ta technologia potrafi być zawodna.
Jak zatem będzie wyglądać nasza przyszłość?
– O tym nie mogę powiedzieć – tajemnica zawodowa. Zobowiązuje mnie do tego umowa o pracę.
Obrona przyniosła ulgę?
– To był tylko koniec jednego z etapów. Obrona odbyła się w środę, a w sobotę miałem ślub. Chyba bardziej stresowałem się ślubem niż doktoratem (śmiech). W dniu obrony pojechałem na uczelnię, zaprezentowałem rozprawę, odpowiedziałem na pytania komisji i po ogłoszeniu wyników pojechałem załatwiać sprawy związane z weselem. Cała praca nad doktoratem tak właśnie wyglądała: przechodziłem z jednej rzeczywistości do drugiej. Dlatego, kiedy usłyszałem, że komisja doktorska proponuje, żebym otrzymał stopień doktora z wyróżnieniem, odebrało mi głos. Zupełnie się tego nie spodziewałem.
Da się połączyć pracę zawodową z przygotowaniem doktoratu?
– Wymagało to poświęcenia i ogromnej dyscypliny. Od godziny 8 do 16 byłem w pracy. Potem w domu pisałem artykuł albo opracowywałem wyniki badań. W czasie pandemii nawet nie odczuwałem różnicy: o godzinie 16 zamykałem program związany z pracą, jadłem obiad i siadałem do pisania artykułu albo rozprawy doktorskiej. Wszystko działo się przy tym samym stanowisku komputerowym. Czasem zacierały mi się granice między światem rzeczywistym a tym wirtualnym. Siedziałem 12, 14, 16 godzin przed komputerem. I kiedy przychodził ktoś z rodziny, żeby zapytać czy nie podać mi herbaty, czy czegoś do jedzenia, dziwiłem się, że jest już druga w nocy. Bywało, że łączyłem się przez komputer ze znajomymi, pytałem, jak mija im środa. A oni ze zdziwieniem zauważali, że przecież jest już piątek. Weekendy też poświęcałem na doktorat. W niedziele starałem się odpoczywać, ale nie zawsze mi to wychodziło. To był bardzo pracowity czas, ale czułem ogromną motywację.
Tylko pasjonat potrafi tak oddać się sprawie. Co Pana pociąga w programowaniu?
– Widzę świat w kategoriach informatycznych. Kiedy obserwuję jakiś proces, zaraz myślę sobie, że można by go zautomatyzować: napisać program albo przygotować aplikację. Takie myśli wciąż kłębią mi się w głowie, żyję tym całą dobę. Bywa, że w pracy mam problem, którego nie umiem rozwiązać. Ale w nocy śni mi się rozwiązanie. Rano siadam przed komputerem i je wdrażam.
Ale droga do doktoratu była chyba dłuższa?
– Kiedy miałem 10 lat, pierwszy raz zobaczyłem komputer. Wiedziałem, że to będzie moje narzędzie pracy. Potem w Internecie znalazłem darmowy podręcznik programowania: „Od zera do gier kodera”. Na początku niewiele z tej książki rozumiałem. Ale czytałem, robiłem pierwsze programy i rozumiałem coraz więcej. W liceum więcej grałem i uczyłem się, myśląc, że dostanę się na informatykę. Udało się: najpierw studiowałem w Białymstoku, później przeniosłem się na Politechnikę Koszalińską. Na trzecim roku studiów już pracowałem jako programista. Tworzyliśmy aplikacje i oprogramowania dla korporacji taksówkarskich. Niektóre z nich jeszcze dziś wykorzystują opracowane przez nas systemy. Pracowałem tam prawie dwa lata. Później przeniosłem się do firmy, która tworzy programy dla branży motoryzacyjnej. Obroniłem pracę magisterską i postanowiłem zrobić sobie przerwę od nauki. Trwało to pół roku i złożyłem dokumenty do Szkoły Doktorskiej. W ostatniej chwili znalazłem promotora i udało się. Programowanie sprawia, że można poczuć się jak stwórca, tworzyć coś z niczego. Jeśli masz pomysł, to ogranicza cię tylko technologia. Ten proces przypomina pisanie książki. Tyle, że ja nie piszę powieści, a piszę programy, przygotowuję gry i strony. Nie posługuję się językiem literackim, a językiem programowania. Informatyka to moja pasja, żyję nią na co dzień. W domu mam dziewięć komputerów, każdy służy do innego celu.
A który zmywa naczynia?
– Żaden. Ja zmywam naczynia (śmiech).
Rozmawiała Marcelina Marciniak