Jak AI zmieni IT? Część 1

Jak AI zmieni IT? Część 1
Stawiam śmiałą tezę, że języki programowania są już martwe, tylko ludzie, którzy się nimi posługują, jeszcze o tym nie wiedzą. Ma to, a właściwie będzie miało, kolosalny wpływ na cały proces wytwórczy i wszystkie role w modelach tworzenia oprogramowania.

Wiele osób zastanawia się na tym, jak zmieni się IT pod wpływem AI. Roztacza się wiele wizji i koncepcji, a większość z nich koncentruje się wokół zastępowania kolejnych ról przez sztuczną inteligencję. Jeśli jednak spojrzeć na to z perspektywy podstawowych reguł oraz jeśli zastosuje się regułę brzytwy Ockhama, która preferuje rozwiązania prostsze nad tymi trudniejszymi, to wyklaruje się nam całkiem inna perspektywa tego, jak będzie wyglądać świat IT.

W poniższej analizie robię sporo założeń, a kilka z nich wprowadzę i wyjaśnię na początku. Może się okazać, że jedno lub więcej z nich okaże się nieprawdziwe, więc i całość stanie się nieprawdziwa. Zakładam jednak, że dyskusja, która pojawi się po publikacji, pozwoli mi moje założenia zweryfikować, a docelowo je potwierdzić.

Pierwszym założeniem jest to, że sztuczna inteligencja działa tak, jak uproszczona wersja ludzkiego mózgu – pozyskuje dane, przetwarza je i zapisuje w odpowiednim miejscu. Część procedur w mózgu jest predefiniowana, a część jest tworzona w trakcie jako rozwiązanie problemu, przed którym stajemy. Jeśli dalej założymy, że AI jest pracownikiem wykonującym pewne zadanie, to może okazać się, że będzie w stanie je wykonać, jeśli uzyska dostęp do wykonywania fizycznych działań, jak np. przeniesienie. Dodatkowo, sztuczna inteligencja do wykonywania zadania musi uzyskać dostęp do informacji zewnętrznych, jak np. widzenie. Im więcej czynności fizycznych i zmysłów zapewnimy maszynie, tym bliżej jej będzie do fizycznego pracownika.

Przyjrzyjmy się kilku poglądom, które są popularne w odniesieniu do AI i dotyczą branży IT.

  1. Póki klient nie wie, czego chce, nasze miejsca pracy są bezpieczne.

    Popularnym argumentem na niezachwianą pozycję programistów, testerów i analityków w projekcie jest to, że klient nie potrafi wyartykułować swoich potrzeb, a to z kolei znaczy, że AI nie będzie w stanie wygenerować dla niego rozwiązania informatycznego (to, że nie będzie generowanego kodu źródłowego wyjaśniam w kolejnym punkcie). Przyjrzyjmy się jednak temu, czy klient może lub musi wiedzieć, czego potrzebuje? Jeśli założymy, że rzeczywiście będzie on próbował sam z AI stworzyć swój program do wsparcia jego działań, to z dużą dozą prawdopodobieństwa możemy uznać, że człowiek będzie się uczył razem ze sztuczną inteligencją o swoich potrzebach. Już dziś zakładamy iteracyjność wytwarzania oprogramowania. Klient krok po kroku artykułuje swoje potrzeby, a zespół je implementuje. Podobny mechanizm można zastosować także z maszyną: klient mówi, czego oczekuje -> maszyna to tworzy -> klient weryfikuje, czy to jest to, o co mu chodziło. Ten proces może być długi i złożony, ale jest możliwy do osiągnięcia.
  2. Oprogramowanie będzie pisało oprogramowanie.

    Odwołując się do założeń wstępnych, w których przyjąłem, że AI działa jak mózg, zakładam, że nie jest to prawdą. Mózg nie tworzy małych programików do realizowania powtarzalnych zadań. Wszystko „ogarnia” samodzielnie. Dziś to ludzie proszą AI o wygenerowanie kodu, który będą mogli używać poza jej kontrolą.

    Sztuczna inteligencja na swoje potrzeby nie stworzy ani jednej linijki kodu. Przynajmniej kodu źródłowego. Języki programowania zostały wymyślone po to, aby ułatwić ludziom wydawanie poleceń maszynom, ale kod źródłowy bez kompilatora lub interpretatora jest nieużywalny. Kod źródłowy jest nadmiarowym półproduktem w tworzeniu systemu, więc powoli będzie znikał z przestrzeni projektów informatycznych. Użycie kodu źródłowego będzie konieczne tak długo, jak w całym procesie tworzenia oprogramowania zakładamy istnienie człowieka, który będzie ten kod w jakimś stopniu sprawdzał albo uzupełniał. Docelowo jednak cały kod będzie tworzony przez sztuczną inteligencję. I będzie to kod maszynowy, który nie jest zrozumiały dla zwykłego śmiertelnika. Samo pojęcie „oprogramowanie”, które sugeruje, że coś zostało oprogramowane, stanie się przestarzałe. 

    Powszechne myślenie, że sztuczna inteligencja zastąpi programistów, jest błędne. AI doprowadzi do tego, że rola programisty stanie się zbędna, oczywiście, jeśli pozwolimy jej osiągnąć zdolność generowania kodu maszynowego. Tu pojawiają się obawy o brak ludzkiej kontroli nad programami. Dobrym przykładem na to jest historia, w której w warunkach laboratoryjnych dwie maszyny ze sztuczną inteligencją połączono między sobą z poleceniem, aby przekazały sobie posiadane informacje. Protokół komunikacyjny między tymi maszynami był monitorowany, by obserwować to, jak następuje proces uczenia się. Co się wydarzyło? 

    Pierwszą rzeczą było to, że maszyny zastąpiły predefiniowany protokół własnym językiem komunikacji, który był efektywniejszy w prowadzeniu „rozmowy”. Był on za to w pełni niezrozumiały dla człowieka. Eksperyment przerwano, ponieważ człowiekowi nie było wiadomo, jakie informacje i w jaki sposób są przekazywane. Podobnie będzie, gdy pozwolimy sztucznej inteligencji generować kod. Ponieważ AI rozmawia z człowiekiem, to generuje kod zrozumiały dla człowieka, jeśli jednak będzie mogła generować kod bezpośrednio do maszyny, to będzie to kod dla człowieka niezrozumiały.
  3. Kto będzie testował kod napisany przez maszynę?

    Z tym rozprawiliśmy się już w punkcie 1 i 2. Jeśli ostatecznie dojdzie do stworzenia kodu, to obowiązek ten spadnie na zlecającego oprogramowanie. W czasie dojścia do tego końcowego modelu liczba zadań testera będzie systematycznie redukowana. Testy jednostkowe czy testy małej integracji nie będą wykonywane. Oprogramowanie dla wszystkich stanie się czarną skrzynką, do której nie da się zajrzeć, a jedyne testy, jakie będą mogły być wykonywane, to te na interfejsach. Jedyne testy, które będą miały sens, to testy z użytkownikami i klientami. Testy integracji dużej skali np. interfejsów API będą miały znaczenie tylko, jeśli zakładamy integrację z oprogramowaniem napisanym przez człowieka. Jeśli już całe oprogramowanie będzie „pisane” przez maszyny, to i te testy odejdą do lamusa.

To jest jedynie wierzchołek góry lodowej zmian. Na wstępie zakładam, że coś powstanie. A co, jeśli nie powstanie żaden program? Co, jeśli AI sama w sobie jest ostatecznym i jedynym potrzebnym nam programem?

Koncept ten rozwinę w drugiej części tej publikacji. 
 

To powinno Cię zainteresować