Z artykułu dowiesz się:
- Co to jest Mojo
- Jak powstał język programowania Mojo
- Co Mojo ma wspólnego z Pythonem
- Czym wyróżnia się nowy język programowania
- Jakie są jego zalety i wady
- Czy Mojo ma szansę stać się liderem
Skąd pomysł na Mojo?
Idealny język programowania nie istnieje. Zawsze kiedy pojawia się nowy, wraz z nim rodzi się nadzieja, że jednak tym razem udało się stworzyć prawdziwego rewolucjonistę, który zastąpi wszystkie pozostałe. Tak się nie stanie, chociaż trzeba przyznać, że każdy kolejny ma do zaoferowania nieco więcej niż starzy wyjadacze. Jeśli chodzi o Mojo, to założenie było łatwe – ma być to język użyteczny i prosty w obsłudze jak Python oraz szybki i wydajny jak C. Udało się!
Twórcami Mojo są Chris Lattner i Tim Davis, którzy stoją na czele startupa Modular zajmującego się infrastrukturą sztucznej inteligencji. Ich spotkanie nie mogło być przypadkiem. Poznali się w Google i razem uznali, że fragmentyczna infrastruktura jest dużym ograniczeniem dla sztucznej inteligencji. Postanowili więc nad tym popracować. Tak powstał Modular, a całkiem niedawno również język programowania Mojo.
Chris i Tim podeszli do tematu strategicznie. Postanowili wykorzystać Pythona, jako że to właśnie ten język programowania to dzisiaj prawdziwy lider, który jest stosowany m.in. w uczeniu maszynowym, a to kluczowa cecha całego projektu Modular. Z tego powodu Mojo dołączyło do ekosystemu Pythona, w pewnym sensie twórcy wykorzystali to, co już istnieje. Na pewno było to dla nich dużym ułatwieniem, większość składni już mieli, więc pozostało im zbudować mechanizm kompilacji i skoncentrować się na możliwościach programistycznych języka.
Mojo może się pochwalić szybkością programów nawet 35 000-krotnie większą niż Python. W przeciwieństwie do swojego interpretowanego wzorca, jest on kompilowany na kod maszynowy, do czego wykorzystywane są narzędzia LLVM. Napisany w C++ kompilator też nie znalazł się tutaj przypadkiem. Chris Lattner pracował nad nim wcześniej, więc zna go doskonale od podszewki. Mojo w tym przypadku po raz kolejny korzysta z dostępnych już zasobów, nie powstał od podstaw, jest inspirowany wieloma dostępnymi już narzędziami, chociaż zamysł był taki, aby był od nich zdecydowanie lepszy.
Mojo jest więc nadzbiorem Pythona – łączy jego funkcjonalność z nowymi rozwiązaniami. Właśnie dlatego najłatwiej jest na nim pracować tym programistom, którzy dobrze znają Pythona. Wdrożenie będzie zapewne tylko formalnością, chociaż trzeba uważać na znaczące zmiany. Jest pewnego rodzaju odpowiedzią na dynamiczny rozwój sztucznej inteligencji. Pojawił się więc w doskonałym momencie.
Mojo buduje przewagę nad innymi językami programowania
W Mojo znajdziesz elementy zarówno dobrze Ci znane z Pythona, jak również całkiem nowe. Język pozwala na używanie słów kluczowych let i var do deklarowania zmiennych, dzięki czemu można określić, czy są one mutowalne czy niemutowalne. W Mojo wprowadzono nowe słowo kluczowe fn, które umożliwia definiowanie funkcji. W słowach kluczowych dostrzec można też inspiracje zaciągnięte z Rusta, jak frazy inout, borrowed i owned, przy pomocy których ustala się własność danych.
To, co wyróżnia Mojo na arenie języków programowania wykorzystywanych do uczenia maszynowego, to na pewno jego skonkretyzowane przeznaczenie – jest dedykowany dla aplikacji AI i uczenia maszynowego i właśnie pod tym kątem został doskonale zoptymalizowany. Mojo świetnie sobie radzi z integracjami z takimi frameworkami i bibliotekami AI, jak PyTorch i NumPy. Kolejny wyróżnik to wydajna obsługa danych. Pozwala na efektywne korzystanie z paradygmatu SIMD. Ma to duże znaczenie dla algorytmów algebry liniowej, które są bardzo często używane w zadaniach z obszaru uczenia maszynowego.
W porównaniu do innych języków programowania Mojo może pochwalić się sprawną natywną obsługą zadań AI. Zawiera moduły m.in. do budowy sieci neuronowych w standardowej bibliotece, podczas gdy takie języki jak Python wymagają dodatkowych bibliotek.
Modular wytoczył mocne działa i może w przyszłości namieszać na arenie języków programowania. Według najnowszych danych Tiobe najpopularniejszym językiem programowania jest Python, a tuż za nim plasuje się C. Mojo więc czerpie wszystko co najlepsze od prawdziwych liderów. Od samego początku stara się zaznaczyć swój teren. Dąży do tego, aby być na czele języków programowania wyspecjalizowanych do współpracy ze sztuczną inteligencją. Jest (chyba) na dobrej drodze.
Kluczowe dodatki Mojo
Mojo cały czas jest w fazie rozwoju, jeszcze raczkuje, więc trochę czasu minie, zanim tak naprawdę stanie na nogi. Jednak już na tym etapie ma użytkownikom bardzo dużo do zaoferowania. Pakiet funkcjonalności Python uzupełnia o swoje dodatki, powstałe specjalnie z myślą o nim i jego przeznaczeniu.
Jeśli chodzi o składnię, to jest ona identyczna jak w Pythonie. Program składa się z instrukcji, które można pogrupować w bloki z uwzględnieniem konkretnego kryterium np. funkcji. Mojo wprowadza dwa dodatkowe sposoby deklarowania zmiennych – to słowo kluczowe let deklarujące niezmienną zmienną i słowo kluczowe var, które pozwala na ponowne przypisanie zmiennych. Oba słowa kluczowe obsługują specyfikatory typów. Poza tym Mojo obsługuje struktury przypominające klasy, chociaż są one od nich sztywniejsze. Właśnie z tego powodu Mojo pozwala na efektywniejsze zarządzanie wydajnością. Kolejny ważny dodatek to funkcje deklarowane za pomocą fn i def. Funkcja zadeklarowana przy użyciu fn ma domyślnie niezmienne argumenty i są bardziej restrykcyjne niż def.
Język programowania Mojo ma długą listę zalet. Na pewno jego infrastruktura pozwala na wykorzystanie równoległości bez wykonywania wielu czynności. Ma to duże znaczenie dla uczenia maszynowego. Ponadto to nadzbiór Pythona, co ułatwia jego naukę, nie trzeba startować od zera. Wiedza i doświadczenie w pracy na Pythonie to ogromna pomoc i solidne fundamenty. Mojo jest językiem preferowanym, ponieważ ryzyko wystąpienia błędów w produkcji zostało maksymalnie ograniczone. Błędy wychwytywane są w trakcie kompilacji.
Nie jest to jednak język bez wad, bo ustaliliśmy, że ideały się nie zdarzają. Na chwilę obecną Mojo jest jeszcze językiem niekompletnym, wciąż dużo mu brakuje. Zespół Modular aktywnie pracuje nad jego doskonaleniem, jednak trzeba podchodzić do niego z większą wyrozumiałością. Dla niektórych problemem może się okazać wciąż niewielka ilość materiałów edukacyjnym. Dla osób nieobeznanych z Pythonem może być trudno wejść w relację z tym językiem.
Czy Mojo wygryzie gigantów?
Ale właściwie dlaczego Mojo, a nie Python? Tutaj ponownie musimy wspomnieć o tym, że każdy język ma swoje braki i niedoskonałości, które inny próbuje uzupełniać. Tak jest też w tym przypadku. Python jest turbo elastycznym językiem, posiada też wysokowydajne skompilowane biblioteki. Nie grzeszy jednak zawrotną prędkością, jak np. C++. Chris Lattner i Tim Davis pomyśleli więc, że fajnie byłoby te cechy połączyć. Pod względem prędkości Mojo wygrywa z Pythonem.
Python ma też problemy z przetwarzaniem równoległym. Programiści starają się używać opakowań Pythona w obszarze szybszych języków, jednak skutkuje to problemem dwóch języków. Z tego powodu trudno jest debugować i rozwiązywać problemy z wydajnością.
Ciekawość specjalistów jest ogromna, chcą bliżej poznawać Mojo, traktując go jako dobrego kandydata na następcę Pythona. Jeremy Howard tak pisze na jego temat:
Aplikację Mojo można skompilować do małego, samodzielnego binarnego pliku, który szybko się uruchamia. To zmienia zasady gry! Pomyśl o rzeczach, które mógłbyś zrobić, gdybyś mógł szybko i łatwo tworzyć małe, szybkie narzędzia i dystrybuować je w jednym pliku.
Wciąż jednak nie możemy jednoznacznie odpowiedzieć na pytanie, czy Mojo napędzi rozwój sztucznej inteligencji. Jest jeszcze za wcześnie, tym bardziej że to język programowania, który dopiero uczy się chodzić. Na pewno spotyka się z dużym zainteresowaniem ze względu na swoją zawrotną szybkość. To może spowodować obniżenie kosztów utrzymania infrastruktury w firmach. Z jednej strony twórcy dużo skorzystali dzięki budowie nowego języka na fundamentach już istniejącego. Z drugiej zaś chcą konkurować z prawdziwym gigantem, który od kilku lat jest w czołówce najpopularniejszych języków programowania. Na tę pozycje ciężko pracował i długo zajęło mu, aby przebić się przez konkurentów. Przed Mojo więc trudne zadanie, musi do siebie przekonać rzeszę fanów Pythona. Ma predyspozycje, ale pozostaje jeszcze kwestia lojalności – czy społeczność Pythona pozwoli się przekonać…
Mojo zdążył już zachwycić programistów swoją prostotą, wydajnością i szybkością. Najbardziej spostrzegawczy mogą mieć mu jeszcze dużo do zarzucenia, ponieważ wciąż nie jest to język kompletny. Python jednak poczuł już jego oddech na swoich plecach i ma powody, żeby zgrzytać zębami. Jego pozycja na chwilę obecną nie jest jeszcze zagrożona, ale Mojo dopiero zaczyna swoją karierę i lata świetności ma dopiero przed sobą. Czy dobrze je wykorzysta? Jesteśmy ciekawi!