Śmiem twierdzić, że znaczna część naszego informatycznego środowiska odczuwa smutek. Dodam, a Wy (mam nadzieję) się zaraz ze mną zgodzicie, że trwa to już dosyć długo i szanse na poprawę wydają się nikłe. Środowisko nasze da się podzielić na dwie główne grupy, IT i Biznes. IT to osoby techniczne, kreatywnie związane w różnymi formami wytwarzania i dostarczania softu. Biznes to osoby próbujące ten soft i pochodne mu usługi, sprzedać z niezerowym zyskiem. Otóż, obie te grupy, choć z różną intensywnością i z odrobinę innych powodów, patrząc jak JavaScript (król przeglądarki) zdobywa przebojem świat, odczuwają wzrastający, wspomniany wcześniej, smutek.
Biznes jest smutny bo mu się kasa nie zgadza. Ci IT’meni i IT’menki od JS są jacyś drodzy, jest ich mało. Do tego to co powstaje w ich twórczym akcie, jest kosmicznie skomplikowane, nigdy nie wiadomo czy działa, ma ogromne wymagania co do testów, bo trzeba testować nawet to co w innych językach kompilator wyłapuje z „zamkniętymi oczami”, wydajność tego jest … no cóż niedzisiejsza, piekło bibliotek, brak standaryzacji, itd. Koszty rosną, biznes jest smutny.
Dla IT kasa się zgadza. Przy pomocy JS w udany sposób IT potrafi wyciągnąć jej od Biznesu dużo. Jak coś jest takie skomplikowane i „nowoczesne”– musi kosztować. Dla IT smutek przychodzi już po entuzjastycznym początku, przychodzi na etapie utrzymania. Utrzymanie takiego dużego i skomplikowanego „bluba” proste nie jest i dla dużych projektów potrafi wpędzić nie tylko w smutek ale i w depresję. IT się nie poddaje. JQuery … żart? Angular … uff. React … lepiej? TypeScript … może tak. Jednak o zgrozo tam pod spodem jest dalej ten … JS. Smutek.
Nie bójmy się powiedzieć prawdy. Ktoś wymyślił słaby język, wsadził go do prze/uruchamiarki, wyłożył miliardy na jego popularyzację i wpiera nam, że tak jest dobrze. Skalę problemu obrazuje wypowiedź jednego z „guru” świata IT:
„ … stos webowy to oprócz zniszczenia klimatu i rosnących nierówności społecznych jedna z najgorszych rzeczy którą zostawimy w spadku naszym dzieciom …”
Tym bardziej się ucieszyłem gdy jeden ze znajomych opowiedział mi, że na jednej z konferencji widział prezentację pod tytułem „Narodziny i śmierć JavaScript” … Prezentacja była przeprowadzona w takim układzie, że mamy rok 2050 i ktoś opowiada z nostalgią o starych czasach pełnych błędów i wypaczeń, prezentując WebAssembly i mu pochodne, jako to coś co wyzwoliło i Biznes i IT. WebAssembly zwane w skrócie WASM jest to otwarty standard zapisu tekstowego i binarnego dla aplikacji uruchamianych zarówno w przestrzeni przeglądarki jak i poza nią. Tak pisze Wikipedia. Jak to rozumieć? To proste. Otóż mamy nowego asemblera, nowy bajtcode, otwarty standard, każdy może stworzyć runtime (vm) i każdy język może się kompilować (czy transpilować) do WASM. Pięknie. Czy nie macie „deja vu”? Już nam tak ktoś kiedyś obiecywał. Ale ok, nie narzekamy, nurkujemy. W zasadzie obecnie większość przeglądarek wspiera już WASM a twórcy różnych języków piszą/napisali trans/kompilatory. W statusie „production ready” dostępnych jest kilkadziesiąt języków z Java’ą i C# włącznie.
Ciekawe co „wielcy” tego świata piszą o WASM? Wszak to Oni przyszłości naszej sterem i drogowskazem … są. Większość przekazu wcale nie mówi o rewolucji. WASM nie ma zastąpić JS tylko go uzupełnić. Słabo. Ciekawe zdanie wypowiedział jeden z twórców Dockera. Stwierdził że gdyby w chwili gdy rozpoczynano prace nad Dockerem, istniał już WASM i WASI (WASI w uproszczeniu tu WASM poza przeglądarką), Docker nie był by już potrzebny, sic! Co zatem się zmieni? Czy zmiana przyjdzie szybko? Mam duże wątpliwości. Jednak cieszy to, że coś się dzieje i wektor zmian wydaje się być pozytywny.
W kontekście tego, mając na względzie rozpoczynający się nowy, 2020 rok, życzę wszystkim aby był to rok zmian na lepsze. Aby to co zastałe i skostniałe zaczęło ustępować temu co świeże i nowoczesne, aby dla nas wszystkich z IT i Biznesu było łatwiej i efektywniej ale też bardziej logicznie i po prostu.
Krzysztof Olszewski
Dyrektor Technologii i Architektury Oprogramowania
Krzysztof Olszewski
Dyrektor Technologii i Architektury Oprogramowania