Wybór języka

W moim ogródecku…

Dlaczego w ogóle Software Garden, co to znaczy?

Jeśli szukasz odpowiedzi na pytanie czym jest Software garden, to wydaje mi się, że nie znajdziesz lepszego wytłumaczenia niż koncepcja (którą przeczytałem kilka lat temu) oryginalnie wyłożona w książce Pragmatyczny Programista Andrzeja Hunta and Dawida Thomasa.

Istnieją takie książki, filmy, obrazy, etc., które rewolucjonizują nasz sposób myślenia w pewnych obszarach. Wiele osób wyciągnęło ciekawe wnioski z tej inspirującej książki: jedni zaczęli gotować żaby, inni gadać do gumowej kaczki… Ja wychowywałem się blisko natury, dlatego moim zdaniem oprogramowanie przez nas tworzone i wykorzystywane dużo bardziej przypomina ogród niż budownictwo czy jakieś maszyny. Na swój sposób ono żyje. Nigdy nie jest w pełni ukończone. Cały ekosystem dookoła podlega ciągłym zmianom. Modlimy się o deszcz. Pory roku zmieniają się po sobie. Potrzeba miejsca na nowe rośliny. Trzeba się pozbywać pasożytów, żeby było co jeść. Nie można co tydzień wszystkiego zaorać i zaczynać od nowa. I tak dalej…

Dlatego przed kilku laty zmieniłem opis mojego stanowiska z “Programista” lub “Inżynier oprogramowania” na “Software Gardener” (choć z wykształcenia jestem właśnie inżynierem programistą i mam na to papier). Oczywiście ludzie, którzy nie przeczytali Pragmatycznego Programisty, są czasem zmieszani lub zakłopotani. Z drugiej strony pozwala mi to bez słów porozumieć się z tymi paroma osobami (a spotkałem takie), które na wizytówce mają również napisane “Software Gardener”. Coś za coś.

Ta strona to taka internetowa reprezentacja mojej niekończącej się podróży w Ogrodnictwo Programowania. To nie jest wielkoobszarowa farma z monokulturą. To mój mały ogródek, z roślinkami o które staram się dbać, z ptakami śpiewającymi nad głową i z paroma robalami pewnie też. Rozgość się, proszę.

Minęło kolejne pół roku, pora na wdrożenie kolejnej wersji Javy™ na produkcji. Tym razem na pewno, bo to w końcu LTS. ;-)

Zdaniem wielu “Java jest wolna”. Okazuje się, że rozwój Javy jest tak “wolny”, że kolejne wydania nie są tylko podbiciem wersji, bo mogą znacząco zmieniać reguły gry. To dobry powód na kolejny deep dive w Javie. Była mowa o:

  • –illegal-access=deny,
  • Sealed Classes,
  • dopasowaniu wzorców w switch,
  • z czym się żegnamy i z czym będziemy się żegnać,
  • i innych.

Dużo rzeczy pokazane w kodzie, nie tylko na slajdach.

Co myślę o Lomboku?

Wydaje się, że to ciekawa wyspa, chętnie bym tam kiedyś się wybrał.

Co myślę o Projekcie Lombok?

Cóż, zadano mi to pytanie tak wiele razy, że postanowiłem popełnić ten wpis. Głównie po to, żebym mógł wkleić odnośnik i wycofać się na z góry upatrzone pozycje, gdyż intensywność kolejnej dyskusji może wzrosnąć do poziomu wygrażania pięściami i toczących się głów… Poczyniłem trzy założenia:

  • To są moje opinie. Mogą się komuś podobać lub nie. To zależy od Ciebie, czytelniku, i nic na to nie poradzę. Jeśli dla Ciebie zapoznawanie się z cudzymi opiniami przerasta możliwości samodystansu, to może pora przestać czytać właśnie teraz. Dotyczy to także (choć nie tylko) wszystkich wspaniałych dusz stojących za Projektem Lombok.
  • “Tylko krowa nie zmienia poglądów”, a jako że nie identyfikuję się jako krowa, moje opinie mogą się zmienić. Bo np. po przeczytaniu tego wpisu udało Ci się przekonać mnie, że nie mam racji. Wierz mi, lubię być wyprowadzany z błędu. Uważam to za absolutną podstawę podejścia naukowego. Z tego powodu ten wpis może być przedmiotem zmian wprowadzanych bez ostrzeżenia.
  • Zamiast pisać “Projekt Lombok”, będę pisać po prostu “Lombok”.

Niestety, tłumacz wziął wolne. Wpis dostępny po angielsku.

Wiele zmian, które obserwujemy w kolejnych wydaniach Javy (jeśli nie większość z nich), powstaje w ramach projektów grupujących / parasolowych. Często widzimy usprawnienia składni z projektu Amber, projekt Jigsaw przyniósł nam moduły, projekt Loom (uwaga, niespodzianka!) zajmuje się wątkami, projekt Panama, gerenalnie rzecz biorąc, jest o wydajnym i bezpiecznym wykorzystaniu metalu pod spodem. Spośród tych najbardziej znanych, projekt Valhalla też zaczyna do nas docierać, dzięki wydaniu JEPa-390 w ramach Javy 16.

Minęło kolejne pół roku, kolejne wydanie nowej wersji Javy™ za nami. Zdaniem wielu “Java jest wolna”. Okazuje się, że rozwój Javy jest tak “wolny”, że kolejne wydania nie są tylko podbiciem wersji, bo mogą znacząco zmieniać reguły gry. To dobry powód na kolejny deep dive w Javie. Będzie mowa o:

  • Rekordach: gdzie i jak ich użyć (poza DTO/VO)
  • dopasowaniu do wzorca z instanceof (zwane również smart casting)
  • klasach zapieczętowanych (czyli nowym wymiarze widoczności typów)
  • ostrzeżeniach z projektu Jigsaw (–illegal-access kontratakuje!)
  • i Valhalla (przy złym wykorzystaniu value-based classes)
  • komunikacji z pamięcią natywną z projektu Panama
  • i innych.

Dużo rzeczy pokazane w kodzie, nie tylko na slajdach.

W zeszłym roku poczyniłem dwa wpisy o torturowaniu rekordów w Javie Lombokiem. Na nasze (nie)szczęście (zależy, jak to widzisz), zespół Lomboka zdecydował się ukrócić nasze niecne zabawy. Jednakże nie składamy broni i tym razem idziemy po wzorzec budowniczego!

Po parunastu latach używania Linuksa zawstydziłem dziś sam siebie. Dość dużo czasu spędzam przed terminalem. I o ile nie jestem pewien, że znam wszystkie wykrętasy w Vimie (nie wspominając o Emacsie, ale dziś nie będzie o akurat tym systemie operacyjnym), o tyle wydawało mi się, że raczej potrafię korzystać z emulatora GNOME terminala. O święta naiwności! Dziś odkryłem nową funkcję, niezłą perełkę, więc postanowiłem podzielić się nią z Wami, razem z innymi dobrodziejstwami (może nie tak oczywistymi dla nowych w Linuksie), o które czasem bywam pytany po wykładach.

Ten wpis powinien mieć chyba ładniejszy tytuł, ale jakoś nic lepszego nie przychodzi mi do głowy. Jest o czynnikach bezpieczeństwa i pewnych mitach z nimi związanych.