VIM dostaje nowy język skryptów, a Git lepsze wsparcie MonoRepo. Jednak obie te informacje bledną w kontekście potencjalnej alternatywy dla SQLa – czy ma jakiekolwiek szanse?
Zaczniemy od prognozy pogody:
A teraz do konkretów.
1. Nowy VIM z napisanym od zera silnikiem
To jako że obowiązkowy dowcip mamy za sobą… jej, nowy Vim 9.0! Narzędzie to w zeszłym roku obchodziło 30-tkę. Byłem zaskoczony, myślałem że jest starszy – ale to dlatego, że stanowi ulepszoną wersję edytora vi z roku 1976 (zaraz do tego tematu wrócimy). Po latach ciągle pozostaje jednym z najczęściej używanych edytorów, i u wielu osób nie zdołały wypchnąć go żadne wymuskane IDE czy Edytory Kodu (a nawet jeśli – to dla wielu osób dalej kluczowa jest możliwość uruchomienia w nich tak zwanego Vim Modę). Jest to pierwsza „duża” edycja od roku 2016, gdy premierę miał Vim 8.0.
Co przynosi tak istotne podbicie numeracji? Głównie nowe wcielenie języka skryptowego Vim: Vim9. Oznacza ono porzucenie wstecznej kompatybilności z poprzednimi skryptami Vima, a także ze swoim dziadkiem – edytorem vi. Przez to, że do tej pory takowa była kluczowa, złe wybory z przeszłości nakładały się w czasie, a kompatybilność z Vi utrudniała rewolucje. Dlatego też postanowiono zrobić duży krok i się tej kompatybilności wreszcie pozbyć. Dzięki temu Vim9 umożliwił twórcom drastyczną poprawę wydajności – od 10 do nawet 100 razy. Dodatkowo, Vim9 zbliżony jest składniowo do powszechnie używanych języków programowania, takich jak JavaScript, TypeScript i Java.
Dla tych, którzy już się boją, że ich pielęgnowane od dziesięcioleci Workflowy przestaną działać – stary format skryptów ma być dalej wspierany i nie planowane jest jego porzucenie. Po prostu teraz twórcy narzędzi będą mieli alternatywę pod postacią Vim9.
A jak już jesteśmy w temacie Vima, to ostatnimi czasy czytałem świetny tekst dotyczący edytorów developerskich w 2022. Daje on bardzo ciekawą perspektywę na to, czy w 2022 dalej terminal ze swoją kompozowalnością dalej jest najlepszym środowiskiem pracy. Mimo, że autor jest die-hard fanem CLI (i Vima), dzieli się on swoimi wątpliwościami. Główne wady które wskazuje to fakt, jak trudno jednak eksperymentuje się z łączeniem komenda, a także z ograniczeniami, które wynikają z operowania wyłącznie na tekście w świecie, gdy pliki binarne są jednak istotne (i z roku na rok coraz istotniejsze).
Jeżeli Wam też się spodoba i będziecie chcieli podzielić się z kimś linkiem – uważajcie na dziwne przekierowania (w url pojawia się dodatkowe /blog i link przestaje działać).
To żeby tak podsumować: Intellij, Vim czy Emacs?
Źródła:
Zainstaluj teraz i czytaj tylko dobre teksty!
2. PRQL – język transpilujący się do SQLa
Jest taka bardzo ciekawa „zasada kciuka”: Jeżeli masz estymować, ile jeszcze będzie trwał dany trend (np. popularność technologii), powinieneś zakładać, że jesteś dokładnie w połowie jego cyklu życia. Na pierwszy rzut oka wydaje się być to sporym uproszczeniem, ale w praktyce jest to bardzo prosta zasada. Mówi ona o tym, że skoro ludzie ciągle słuchają Johna Lennona, to mniej więcej do końca wieku wciąż będzie on dość popularny. Muzyczna gwiazda sezonu letniego 2022 ma zaś większe prawdopodobieństwo zostać zapomniana w ciągu najbliższych 12 miesięcy, niż zostać wieloletnim szlagierem.
Z tego też powodu można zakładać, że pochodzący z lat 70-tych SQL przeżyje nas wszystkich, a bohater tego akapitu – PRQL, który swoją oficjalną premierę miał w zeszłym tygodniu – raczej ma małe szanse na stanie się nowym standardem. W dalszym ciągu jednak stwierdziłem, że warto podzielić się z Wami tym ciekawym projektem. PRQL jest nowoczesnym językiem do przekształcania danych – prostym i wydajnym „zastępstwem” SQL. W przeciwieństwie do SQL, o wiele wygodniej wspiera np. zmienne i umożliwia tworzeniu pipelinów przekształceń danych. Co jednak jest tutaj najciekawsze to fakt, że może być używany w zasadzie z każdą relacyjną bazą danych, ponieważ transpiluje się do SQLa.
Całość prezentuje się następująco:
from employees
filter start_date > @2021-01-01
derive [
gross_salary = salary + (tax ?? 0),
gross_cost = gross_salary + benefits_cost,
]
filter gross_cost > 0
group [title, country] (
aggregate [
average gross_salary,
sum_gross_cost = sum gross_cost,
]
)
filter sum_gross_cost > 100000
derive id = f"{title}_{country}"
sort [sum_gross_cost, -country]
take 1..20
For more on the lang
Tak jak zacząłem, raczej nie spodziewam się, że całość okaże się być wielkim sukcesem. Z SQL-em jest jak z QWERTY – jego zaletą jest nie to, że to najlepszy format, ale popularność i bycie znanym w zasadzie przez każdego. W dalszym ciągu jednak stwierdziłem, że PRQL to na tyle interesujący projekt, że warto abyście o nim wiedzieli. SQL to nie JavaScript, że codziennie pojawia się jakiś język który się do niego transpiluje.
Źródła
Zainstaluj teraz i czytaj tylko dobre teksty!
3. Git otrzymuje lepsze wsparcie dla Monorepo
A na koniec, nowy Git. Podejrzewam, że więcej niż 90% z czytających używa tego narzędzia, ale praktycznie nikt nie śledzi pojawiających się w nimi nowości i poprzestaje na bazowych 20% możliwości tego narzędzia. Tak naprawdę wcale się temu nie dziwie – Git jest mocno „feature-complete” i rzadko pojawiają się w nim nowości, które można w codziennej pracy.
Myślę, że pewną szansę na przełamanie tego trendu przynosi Git 2.37. Nowa wersja przynosi min. lepszy garbage collector (tak, Git ma wbudowane GC) czy „uprodukcyjnienie” wprowadzonych niedawno Sparse Index, pozwalający pracować z olbrzymimi repozytoriami dzięki równoczesnym operowaniu wyłącznie na „podgałęzi” całego drzewa. Największą nowość nowego wydania również docenią właśnie użytkownicy dużych Monorepo – Git wprowadza bowiem natywny monitor plików. Do tej pory wiele operacji wykonywały się synchronicznie, już po odpaleniu konkretnej komendy, co w przypadku dużego codebase trwało bardzo długo. Teraz Git będzie mógł w tle przygotowywać wyniki, które użytkownik będzie otrzymywać od razu np. poprzez komendę git status
. Tematowi temu GitHub poświęcił cały artykuł..
Jak więc widać, Git bardzo stara się dostosować jako narzędzie do bieżących trendów, a nie da się ukryć że takim trendem jest właśnie coraz większa popularność monorepo. Jeżeli chcielibyście się dowiedzieć, dlaczego coraz więcej firm interesuje się tym podejściem, ostatnio trafiłem na świetną stronę „Monorepo Explained”, która stanowi swoiste FAQ oraz zbiór instrukcji jak zacząć. Polecam serdecznie.
Tak na zakończenie przyznam się, że akurat lubię zmiany w Git-cie śledzić. Nie dlatego, że rzeczywiście nagle zaczynam używać tych nowych strategii mergowania czy benchmarkuje wydajność. Po prostu akurat gitowe nowości zwykle bywają bardzo interesującą „algorytmiką stosowaną” – repozytorium na dobrą sprawę to taka duża drzewiasta struktura danych, a twórcy Gita wykonują na niej bardzo interesujące transformacje. To trochę ten sam poziom „frajdy”, którym dzieliłem się swego czasu opisując moją dziwną miłość do inżynierii emulatorów 🤷♂️. A wspominam to tylko dlatego, żeby podzielić się z Wami cudowną publikacją na temat Mapper Chipów oryginalnego NESa! Dzięki artykułowi dowiecie się, jak na konsoli która ma 2kb RAMu można uruchomić Dooma, który wymaga 8Mb.
Źródła
- Git 2.37
- Improve Git monorepo performance with a file system monitor
- Monorepo Explained
- What made the NES interesting?
PS: Jakby ktoś się zastnawiał skąd taka, a nie inna miniaturka… zapowiedziano Persona 5 Royal na Switcha 🥳