Dr inż. Janusz Kolbusz

Prodziekan Kolegium Informatyki Stosowanej – ścieżki polskojęzyczne. Doktor nauk technicznych z zakresu dyscypliny naukowej telekomunikacja. Absolwent Politechniki Rzeszowskiej. Jego zainteresowania naukowe koncentrują się wokół tematów związanych z sieciami neuronowymi oraz rozległymi sieciami telekomunikacyjnymi. W szczególności zajmuje się praktycznym zastosowaniem takich zagadnień jak: systemy operacyjne i sieci komputerowe, Internet rzeczy, sieci neuronowe – nowe architektury, algorytmy uczące. Dorobek naukowy obejmuje ponad 50 oryginalnych prac naukowych, w tym: artykuły w czasopismach, monografiach, materiałach konferencyjnych o zasięgu krajowym i międzynarodowym.

Mgr inż. Mateusz Liput

Asystent w Katedrze Inteligentnych Systemów i Sieci. Zatrudniony w Wyższej Szkole Informatyki i Zarządzania od 2019 roku. Magister informatyki (Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie, Wydział Informatyki Stosowanej, rok 2019). Jego zainteresowania naukowe koncentrują się wokół: sieci komputerowych, bezpieczeństwa sieci komputerowych, sieci sensorowych oraz Internetu Rzeczy. Wieloletni instruktor akademii CISCO.

Dr inż. Mirosław Hajder

Pracownik Wyższej Szkoły Informatyki Zarządzania z siedzibą w Rzeszowie. Posiada wieloletnie doświadczenie zawodowe w przemyśle, edukacji i szkolnictwie wyższym. Zainteresowania naukowe wiąże z cyberbezpieczeństwem, sieciami sensorowymi, Internetem rzeczy oraz metodami prognozowania w sytuacjach kryzysowych, a praktyczne z wykorzystaniem informatyki w projektach interdyscyplinarnych. Autor ponad 200 publikacji naukowych i popularno-naukowych, kierownik kilkunastu projektów badawczych, organizator wielu konferencji i seminariów naukowych. We wdrażaniu nowoczesnych technologii informatycznych współpracował z kilkudziesięcioma przedsiębiorstwami.

Mgr inż. Piotr Hajder

Pracownik Akademii Górniczo-Hutniczej w Krakowie. Naukowo zajmuje się wykorzystaniem metod uczenia maszynowego w nauce i technice. Autor kilkudziesięciu publikacji w czasopismach naukowych, monografiach wieloautorskich, materiałach konferencyjnych oraz kilku monografii. Brał udział w wielu konferencjach naukowych w kraju i za granicą. Zainteresowania praktyczne wiąże z wykorzystaniem metod sztucznej inteligencji w przemyśle, bezpieczeństwie oraz obronności. Jest autorem bądź współautorem rozwiązań technicznych wykorzystywanych w przedsiębiorstwach przemysłowych, administracji samorządowej oraz obronności kraju.

Czy sztuczna inteligencja wyeliminuje informatyków z rynku pracy?

Studiując różne antologie literatury fantastyczno-naukowej XX i XXI wieku łatwo zauważymy, że jednym z ulubionych tematów są zagrożenia istnienia i rozwoju naszej cywilizacji. Najczęściej pojawiają się: ataki bardziej rozwiniętych obcych form życia, pogorszenie warunków egzystencji na Ziemi do poziomu uniemożliwiającego dalsze przebywanie na niej oraz utrata kontroli człowieka nad inteligentnymi maszynami. Opis zagrożeń czyhających na nas w przyszłości to nie tylko temat powieści, opowiadań czy komiksów, są one również tematem wielu fascynujących filmów. Odpowiedzią na pytanie, czy wymienione zagrożenia są rzeczywiste, oraz które z nich są szczególnie niebezpieczne, zajmują się futurolodzy i to właśnie im pozostawmy rozstrzygnięcie tego problemu.

Niestety w ostatnim czasie, nie tylko w publikacjach przeznaczonych dla szerokiego kręgu odbiorców, zasygnalizowano nowe niebezpieczeństwo dotyczące wybranej wąskiej grupy zawodowej. W wielu z nich, autorzy wątpią w celowość udziału człowieka w nowych projektach z obszaru technologii informatycznych IT. Niektórzy uważają wręcz, że udział ludzi w tworzeniu dóbr intelektualnych będzie systematycznie zmniejszał się, a rolę człowieka przejmie sztuczna inteligencja AI. Sugestie te są potwierdzane statystykami, z których wynika mniejsze zainteresowanie zatrudnianiem specjalistów, z niektórych wąskich obszarów informatyki. Jednak statystyki te wymagają wyjaśnienia, chociażby z tego powodu, że w większości innych dziedzin IT nadal obserwujemy istotny deficyt inżynierów. Rodzi się zatem pytanie: czy przejmowanie pracy ludzkiej przez sztuczną inteligencję nie jest wymysłem publicystów, którzy bardzo często w celu zwiększenia popularności swoich tekstów propagują nie do końca sprawdzone tezy. Często trafiają one na podatny grunt, najczęściej wśród osób, dla których informatyka jest hobby, a nie wykonywanym zawodem. Informatyków amatorów należy jednak usprawiedliwić: każdy z nas, kto miał do czynienia z voicebotem – głosową wersją chatbota, wykorzystywanym do komunikowania komputera z żywą osobą, jest pod wrażeniem sposobu prowadzenia konwersacji. Poczynione obserwacje rodzą przekonanie, że człowiek jest w tym przypadku zbędny, a maszyny sprawdzają się w roli rozmówcy nie gorzej od fizycznych osób. W wielu przypadkach klientowi trudno jest stwierdzić, czy rozmawia z komputerem, czy też z fizycznym człowiekiem. Właśnie w tym miejscu, na zetknięciu człowieka i komputera, po raz pierwszy pojawia się przekonanie, że komputer posługujący się językiem naturalnym opanował również umiejętność myślenia podobnego do ludzkiego.

elements.envato.com

Aby rozwiązać ten dylemat jeszcze w 1950 roku wybitny angielski uczony Alan Turing zaproponował test, który miałby dać odpowiedź na to pytanie. Ideę testu można opisać następująco: prowadzący go człowiek komunikuje się z jednym komputerem i jedną osobą. Robi to w ten sam sposób, przykładowo za pomocą klawiatury i monitora. Człowiek przez 5 minut zadaje pytania obu uczestnikom i na podstawie odpowiedzi musi określić, czy rozmawia z osobą czy też z komputerem. Jeśli po zakończeniu testu człowiek udzieli błędnej odpowiedzi lub nie będzie w stanie określić, kto jest kim – test zostanie zaliczony. Zdaniem Turinga oznacza to, że program potrafi myśleć jak człowiek.

Już po śmierci Turinga pojawiło się kilka wariantów tego testu, których istota była zawsze taka sama: jeśli dana osoba nie jest w stanie odróżnić działań komputera od działań człowieka, test uznaje się za zdany. Ponieważ w dzisiejszych czasach test Turinga przeszłaby większość wykorzystywanych profesjonalnie chatbotów czy voicebotów, stracił on na swoim znaczeniu. Wraz z pojawieniem się sieci neuronowych i dużych modeli językowych (ang. Large Language Model, LLM) formalne zdanie testu Turinga stało się znacznie łatwiejsze, wręcz banalne. ChatGPT już w 2023 bezproblemowo przeszedł test Turinga, a według informacji z 2024 roku zdał go lepiej od człowieka.

Na pierwszy rzut oka, powyższa analiza nie brzmi optymistycznie dla pracowników sektora IT. Niepokój wzbudza także doświadczenie z innych obszarów nauki, techniki czy sztuki. Sztuczna inteligencja jest obecnie masowo wykorzystywana w rozrywce, gdzie służy do: tworzenia dialogów w grach komputerowych, produkcji filmów, generowania tekstów literackich czy dzieł muzycznych. Znaczna część współczesnych twórców widzi przyszłość specjalistów IT w czarnych barwach i sprowadza ją do ciągłego konkurowania z inteligentnymi maszynami. Trudno jest polemizować z artystami pracującymi w nurcie fantastyki naukowej. Ich rozważania dotyczą odległych czasów, dla których nadzwyczaj ciężko przewidzieć ówczesny stan techniki.

elements.envato.com

Dlatego, w dalszych rozważaniach ograniczmy się do współczesności i odpowiedzi na pytanie: czy sztuczna inteligencja może wyłączyć specjalistów IT z aktywności zawodowej? Innymi słowy zastanowimy się czy warto być dzisiaj informatykiem?

Odpowiedź na to pytanie nie jest tak jednoznaczna jak głoszą nagłówki pojawiających się wiadomości. Prawdopodobnie będziemy świadkami pozytywnych zmian w tym obszarze, ale tylko wtedy, kiedy zaakceptujemy nową rzeczywistość. Wymagać to będzie przedefiniowania roli informatyka w funkcjonowaniu współczesnej nauki, gospodarki czy administracji. Przed pracownikiem sektora IT stawiane będą jeszcze wyższe wymagania, w szczególności dotyczące jego kreatywności zawodowej. Jednak, nawet pobieżna analiza wskazuje przynajmniej na 6 powodów, dla których eliminacja informatyków z przestrzeni społeczno-gospodarczej będzie postępować bardzo wolno i odwlecze się na bliżej nieokreślony czas (o ile taka chwila w ogóle nastąpi). Poniżej przeanalizujemy je.

1. Przedsiębiorstwa niezmiennie potrzebują praktykujących specjalistów, stale rozwijających swoje umiejętności zawodowe

Chociaż autonomiczne samochody mogą bez udziału człowieka pokonać samodzielnie wszystkie etapy podróży, każdy z nich wyposażany jest w możliwość kierowania przez człowieka. Wbrew temu, co mogłoby się wydawać, możliwość ta jest obecnie często wykorzystywana. Dla wielu osób kierowanie samochodem to przyjemność, z której w żadnym przypadku nie chcą zrezygnować. Ponadto, całkowita rezygnacja z kierowania spowodowałaby znaczne pogorszenie umiejętności kierowcy, czego bez wątpienia nie chce nikt z jego użytkowników. Dlatego, mimo że nie jest to konieczne na wybranych fragmentach trasy, pojazdem kieruje człowiek, a narzędzia sztucznej inteligencji wspomagają go w tym. Podobne zjawisko obserwujemy w przypadku dużych samolotów pasażerskich. Współczesny liner mógłby całą zaplanowaną trasę, od kołowania na pas startowy po dojazd do miejsca wysadzania pasażerów, wykonać w oparciu o autopilota. Jednak profesjonalni piloci często korzystają ze sterowania manualnego, w szczególności podczas procedur: startu oraz lądowania, będących najtrudniejszymi i najniebezpieczniejszymi fazami lotu. Na pytanie, dlaczego załoga rezygnuje z autopilota, odpowiedź jest zawsze taka sama: aby nie stracić wprawy. Piloci dodają, że: w krytycznym momencie, kiedy automat zawiedzie, człowiek siedzący w fotelu pilota musi być gotowy do bezpiecznego sprowadzenia samolotu na ziemię. Podsumowując: chociaż współczesne systemy AI potrafią niezawodnie kierować transportem, nikt z producentów, póki co, nie ryzykuje budowy środków komunikacji masowej pozbawionych kierowcy, maszynisty bądź pilota. W wykorzystywanych obecnie pojazdach autonomicznych dominują urządzenia transportu prywatnego, takie jak samochody osobowe czy małe samoloty.

elements.envato.com

Podobne reguły obowiązują również wśród osób pracujących w obszarze technologii informacyjnych, w szczególności u programistów. Co prawda deweloperzy zlecają już sztucznej inteligencji niektóre zadania, ale są to najbardziej rutynowe i pracochłonne prace. W zadaniach, w których potrzebne jest doświadczenie i kreatywne myślenie, zastosowanie sztucznej inteligencji nie przynosi jeszcze oczekiwanych efektów. Aby podejmować niestandardowe i kreatywne decyzje dotyczące architektury systemu złożonego, nadal niezbędni są doświadczeni informatycy z kreatywnym spojrzeniem na rozwiązany problem. Osoby takie będą potrzebne jeszcze przez wiele dziesięcioleci i utrzymywanie sprawności intelektualnej i manualnej tej grupy zawodowej jest bezwzględnie konieczne.

W tym miejscu nasuwa się kolejne istotne spostrzeżenie: praca programisty nie ogranicza się do kodowania, które tak naprawdę zajmuje niewielką część jego działalności zawodowej. Inżynier oprogramowania jest również zaangażowany w formalizowanie i opis rozwiązania problemu, tak aby jego realizacja była możliwa w oparciu o komputer. Kod programu jest zawsze realizacją pomysłów i koncepcji programisty. Efektem pracy informatyków są również: projekt architektury i organizacji systemu, procedury jej testowania, dokumentacja, dobór infrastruktury przeznaczonej do realizacji całego projektu. Słusznym jest zatem stwierdzenie, że inżynieria oprogramowania nigdy nie obracała się tylko wokół kodu i jego przygotowania. Zadaniami programisty są również: dogłębna analiza oczekiwań użytkowników względem oprogramowania oraz opracowanie struktury produktu pozwalającej optymalnie wdrażać go w środowisku użytkowników.

Wszystkie powyższe zadania oparte są na eksperymencie oraz eksploracji i mają charakter iteracyjny. Przekonanie niektórych, że programista po prostu wymyśla coś, pisze kod, a następnie przekazuje do użytku oprogramowanie odpowiadające potrzebom użytkowników jest absolutnie błędne. Treść programu powstaje na bazie dogłębnych przemyśleń, które przed realizacją są sformalizowane z wykorzystaniem specjalnie do tego celu opracowanych technologii. Nawet jeżeli efektem pracy programisty jest kod, to rzadko kiedy dostarczany jest on użytkownikom przed wprowadzeniem szerszych bądź węższych poprawek. Nierzadko początkowa i końcowa wersja programu jest na tyle różna, że można sądzić, że dotyczy ona różnych produktów. Działania te są wykonywane w celu usunięcia wszelkich niejasności, fałszywych założeń oraz nieporozumień, które pojawiają się na etapie przygotowań do produkcji programu.

Warto także odnotować, że oprogramowanie nie funkcjonuje w próżni, jest ono wykorzystywane przez ludzi, a jego podstawowym zadaniem jest zaspokajanie ich potrzeb. Jest to chyba najważniejszy powód, dla którego praca inżynierów nie może ograniczać się wyłącznie do pisania kodu. Tak więc, aby oprogramowanie zostało zaakceptowane przez użytkowników wymaganych jest wiele różnorodnych działań, które przejawiają wpływ na opracowywany kod.

Analizując oferowane w sieci kursy programowania oraz scenariusze rozmów kwalifikacyjnych, można dojść do błędnego wniosku, że najtrudniejszą częścią inżynierii oprogramowania jest pisanie kodu dla konkretnego algorytmu lub funkcji. Tak jednak nie jest, kluczem jest opracowanie produktu, który z powodzeniem będzie rozwiązywać postawione przez człowieka zadania. Już obecnie sztuczna inteligencja może pomagać w wykonaniu zadań wykraczających poza pisanie kodu, uwzględniających różne niuanse ludzkich potrzeb. Być może w przyszłości nadejdzie dzień, kiedy zmiany te obejmą pracowników na wszystkich stanowiskach, innych niż programista odpowie­dzialny za tworzenie kodu. Jednak, kiedy ten dzień nastąpi i czy w ogóle, na chwilę obecną nie wiemy.

2. Zastosowanie AI do obsługi sytuacji kryzysowych jest bardzo ryzykowne

Jednym z kluczowych założeń, na których oparte jest projektowanie sprzętu i oprogramowania jest przypuszczenie, że funkcjonowanie produktu odbywać się będzie w odgórnie zdefiniowanych warunkach, akceptowanych zarówno przez człowieka jak i sprzęt techniczny. Na przykład, jeżeli smartfon nie został do tego wcześniej przystosowany, trudno oczekiwać, aby mógł on stanowić wyposażenie nurka. Sztuczna inteligencja jest stosowana tam, gdzie obszar wykorzystania opracowywanych rozwiązań jest z góry znany. Jeżeli w trakcie eksploatacji urządzenia mogą wystąpić nieprzewidziane sytuacje, jej wykorzystanie może być problematyczne. Stany takie nazywane są kryzysowymi i każdorazowo są przypisane do konkretnych zadań. Sytuacje kryzysowe mogą być konsekwencją zagrożeń środowiskowych, ale także społeczno-gospodarczych. W obu przypadkach istotną rolę w zarządzaniu nimi odgrywają narzędzia informatyki.

W latach osiemdziesiątych XX wieku panowało poparte rzeczywistym doświadczeniem przekonanie, że ówczesne państwa socjalistyczne znajdowały się w tworzonym przez rządzących permanentnym kryzysie. Nie oznacza to jednak, że mimo masowości danych system informatyczny, który miałby wspomagać zarządzanie ówczesną gospodarkę był przystosowany do takich nienormalnych sytuacji. Również obecnie, zaawansowane zmiany klimatyczne spowodowały, że niebezpieczne zjawiska pogodowe rodzące dla człowieka sytuacje kryzysowe zdarzają się znacznie częściej niż miało to miejsce jeszcze kilka czy kilkanaście lat temu. Choć kryzysy ekonomiczne oraz różnego rodzaju środowiskowe sytuacje kryzysowe zdarzają się coraz częściej, ilość danych opisujących ich pojawianie, przebieg i skutki jest znacznie mniejsza niż dla normalnych stanów gospodarki, urządzeń czy środowiska. W teorii katastrof uważanej za formalne narzędzie opisu sytuacji kryzysowych przyjmuje się, że przebieg sytuacji kryzysowych często nie jest zgodny z ich prognozą matematyczną. Spotykamy się więc z sytuacją, w której: po pierwsze – brakuje sposobów przewidywania zachowania się interesującego nas podmiotu nawet w krótkim przedziale czasowym; po drugie – dane opisujące sytuacje kryzysowe, które wystąpiły wcześniej, nie zawsze mają charakter powtarzalny. Żadna sztuczna inteligencja nie uchroni nas przed błędami, jeśli dane wejściowe wykorzystywane do jej uczenia są nieprawidłowe. AI nie zna sposobu radzenia sobie z takim problemem. Nie radzi sobie ona również z problemami, które są nietypowe i w życiu występują nadzwyczaj rzadko.

Doskonałym przykładem takiej sytuacji mogą posłużyć doświadczenia z samolotami 737 MAX firmy Boening. W latach 2018-2019 w odstępie pięciu miesięcy doszło do dwóch katastrof tych maszyn, w których zginęło 346 osób. Dochodzenie wykazało, że przyczyną był system MCAS (ang. Maneuvering Characteristics Augmentation System), zapobiegający przeciągnięciu – nagłemu spadkowi siły nośnej. System ten został pierwotnie wprowadzony, by pilotaż tym typem maszyny był identyczny, jak w przypadku zwykłego 737, flagowej wówczas jednostki Boeinga. Brak świadomości pilotów o istnieniu systemu trymującego, przy odpowiednim splocie zdarzeń, był główną przyczyną tychże katastrof. Teoretycznie można wyszkolić sztuczną inteligencję, aby radziła sobie z podobnymi awariami, ale wymaga to przewidzenia wszystkich możliwych do wystąpienia sytuacji, co z oczywistych powodów jest niemożliwe. Ponadto, człowiek musi być w pełni świadomy działania systemów, by nie zostać wprowadzonym przez nie w błąd.

3. Zdolności uczenia się AI są ograniczone i istotnie różnią się od możliwości programistów

Uczenie sieci neuronowych stanowiących bazę AI polega na badaniu ogromnych ilości informacji. Objętość analizowanych danych jest tak duża, że obecnie sztuczna inteligencja wykorzystywana jest również do automatyzacji ich analizy. Spotykamy się więc z sytuacją, że jedna sztuczna inteligencja w celu obniżenia kosztów uczy inną sztuczną inteligencję. Chociaż koszt przetworzenia jednego rekordu danych jest minimalny, to z uwagi na ich ogromną ilość koszty te są ogromne. Zapewne przez najbliższe lata obserwować będziemy różnorodne działanie, których celem będzie obniżenie kosztów uruchomienia sztucznej inteligencji w konkretnym obszarze. Źródłem danych dla rozwiązań AI mogą być biblioteki cyfrowe, czy ogólnie sieć Internet. W rzeczywistości jednak jest szereg dziedzin, dla których zbiory te nie są dostępne, a ich zgromadzenie wiąże się z ogromnymi kosztami i czasem niezbędnym do ich przygotowania. Może okazać się, że trudność ich realizacji uczyni inwestycje w sztuczną inteligencję w tym obszarze nieopłacalnymi.

Opisane powyżej zadania najbliżej powiązane są z rozpoznawaniem obiektów na analizowanym obrazie. Jeżeli mówimy o wykorzystaniu AI do tworzenia oprogramowania, to sztuczna inteligencja działa jako tłumacz słownego opisu algorytmu na język programowania. Jakość końcowego wyniku, jego zgodność z potrzebami, będzie zależeć od szczegółowości opisu zadania. Problemem nie będą małe zadania, a wyłącznie te duże. Im bardziej będą one złożone, tym bardziej precyzyjny musi być ich opis. W rezultacie może dojść do sytuacji, w której łatwiej będzie napisać kod samodzielnie, niż stworzyć wystarczająco kompletne zadanie techniczne, dla którego sieć neuronowa będzie w stanie wygenerować pełnoprawny kod.

Bezsprzecznie generowanie kodu przez sztuczną inteligencję pomoże inżynierom zaoszczędzić czas. Zoptymalizuje ona wiele zadań i przeniesie naszą uwagę na działania, w których ludzie nadal przewyższają swoimi możliwościami AI. Jest jeszcze jedna przyczyna, dla której sztuczna inteligencja nie wyeliminuje potrzeby manualnego pisania programów. Pisanie kodu, podobnie jak kierowanie samochodem, jest dla większości programistów przyjemnością. Nie bez znaczenia jest również możliwość zrozumienia napisanego kodu, czego nie zapewniają narzędzia AI.

Techniki programowania permanentnie ewoluują. W latach siedemdziesiątych i osiemdziesiątych szerokie zastosowanie znajdowały języki zorientowane maszynowo, których przykładem może posłużyć Asembler. Język ten widzi strukturę sprzętową komputera i pozwala tworzyć programy o bardzo wysokiej wydajności. Z czasem możliwości Asemblera przejęły systemy programowania, dzięki którym przy niezmiennej wydajności wykonania programu czas jego napisania był znacznie krótszy. W wielu zastosowaniach kod programu jest generowany już od wielu lat i to bez użycia narzędzi sztucznej inteligencji. Dzięki temu efektywność pracy programisty mierzona liczbą rozwiązywanych przez niego zadań znacznie wzrosła.

elements.envato.com

Służą temu coraz to nowsze języki programowania. Każdy nowy język wyższego poziomu jest sposobem na wyrażenie rozwiązania problemu w sposób bardziej elegancki i zwięzły niż było to możliwe w mniej rozwiniętych, starszych językach. Wszystkie one są sformalizowanymi przedstawieniami pojęć (na pewnym poziomie abstrakcji) związanych z rozwiązywaniem konkretnego problemu.

Biorąc za przykład technologie webowe, wersje bibliotek i frameworków zmieniają się bardzo dynamicznie, z miesiąca na miesiąc. Ponieważ nauczona AI bazuje na danych z procesu uczenia, trudno jest ocenić jakość generowanego kodu w nowszych wersjach, gdzie mogą pojawiać się nowe funkcjonalności (wersje rozwojowe) lub zanikać przestarzałe. Głównym zagrożeniem jest stworzenie takiej wersji kodu, która jest w stanie się prawidłowo zbudować, skompilować czy uruchomić, jednak może wprowadzać błąd logiczny, który stać się może swego rodzaju sofizmatem programistycznym, trudnym, nieoczywistym i czasochłonnym do wykrycia.

Niewątpliwie, w bliższej bądź dalszej przyszłości językiem programowania będzie nasz własny język nazywany w informatyce językiem naturalnym, który posłuży nam do określenia zadania stojącego przed komputerem. Najprawdopodobniej możliwości te zaoferuje nam sztuczna inteligencja.

Realizacja oprogramowania przez sztuczną inteligencję i fizycznego programistę istotnie różni się. Programista jest zawsze świadomy procesów, które kryją się pod nową abstrakcją, automatyzacją czy ulepszeniem. Dzięki temu w momencie pojawienia się nieprzewidzianej wcześniej sytuacji znajdzie on jej rozwiązanie. Współczesna sztuczna inteligencja koncentruje się na rozwiązaniu zdefiniowanego zadania i jej interpretacja problemu jest znacznie węższa. Dlatego, po napotkaniu niestandardowej sytuacji może ona przerwać rozwiązanie zadania lub skierować go na nieefektywne ścieżki.

Bezsprzecznie generowanie kodu przez sztuczną inteligencję, to istotny postęp w produkcji oprogramowania, który jednak nadal znajduje się w głównym nurcie rozwoju informatyki. Programowanie z wykorzystaniem AI zbliża się do modelowania decyzji podejmowanych w języku naturalnym, a z każdym kolejnym ulepszeniem, pisanie kodu staje się w pewnym stopniu łatwiejsze i szybsze. Wysiłek o charakterze inżynierskim wymagany od ludzi zmniejsza się, jednak świadomość wiedzy i umiejętności charakterystycznych dla człowieka nadal będzie kluczowa dla końcowego wyniku.

4. Sztuczna inteligencja nie może być pociągnięta do jakiejkolwiek odpowiedzialności

Oferując na rynku komercyjnym dowolny produkt, sprzedawca deklaruje, że jest on zgodny z przygotowanym do niego opisem technicznym. Oznacza to, że funkcje realizowane przez produkt są ściśle zdefiniowane i przewidywalne. Jeżeli deklaracje te są w jawny sposób niespełnione, sprzedawca teoretycznie niesie odpowiedzialność za szkody poniesione w trakcie eksploatacji jego produktu. W sądach często spotykamy się ze sprawami, w których klient żąda od sprzedawcy zadośćuczynienia za szkody wywołane wykorzystaniem jego produktu. Podobne restrykcje dotyczą również programistów tworzących oprogramowanie. Informatyk niesie zdefiniowaną właściwymi umowami odpowiedzialność za przygotowane przez niego kody. Problem ten jest znacznie szerszy, bowiem nie dotyczy tylko wygenerowania niepoprawnych wyników działania programu, ale również ochrony zasobów przetwarzanych przez program. Jest to szczególnie istotne w czasach, kiedy dominującym rodzajem przestępczości stała się cyberprzestępczość. Niestety, w wielu przypadkach oprogramowanie jest obecnie dostarczane bez żadnych gwarancji, a jeśli jeden programista korzysta z oprogramowania napisanego przez innych, nie jest jasne, kto ostatecznie ponosi taką odpowiedzialność.

Problem ten potęguje się, kiedy twórcą oprogramowania będzie sztuczna inteligencja, bądź to ona będzie udostępniać dane, które nie powinny zostać upublicznione. Amerykańska firma OpenAI, twórca ChatGPT przyznaje, że w przypadku 1,2% płatnych subskrybentów prawdopodobnie doszło do wycieku ich danych osobowych: imienia i nazwiska, adresu e-mail, adresu płatności, daty ważności karty i czterech ostatnich cyfr jej numeru. Pojawia się zatem pytanie: jeżeli ktoś zgodnie z obowiązującymi przepisami wykorzystywał narzędzia sztucznej inteligencji, w wyniku użycia których złamane zostało prawo, kto będzie ponosił odpowiedzialność za ten incydent?

Sztuczna inteligencja może śmiało tworzyć teksty, które stylistycznie są nie do odróżnienia od tekstów przygotowanych przez ludzi. O ile człowiek stara się, aby jego twórczość była zgodna z zasadami logiki, to dzieła sztucznej inteligencji mogą być absolutnym bezsensem. Każdy doświadczony programista wie, że niemożliwe jest stworzenie złożonego oprogramowania bez błędów, ludzka twórczość zawsze jest nimi obarczona. Podobnie w przypadku AI, ale błędy sztucznej inteligencji będą coraz bardziej złożone, trudniejsze do wykrycia i coraz droższe do usunięcia. W sytuacjach niekrytycznych, takich jak planowanie wakacji, można zaufać sztucznej inteligencji. W skrajnym przypadku zaplanuje ona podróż niezgodnie z preferencjami zleceniodawcy. Jeżeli jednak samochód kierowany przez sztuczną inteligencją spowoduje wypadek, w którym będą ofiary, istotną jest odpowiedź na pytanie: kto będzie za to odpowiedzialny? Nawet w przypadku oprogramowania zainstalowanego w zaawansowanym technologicznie sprzęcie medycznym, pomagającym lekarzowi w trakcie zabiegu, producent nie daje żadnej gwarancji bezbłędnego jego działania. Wręcz przeciwnie, umowa licencyjna stanowi, że osoba może umrzeć w wyniku zabiegu wykorzystującego dostarczony sprzęt, ale jego twórca nie ponosi za to żadnej odpowiedzialności.

5. Nauczanie młodych ludzi jest znacznie bardziej opłacalne niż nauczanie AI

W biznesie korporacyjnym znane jest powiedzenie, że największą wartością każdego pracodawcy są jego pracownicy. W firmach, w których są oni obiektem szczególnej troski pracodawców, osoby zatrudnione identyfikują się z firmą i prawdopodobnie będą bronić jej pozycji na rynku. W tym względzie sztuczna inteligencja nie podejmie żadnych działań.

Rynek produkcji i eksploatacji oprogramowania nieustannie ewoluuje. Wiele prac wykonywanych przez programistów wcześniej już nie spotykamy: niektóre z nich zostały zautomatyzowane, inne są już niepotrzebne. Jednocześnie pojawiają się nowe, niespotykane wcześniej zadania. Cechą charakterystyczną człowieka jest bardzo szybkie dostosowywanie się do zaistniałych zmian. W przypadku sztucznej inteligencji proces ten jest znacznie bardziej długotrwały. Należy założyć, że rola inżynierów programistów w przyszłości będzie ewoluować równie szybko jak miało to miejsce w przeszłości. Nie oznacza to jednak, że programiści zostaną bez pracy. Po prostu, będą oni wykonywać nowe zadania, których w tym momencie nie jesteśmy jeszcze w stanie zdefiniować.

elements.envato.com

Fizyczny programista góruje nad tym wirtualnym jeszcze w jednym obszarze. Zlecenie sztucznej inteligencji napisania kodu nie oznacza ślepego zaufania, że to co ona wyprodukowała będzie działać i spełni określone potrzeby użytkownika. Zazwyczaj nie rozumiemy kodu, który został wygenerowany. Jak zatem możemy określić jego jakość, czy w ogóle możemy stwierdzić, że jest on bezpieczny i godny zaufania? Aby zweryfikować wygenerowany przez AI kod musimy posłużyć się tymi samymi metodami, które wykorzystujemy do sprawdzenia kodu napisanego przez fizycznego programistę. Oznacza to, że należy zrozumieć koncepcje programistyczne, metody, struktury danych itp., które wykorzystała sztuczna inteligencja. Wszystkie te informacje posiadamy, jeżeli kod wyprodukowany został przez fizycznego twórcę. Dzięki temu ewentualne sprawdzenie jakości programu jest prostsze.

Efektywność wykorzystania wygenerowanego przez sztuczną inteligencję programu ogranicza również konieczność wprowadzania zmian w jego treści. Założenie, że AI generuje niewymagający ingerencji kod najwyższej jakości, jest od podstaw błędne. Podobnie jak ludzie, sztuczna inteligencja jest podatna na popełnianie błędów. Integruje ona zgromadzoną i wyuczoną wiedzę, często robi to w innowacyjny sposób i znacznie szybciej niż jakikolwiek człowiek. Przy tym, wydaje się ona zawsze być pewna swoich wyników. Ma to miejsce również w przypadku, kiedy wykracza ona poza obszar swojej wiedzy. Dlatego AI należy traktować jak inteligentnego, ale naiwnego ucznia i być przygotowanym na wychwytywanie jej błędów. Kto miałby wykonywać takie działania? Oczywiście programista.

Jedną z najczęściej akcentowanych zalet generowania kodu przez sztuczną inteligencję jest możliwość posługiwania się językiem naturalnym. Zauważmy jednak, że nie ma on precyzji i dokładności kodu. Został stworzony przez ludzi i dla ludzi. Jest pełen zawiłości, nadmiarowości i niejednoznaczności. Dlatego, kod wygenerowany na podstawie zapytania zapisanego w języku naturalnym powinien być dokładnie sprawdzony. Może się bowiem okazać, że jego funkcjonalność istotnie różni się od tej, która była pierwotnie założona. Również w tym przypadku właściwą weryfikację powinien wykonać człowiek. Obecnie AI szeroko wykorzystuje się do generowania wydzielonych funkcjonalnie fragmentów systemu. Twórca nadal musi przekształcić fragmenty kodu, zintegrować je i dopasować do architektury projektu. Chociaż sztuczna inteligencja generuje kod już teraz, minie dużo czasu, zanim zacznie w pełni rozumieć wszystkie ludzkie wymagania dotyczące systemu i iteracyjnie badać je, aby zaspokoić potrzeby użytkownika. Nawet dla doświadczonych specjalistów zadanie to jest bardzo rozległe i złożone.

6. Nieprzenoszalność ludzkiej osobowości na urządzenia techniczne

Doskonałym przykładem na nieprzenoszalność ludzkiej osobowości na maszyny może posłużyć Rozprawa – jedno z opowiadań nieżyjącego już Stanisława Lema – genialnego polskiego twórcy literatury fantastyczno-naukowej. W opowiadaniu, komandor Pirx otrzymuje specjalne zadanie: ma wypróbować załogę, złożoną częściowo z ludzi, częściowo ze znakomicie ich imitujących androidów. Nikt z członków załogi nie wie, kim są pozostali astronauci: ludźmi czy robotami. W czasie lotu jeden z androidów próbuje sprowokować dowódcę, aby w obliczu zagrożenia katastrofą wydał błędne rozkazy, w wyniku których zginą wszyscy ludzie z załogi. Android zakłada, że dzięki temu roboty zamiast ludzi zaczną pełnić coraz więcej odpowiedzialnych i istotnych funkcji, co w przyszłości pozwoli im przejąć władzę nad światem. Jednak Pirx dzięki ludzkiemu niezdecydowaniu, które robot zlekceważył, waha się i nie wydaje spodziewanych przez niego poleceń. To zmusza Androida do improwizacji, podczas której ujawnia on swoje prawdziwe zamiary. Dzięki temu Pirx ocala siebie i resztę załogi, niszcząc zbuntowaną maszynę.

Człowiek ze swoimi wątpliwościami i niezdecydowaniem jest obiektem, którego zachowanie nie może być sformalizowane. Nierzadko mówimy o konkretnych osobach, że są nieobliczalne i jest to wyłącznie dowód na to, że żadna maszyna funkcjonująca zgodnie z określonym wcześniej algorytmem nie może ich zamienić.

Podsumujmy

Analizując wpływ sztucznej inteligencji na rozwój technologii przyszłości należy być bardzo ostrożnym. W chwili obecnej nie wiemy jeszcze jak rozwijać się będzie nauka i technika oraz jakie możliwości nabędzie z czasem sztuczna inteligencja. Nie ulega jednak wątpliwości, że ktoś będzie musiał tworzyć sztuczną inteligencję i zarządzać nią, bowiem uregulowania prawne jeszcze przez bardzo wiele lat będą ograniczać jej autonomię. Na koniec, odpowiedzmy na pytanie: czy warto dzisiaj studiować kierunki z obszaru technologii informacyjnych? Odpowiedź może być tylko jedna: bezdyskusyjnie warto.