Wykłady laureatów Nagrody Turinga zwykle pozostawiają wiele do życzenia. Formalne, banalne, bezpieczne. Z wyjątkiem sytuacji, gdy giganci informatyczni decydują się na odejście od scenariusza. John Baccus wykorzystał moment na podium do uruchomienia programowania funkcjonalnego. Ken Thompson ostrzegł nas, że nasi kompilatorzy mogą nas oszukać. Edsger Dijkstra nawoływał do zachowywania pokory przed własnym umysłem.
Kenneth Iverson postąpił inaczej.
W 1979 roku przedstawił nam koncepcję „notacji jako narzędzia myślenia”. Twierdził, że sposób, w jaki piszemy kod, zmienia sposób, w jaki myślimy. Dobra notacja uwalnia mózg od niepotrzebnej pracy. Aby to zrobić, Iverson stworzył APL. APL wygląda strasznie, jest gęsty od symboli przypominających greckie litery w stanie odmienionej świadomości. Pozwoliło to jednak matematykom myśleć raczej równaniami niż cyklami. Nie było już potrzeby przekładania matematyki mentalnej na niezręczny język Fortran. To zadziałało. Nie wszędzie zostało to przyjęte. Ale to nie miało znaczenia. Udowodnił, że dwa języki mogą stać się jednym.
Teraz, sześćdziesiąt lat później, mamy problem dwóch języków.
Dominuje Python. Wszyscy go kochają. To ten przyjaciel na imprezie, który powie ci wszystko, ale nie jeździ okropnym samochodem. Python jest powolny. Brutalnie powoli. Obrońcy machają rękami. To nie pomaga.
Badacze prototypują w Pythonie, ponieważ jest przyjazny. Następnie, gdy ważna jest wydajność, przepisują krytyczne części w C++ lub Rust. Robią to dwa razy. Agenci kodujący AI nie mogą tego naprawić. Optymalizacja ma swoje dno. Jeśli podłoga jest powolna, budynek jest powolny.
Pomyśl o budowie. Drzewo jest łatwe do piłowania. W sobotę możesz postawić szopę. Metal jest trudny w obróbce. Ale drapaczy chmur nie buduje się piłą. A co by było, gdybyś miał drzewo mocne jak stal? A może język tak ergonomiczny jak Python, ale szybki jak C?
Jesteśmy chciwi.
Te słowa napisało w 2012 roku czterech informatyków. Byli to użytkownicy Matlaba, hakerzy Lisp, Pythoniści, Rubiści i ćpuny pereł. Nienawidzili faktu, że każdy instrument, który lubili, był świetny w jednej rzeczy i straszny w czymś innym. Chcieli wszystkiego. Otwarte źródło. Prostota dla początkujących. Wystarczająco mocny, aby poradzić sobie z najcięższymi zadaniami. Nazwali ją Julią.
Julię poznałam w 2017 roku. To był przypadek. Słuchałem Sebastiana Hsiunga, neurologa, który mapuje konektomy mózgowe. Sama nazwa wydawała się przeprosinami dla reszty branży. Zapomnij o C++ i śwince. Albo nawet Haskella. Julia była urocza. Prosty.
Został również starannie zaprojektowany.
Twórcy patrzyli, jak inne języki zawodzą. Wzięli dobre pomysły i zostawili bagaż. Do 2026 roku społeczność Julii w dziwny sposób dojrzała. Żadnego dramatu. Żadnych wojen o składnię. Przyciąga naukowców, nie tylko programistów. Nie interesują ich gry umysłowe. Chcą rezultatów. Na JuliaCon ludzie przechwalają się, jak przepisali kod MATLAB-a i uzyskali 60-krotne przyspieszenie w testach porównawczych. Niektórzy mówią, że dziesięć tysięcy razy szybciej niż Python.
Dlaczego więc nie jest tak wszędzie?
Dlaczego Stack Overflow tego nie lubi? Dlaczego Python wygrał?
Ekosystem. Python ma biblioteki do wszystkiego. Chcesz zrobić coś niezwykłego? Istnieje do tego pakiet Pythona. Julia nie ma takiej wagi.
Wsparcie korporacyjne. Objective-C wjechał na ramię Apple’a. Kotlin jest na ramieniu Google. Julia nie dostała nic od gigantów Big Techu. Dorastała sama.
A może wszystko szło dobrze.
Julia jest niszowa. Mały. Kochanie. Obsługuje duże maszyny w CERN i NASA. Pomaga opracowywać leki. Ona wykonuje tę pracę.
Czy sądzisz, że jakikolwiek język kiedykolwiek rozwiąże problem dwóch języków?
Wątpię. Dzielenie jest nieodłącznym elementem oprogramowania. Gry korzystają z silników C++ i skryptów Lua. Backendy serwerów łączą logikę Pythona z wydajnością Rusta. Rozwój front-endu kończy się niepowodzeniem za każdym razem, gdy próbuje wdrożyć Rust lub Go.
Ciągle szukamy złotego środka. Drzewo, które nie gnije. Python, który nie zwalnia.
Budujemy z tego, co działa. Jeżeli tak nie jest, zmieniamy instrumenty. To nie jest błąd.
To jest praca.
