Spróbuj na przykład jeśli szukasz niszy na rynku.
Tytułem wstępu
Julia to naukowy język programowania, który jest darmowy i dostępny jako open source. To stosunkowo nowy język, który czerpie inspirację z Pythona, MATLAB i R. book. Stanowi język wysokiego poziomu więc algorytmy mogą być wygodnie (dla człowieka) zapisywane ale też jest to język dość szybki – od początku był tworzony z myślą o wydajności.
Szybkość
Na stronie projektu można znaleźć mikro-testy porównawcze. Choć nie są one kompleksowe to jednak pokazują wydajność kompilatora na wielu typowych kawałkach kodu, takich jak wywołania funkcji, parsowanie ciągów, sortowanie, pętle numeryczne, generowanie liczb losowych, rekurencja czy operacje tablicowe.
Zostały one napisane w celu przetestowania wydajności identycznych algorytmów i wzorców kodu zaimplementowanych w każdym języku. Na przykład testy porównawcze Fibonacciego używają tego samego podwójnie rekurencyjnego algorytmu, a testy porównawcze sumowania pi używają tej samej pętli for.
W testach tych Julia plasuje się w czołówce, razem z LuaJIT i Rust, wyprzedzając Go, Fortran i Javę. Najbardziej z tyłu zostało R i Octave, poprzedzone przez Pythona. A, nie czytałeś jeszcze naszego artykułu o szybkim Ruby?
Typowanie i nie tylko
System typów Julii jest dynamiczny, ale zyskuje pewne zalety statycznych systemów typów, umożliwiając wskazanie, że dane wartości są określonego typu. Może to być bardzo pomocne w generowaniu wydajnego kodu.
Domyślnym zachowaniem w Julii, gdy pomijane są typy, jest zezwolenie na wartości dowolnego typu. W ten sposób unika się konieczności każdorazowego jawnego używania typów. Jednak gdy potrzebne jest sprecyzowanie typu, łatwo jest stopniowo wprowadzać jawne adnotacje typu do wcześniej „nietypowego” kodu. Dodawanie adnotacji służy trzem głównym celom: skorzystaniu z mechanizmu Julii wielokrotnego (multiple-dispatch) wysyłania, poprawieniu czytelności i wyłapaniu błędów programisty.
Sprawdź oferty pracy na TeamQuest
Opisując Julię w żargonie systemów typów, można powiedzieć iż jest ona dynamiczna, mianownikowa i parametryczna. Typy ogólne można sparametryzować, a relacje hierarchiczne między typami są jawnie deklarowane, a nie implikowane przez zgodną strukturę. Jedną ze szczególnie charakterystycznych cech systemu typów Julii jest to, że typy konkretne nie mogą nawzajem tworzyć podtypów: wszystkie typy konkretne są ostateczne i mogą mieć tylko typy abstrakcyjne jako ich nadtypy. Chociaż na pierwszy rzut oka może się to wydawać nadmiernie restrykcyjne, ma wiele korzystnych konsekwencji i zaskakująco niewiele wad. Zdaniem twórców tego języka zdolność do dziedziczenia zachowania jest znacznie ważniejsza niż zdolność do dziedziczenia struktury, a dziedziczenie obu powoduje znaczne trudności w tradycyjnych językach obiektowych.
Julia oferuje także przetwarzanie rozproszone oraz kompilator just-in-time (JIT).
Jak tego użyć?
Jest kilka sposobów na uruchomienie Julii:
- W terminalu za pomocą wbudowanego wiersza poleceń Julii, używając plików binarnych ściągniętych ze strony projektu.
- Skorzystanie z obrazów platformy Docker z usługi Docker Hub obsługiwanej przez społeczność platformy Docker.
- JuliaPro firmy Julia Computing zawiera Julia i Juno IDE, a także dostęp do wyselekcjonowanego zestawu pakietów do plottingu, optymalizacji, uczenia maszynowego, baz danych i wielu innych (wymaga rejestracji).
Warto zaznaczyć, że Julia ma wbudowanego menedżera pakietów, który pobiera i instaluje pakiety z Internetu.
Jakie IDE? Kodowanie w Julii obsługuje m.in. Microsoft Visual Code Studio (po zainstalowaniu odpowiedniego rozszerzenia).