...czyli pomimo nowych czasów, problemów pandemiczno - przeprowadzkowo - codziennych, wszelkich zagadnień związanych z nową pracą i krainą, ja i tak wracam do pewnych tematów jak dobrze zakręcony bumerang.
Żona śmieje się, że to jest po prostu ta pora roku, i hasztag-a-co-nowego.
Gdyż znowu wyciągam jakieś swoje odwieczne projekciki programistyczne (tak jakbym miał za mało zabawy w pracy, znacznie mocniej zawikłanej w dorosłe IT, no dobra, w IT udające dorosłe IT, niż poprzednie); znaczy, pewnie zima będzie ciężka... Jeśli kogoś interesuje
miałem o tym notkę, a może
ze dwie, albo
i więcej.
Tym razem zacząłem bardzo na serio, bodaj na przymusowym urlopie-izolacji przed pracą w Irlandii, rozeznaniem co do "nowych" narzędzi, nowych w cudzysłowie, bo nowych wyłącznie dla mnie. Gdyż po ostatnich podejściach do tych moich programistycznych nieudolnych gier i zabaw, kiedy wyp... w kąt Qt i te ceplusy różne, oraz okazałem się znowu niekompatybilny z Unity, a nowomodne wcielenia starego Delphi z przydatkami itp. okazały się znacznie mniej fajne niż były kiedyś i bez perspektyw na rozwój (oraz niestabilne nieco), nabrałem przekonania, że potrzebuję Zmiany i nowych narzędzi. Co zresztą sprowokowało komentarze znajomych w stylu "oj, żeby to się nie skończyło nowym kompilatorem zamiast gry w nową greu".
Okazało się, że na tyle dorosłem, że zamiast pisać własne narzędzia, poszedłem rozkminić, co też w roku bezpańskim 2020 uważa się za sensowne języki, kompilatory i środowiska, powiedzmy, uniwersalne, oraz takie, żeby były kompatybilne ze mną i miały jakieś szanse na przyszłość (znaczy, żeby był szanse, że nauczę się ich, a nawet użyję, zanim staną się archeologią IT...).
Oszczędzę wam opisu jak bardzo nie ogarniam i ile zajęło mi przekopywanie się i różne podejścia i próby, przejdę do wniosków. Na pobojowisku zostali dwaj mocni kandydaci, Go (
ten nowy oczywiście, od golang i Googla) oraz Rust,
ten od Mozilli i spółki. Co skądinąd ładnie pokazuje, gdzie w moim świecie hobbystycznego programowania zaczyna się "nowe", bo i GO i Rust mają "od poczęcia" już coś koło 10 lat...
Rust po próbach odpadł, nie to że jest zły czy nie daje rady, raczej - ja z nim nie daję sobie rady; w pewnych założeniach i szczegółach leży za blisko rzeczy, których po prostu nie lubię "od zawsze", od czasów 8-bitowców chyba. Coś podobnego miałem kiedyś z Erlangiem, lata temu, przy poprzednich poszukiwaniach "czym zastąpić Delphi" - no bez wątpienia było to doskonałe narzędzie i Erlang daje bullet-proof rozwiązania, ale nie, kurde, nope, łeb mnie bolał, gdy próbowałem się do niego wdrożyć. Podobnie miałem z Rustem teraz.
A dla odmiany do Go wdrożyłem się z marszu; wydaje się najdoskonalsze dla mnie tu i teraz, więc właśnie w nim sobie coś tam dłubię, np. 7 czy 8 podejście do gier i zabaw w okręciki - a że Go bardzo miło wspiera współbieżność a rzecz jasna nie wspiera grafy czy aplikacji "as is", zdaje się, że jest to moja próba zbudowania względnie sporej architektury wyspecjalizowanego serwera czasu prawie-rzeczywistego (próba druga czy trzecia ever?), bo grać się ew. będzie przez czystą przeglądarkę HTTP. Co może niekoniecznie skończyć się działającą "greu", ale za to wiele się przy tym nauczę, co nie; np. jak napisać małą SCADA w Go, z klientami przez HTTP...
Z drugiej strony, zaczynam już dostrzegać pewne wady Go oraz mam niespodziewane wrażenie bałaganu w bibliotekach i różnościach, podobne jak miewałem np. często przy PHP "czy to wymyślało 5 zespołów przez 10 lat i nikt z nikim niczego nie uzgadniał?". Ale jeszcze nie jest bardzo źle, a nawet jest bardzo dobrze, ten młotek wyraźnie pasuje do tej dłoni. Może dlatego, że Go wymyślili praktycy (a nie akademicy czy hobbyści), którzy mieli po dziurki w nosie przekombinowanych "niedeterministycznych" narzędzi "i frytki i tysiąc słoni do tego", i zaczęli od ustalenia,
czego nie chcą i nie potrzebują, aż doszli do pewnego minimum, za to takiego i tak zrobionego, które po prostu "ma robić, a nie pier... (się)".
Co, zdaje się, zgadza z moim podejściem do, hm, wszystkiego.