Szukasz najlepszych specjalistów od machine learningu? Znajdziesz ich w kilka kliknięć.

Jaki język jest najlepszy do machine learningu w 2022?

20 lut 20229 min czytania

Dawid Karczewski

Senior full stack developer i CTO w Ideamotive.

Najlepszy język do machine learningu

Machine learning to świetny przykład technologii, która niedawno przeszła ze świata akademickiego i badań teoretycznych do zastosowań praktycznych i codziennego wspierania biznesu. Po osiągnięciu masy krytycznej branża musi dopasować się do rozmaitych potrzeb i nisz, które korzystają z różnych stosów technologicznych. 

 

Kluczowym efektem wszechstronności i użyteczności rozwiązań opartych na machine learningu jest wzrost finansowania i inwestycji. Według szacunków PwCdo 2030 roku można zyskać nawet 15,7 biliona dolarów, po prostu stosując AI w globalnym biznesie i gospodarce. Firma przewiduje też, że wzrost PKB lokalnych gospodarek może sięgnąć 26%. 

 

PwC’s Global Artificial Intelligence Study: Exploiting the AI Revolution

Źródło: PwC’s Global Artificial Intelligence Study: Exploiting the AI Revolution

 

Wszystko to można jednak zyskać tylko dzięki dobremu wdrożeniu przez wykwalifikowanych inżynierów. A to nie jest łatwe. Data scientist, data engineer i inżynier machine learningu nie są ani łatwi do znalezienia, ani tani. To wysoko wykwalifikowani specjaliści, którzy mogą dziś przebierać w pracodawcach. 

 

Data science korzysta też z nieco innego stosu technologicznego niż samo programowanie - nie obawiaj się jednak, przeprowadzimy Cię przez najlepsze i najpopularniejsze opcje w tworzeniu rozwiązań AI!

 

AI in Business

Języki programowania do machine learningu

Zatrudnienie specjalisty od AI jest w praktyce jeszcze trudniejsze niż znalezienie dobrego inżyniera oprogramowania. Obaj pracują z kodem i komputerami, ale o ile programowanie jest tajemnicze, lecz zrozumiałe, o tyle data science bywa czarną skrzynką, o której procesie wiadomo niewiele albo nic. Ostatecznie nie chodzi tu o zaprogramowanie komputera, ale o nauczenie maszyny, by programowała samą siebie - a to zupełnie inna historia.

 

I choć niemal każdy specjalista technologiczny ma własną intuicję co do nowoczesnych języków programowania, to bezpośrednie zastosowanie i możliwe wykorzystanie konkretnego języka w machine learningu bywa zupełnie inne. Sam zobacz poniżej. 

1. Python w machine learningu

Python jest bezsprzecznym liderem -  korzysta z niego 57% data scientistów, a 33% przedkłada go nad inne języki programowania. Język jest elegancki, lekki i tak prosty w użyciu, jak tylko język programowania może być. 

To także wszechstronny język obsługujący różne zastosowania, a użyty we właściwym frameworku z dobrym zestawem bibliotek potrafi też napędzać aplikacje webowe albo poważne skrypty w zastosowaniach biznesowych. 

Python: łatwość i szybkość pisania kodu

Łatwy język programowania przyspiesza pracę - programista Pythona nie jest skrępowany sztywnymi procedurami ani wyrafinowanymi architekturami wbudowanymi w system - może po prostu napisać to, co ma napisać. 

Oto mały przykład: 

 

C:

 

Java:

 

Python:

 

Sama prostota, prawda?

Python: pula programistów

Python jest łatwy do nauki, coraz popularniejszy i szybki w pisaniu - czego chcieć więcej? Dlatego jest obecnie drugim najpopularniejszym językiem programowania na świecie (według zestawienia RedMonk). Pula talentów jest więc stosunkowo duża, a patrząc na trendy, będzie rosnąć również w przyszłości. 

Python: wszechstronność

Python jest łatwy w użyciu i obsługuje wiele bibliotek oraz frameworków, które czynią go jeszcze bardziej wszechstronnym. Błyszczy jednak w dwóch kategoriach: 

  • Machine learning
  • Web Development

Można powiedzieć, że jest wiele innych zastosowań, w których Python sobie nie poradzi - na przykład naprawdę trudno napisać w nim system operacyjny czy aplikacje na poziomie sprzętu, a dostarczenie frontendowego SPA w tym języku bywa wyzwaniem. Na backendzie poradzi sobie jednak całkiem dobrze. 

 

Czy zatem Python jest najlepszym językiem do machine learningu? Na oko tak, ale nie zawsze i nie w każdym możliwym przypadku. Dlaczego? Sprawdź poniżej!

2. Scala w machine learningu

Wiele osób nie znosi Javy za rozdęcie i uciążliwość w pisaniu kodu - i to zupełnie naturalne. Jeśli coś istnieje we wszechświecie, ma też swoich hejterów, z dumnym wyjątkiem Chucka Norrisa (serio - ODWAŻYSZ się nie lubić Chucka Norrisa?)

 

 

Scala to dobry przykład konstruktywnej krytyki - język zaprojektowano tak, by uniknąć wad Javy, zachowując jej zalety. Ma statyczny system typów i wysoką zgodność z bibliotekami oraz frameworkami Javy. 

W przeciwieństwie do Pythona Scala jest językiem kompilowanym, dzięki czemu wykonywany kod działa znacznie szybciej. 

Scala: łatwość i szybkość pisania kodu

Scala i Java odpowiadają na te same potrzeby i mają pełnić podobne role - mimo różnic dzielą więc filozofię i wymagania. Fundamentem Scali jest praca z aplikacjami klasy enterprise, na dużej bazie danych, w ramach skalowalnego rozwiązania. Językowi brakuje przez to elastyczności i swobody, jakie daje Python, ale zapewnia stabilność. 

Scala: pula programistów

Scala rzadko bywa pierwszym wyborem, ale weterani Javy stosunkowo łatwo ją opanowują. Gdy potrzebujesz programisty Scali, często łatwiej znaleźć kogoś chętnego, by się jej nauczyć, niż szukać talentu na zewnątrz. 

Scala nie należy do czołowych języków programowania, ale zyskuje uwagę właśnie dzięki machine learningowi. Dlaczego - sprawdź poniżej. 

Scala: wszechstronność

Scala to język klasy enterprise i błyszczy przy budowie aplikacji opartych na big data, które przeżuwają gigantyczne ilości danych. Tam, gdzie Pythonowi zaczynają boleć mięśnie, Scala nawet się jeszcze nie rozgrzała. 

To solidny język backendowy, ni mniej, ni więcej, i tam, gdzie Python dostarcza błyskotliwe i efektowne modele, Scala potrafi wykonać mnóstwo ciężkiej pracy. 

3. Java w machine learningu

Java to kolejny język obecny od dawna mimo krytyki i licznych wyrazów niechęci w społeczności. To solidny język ogólnego przeznaczenia. Przypomina C i C++, ale ma znacznie mniej poleceń niskopoziomowych. Naprawdę trudno byłoby napisać w Javie system operacyjny, ale łatwo wykorzystać ją w architekturze klient-serwer - i właśnie tam Java jest używana najczęściej.  

Java: łatwość i szybkość pisania kodu

Javę zaprojektowano tak, by była stabilna i niezawodna. Ma też silny paradygmat programowania obiektowego, w praktyce wymuszony przez język. Język jest również podatny na złe praktyki, które potrafią zdestabilizować cały kod. 

 

Sam język bywa mocno krytykowany z wielu powodów. Ale do rzeczy - język jest złożony i ma wdrożonych wiele zasad, przez co pisanie kodu jest znacznie wolniejsze dla programistów Javy.

Java: pula programistów

Mimo licznych przeciwników Java pozostaje popularna i cieszy się uznaniem twórców oprogramowania klasy enterprise. Błyszczy na serwerach i przy intensywnym przetwarzaniu danych. Ze znalezieniem programisty nie powinno więc być problemu. 

Java: wszechstronność

Powiedzmy wprost - Java NIE jest językiem zorientowanym na machine learning. To koń roboczy aplikacji enterprise, którego zadaniem jest obsługa operacji na dużych zbiorach danych w systemach klasy ERP czy CRM. Istnieje jednak dobry (niektórzy mówią, że doskonały) framework Weka , który wspiera podstawy machine learningu. Można w nim łatwo uruchomić drzewa decyzyjne, regresję czy algorytmy feed-forward. W połączeniu ze środowiskiem aplikacji Javy, obfitującym w dane, potrafi dać zabójcze połączenie na poziomie enterprise. 

 

Zapomnij jednak o deep learningu czy innych sieciach neuronowych w Javie, tak jak wolałbyś zapomnieć o wbijaniu gwoździa śrubokrętem. To po prostu nie jest właściwe narzędzie.  

4. R w machine learningu

Są złośliwi krytycy, którzy nazywają przełomową, zmieniającą świat technologię machine learningu „statystyką na sterydach”. Choć taka dawka sterydów zabiłaby nawet młodego Arnolda Schwarzeneggera, związek między statystyką a machine learningiem pozostaje silny. 

 

R to język zorientowany na obliczenia statystyczne i wizualizację danych, który cieszy się ciekawą popularnością w środowisku machine learningu.

R: łatwość i szybkość pisania kodu

W przeciwieństwie do wielu opisanych wyżej języków R jest przeznaczony dla osób niebędących programistami: analityków, data minerów i statystyków. Obsługuje nie tylko wiersz poleceń, ale też wiele przyjaznych środowisk IDE, takich jak Jupyter i RStudio, które stawiają na łatwość użycia (Jupyter działa nawet w przeglądarce) i dają liczne narzędzia, np. do zarządzania bibliotekami czy rysowania rozbudowanych wykresów.

R: pula programistów

Według Indeksu TIOBE, R jest obecnie 13. najpopularniejszym językiem programowania, więc pula talentów powinna być niezła. Z drugiej strony rzadko bywa pierwszym wyborem, więc zachęcenie data scientista wyszkolonego w Pythonie do nauki R może być dobrym pomysłem. 

R: wszechstronność

R bywał najpopularniejszym narzędziem do budowy aplikacji machine learningowych i pozostaje popularny dzięki rozbudowanym i wszechstronnym narzędziom do łatwego przetwarzania danych. Wracając do początku - akademicy używają go do obliczeń opartych na danych i statystyce od ostatniej dekady poprzedniego wieku. Zakładając znajomość innych języków programowania (albo mocne wsparcie kogoś, kto je zna), można w nim łatwo dostarczyć zaawansowane rozwiązania machine learningowe. 

R nie jest tak elastyczny i wszechstronny jak Python, a budowanie w nim samodzielnej aplikacji brzmi jak żart. Gdy jednak chodzi o eksplorację danych, prototypowanie i sprawdzanie scenariuszy „co jeśli” na dużym zbiorze danych, ten język świeci jaśniej niż tysiąc słońc. 

5. JavaScript w machine learningu


Nie ma dobrego artykułu porównującego języki programowania bez wzmianki o JavaScripcie, prawdopodobnie najpopularniejszym języku na świecie. Można przyjąć, że napędza internet razem z  CSS, PHP i HTML-em. Zabawne, że języka nie stworzono z myślą o sieci, lecz by wspierał tworzenie makr. 

Ostatecznie używają go wszyscy web developerzy, chcą tego czy nie, tak jak kierowcy używają kół - szczerze mówiąc, nie ma innej opcji. 

JavaScript: łatwość i szybkość pisania kodu

Języka łatwo się nauczyć dzięki niezliczonym poradnikom, FAQ i rozwiązanym problemom dostępnym online. To w praktyce jeden z najłatwiejszych języków programowania, a pisanie kodu bywa zarazem szybkie i wygodne. Można też być dobrym i poszukiwanym programistą, znając wyłącznie JavaScript - sytuacja stosunkowo rzadka w świecie tworzenia oprogramowania. 

JavaScript: pula programistów

Język jest też popularnym pierwszym wyborem programistów ze względu na duży popyt na osoby biegłe w tej technologii. 

 

Szczerze mówiąc - czy jest na świecie JAKIKOLWIEK programista, który zupełnie nie zna JavaScriptu? Wątpię. 

JavaScript: wszechstronność

Choć języka nie zaprojektowano z myślą o aplikacjach webowych, radzi sobie w nich zaskakująco dobrze, używany zarówno na froncie, jak i na backendzie. Ale po co w ogóle stosować w nim machine learning? 

 

Okazuje się, że czasem trzeba użyć tych technik po stronie klienta. A to daje ciekawe możliwości, w tym dostęp do czujników urządzenia: kamery, akcelerometru czy GPS-a. Sprytna firma potrafi to wykorzystać, by dostarczyć wiele świetnych funkcji - i właśnie dlatego JavaScript i machine learning tworzą zaskakująco dobry zespół. 

 

Na tyle dobry, że najpopularniejsza biblioteka machine learningowa TensorFlow ma również implementację w JavaScripcie. 

6. Lisp w machine learningu

Oto dziadek Lisp. To drugi najstarszy wciąż używany język programowania - Lisp istnieje od 1958 roku. Co jeszcze bardziej imponujące, Lispa zaprojektowano jako język skupiony na AI, stworzony do pracy nad sztuczną inteligencją. 

 

Pomyśl tylko - język zaprojektowany do budowy sztucznych mózgów powstał siedem lat po tym, jak ludzie odkryli, że klawiatura może być wygodniejszym sposobem wprowadzania danych niż karty perforowane czy taśma papierowa. Pragnienie badaczy, by komputery naśladowały nasze mózgi, jest niemal tak imponujące, jak nieco niepokojące…

Lisp: łatwość i szybkość pisania kodu

Lisp nie jest ani łatwy, ani szybki w pisaniu. Bywał taki w czasach, gdy powstawał. Sam język oczywiście ewoluuje, są stałe rewizje i aktualizacje, ale do Pythona czy JavaScriptu wiele mu brakuje, gdy chodzi o budowanie aplikacji. 

Z drugiej strony Lisp cieszy się dużym uznaniem za architekturę, którą wymusza, i praktyki, na których się opiera. Wiele opinii podkreśla elegancję tego języka, a niejeden współczesny programista uznaje go za „otwierający oczy”, a nawet „oświecający”.

God wrote in Lisp code

When he filled the leaves with green.

The fractal flowers and recursive roots:

The most lovely hack I've seen.

Bob Kanefsky, "Eternal Flame" [1]

Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot.

 

You can use C++ if you want with GNOME, but we don't assume that you're going to write C++. It's to a large extent based on Scheme, which is a dialect of LISP. LISP being the most powerful and cleanest of languages, that's the language that's the GNU project always prefers.

Richard Stallman in: "GNU's Not Linux"

 

Oczywiście nie wszystkie opinie są tak przychylne:

Lisp has all the visual appeal of oatmeal with fingernail clippings mixed in.

Larry Wall, "Wherefore Art, Thou?", The Perl Journal 

 

Mimo to Lisp wywarł imponujący wpływ, zarówno kulturowy, jak i technologiczny.  

Lisp: pula programistów

Mimo rosnącej od 2000 roku popularności Lispowi wciąż daleko do liderów takich jak Java, Python czy JavaScript. Stracił popularność w latach 70., gdy C zyskało wielkie uznanie, a Javę mocno promowano. Język jest więc obecnie niepopularny, a znalezienie programisty bywa wyzwaniem. 

Lisp: wszechstronność

Jeśli chodzi o wszechstronność samego Lispa, jest tylko jedno słowo - ekstremalna. Lisp daje programiście niemal nieskończone możliwości, w tym budowanie własnych, dziedzinowych języków programowania osadzonych w kodzie. Dzięki naturalnej architekturze języka możliwości zastosowań są też niezliczone. 

 

Greenspun's Tenth Rule: Any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp

 

Nic dodać, nic ująć. 

 

Z drugiej strony Lisp cierpi jednak na ograniczoną liczbę frameworków, bibliotek i innych narzędzi, powszechnych w popularniejszych językach programowania. W praktyce wszechstronność jest więc ograniczona brakiem odpowiednich narzędzi, które przyspieszyłyby wdrożenie pomysłu. 

7. C++ w machine learningu


Popularny, wszechstronny, potężny i irytujący w użyciu - tak w skrócie można opisać C++. Język istnieje od dawna i daje stabilną oraz niezawodną platformę do wielu zastosowań. Chwali się go też za wydajność, przez co jest bronią z wyboru twórców gier i programistów, którym zależy na szybkim wykonywaniu programów. 

C++: łatwość i szybkość pisania kodu

Osoby, które chwaliły wyżej Lispa, często krytykowały C++. Wśród najbardziej wytrwałych przeciwników tego języka można wymienić Linusa Torvaldsa i Richarda Stallmana. Jako główną wadę wskazują wysoką złożoność języka. Jest on tak skomplikowany i przeładowany funkcjami, że niektórzy programiści otwarcie przyznają, iż piszą w C++, ale nie korzystają z pewnych możliwości. 

C++: pula programistów

Mimo wad C++ pozostaje jednym z najpopularniejszych języków programowania. Utrzymuje też popularność na kursach uniwersyteckich, więc inżynierowie oprogramowania po studiach zwykle go znają. 

 

Nie znaczy to jednak, że go lubią. 

C++: wszechstronność

I tu C++ błyszczy. Uchodzi za język niższego poziomu niż większość popularnych języków machine learningu, więc maszynie łatwiej go czytać. Dzięki temu nadaje się do dostarczania funkcji na poziomie sprzętu, jak system operacyjny czy podobne. Jeśli więc potrzebujesz modelu machine learningowego działającego na IoT, C++ może być bronią z wyboru. 

 

C++ działa też szybko. A to oznacza, że algorytmy w nim napisane również działają szybko. Można powiedzieć, że to najlepszy język programowania do machine learningu, ale najgorszy do uczenia się machine learningu. 

Podsumowanie

Wbrew powszechnemu przekonaniu i śmiałym stwierdzeniom z literatury najczęstsza i najtrafniejsza odpowiedź to nie 42. To „to zależy”. W tym konkretnym przypadku wybór języka programowania i narzędzi zależy od projektu, który masz dostarczyć.  Patrząc na powyższą listę, wybór właściwego nie jest tak prosty, jak się wydaje (wskazówka: Python nie jest najlepszym wyborem we wszystkich możliwych przypadkach). 

 

Jaki jest więc najlepszy język do machine learningu w 2022 roku? Ten, który najlepiej odpowiada Twoim potrzebom. Nie wiesz dokładnie, jakie są Twoje potrzeby? Nie martw się - nie jesteś sam! Jeśli chcesz wybrać właściwą technologię ML do kolejnego projektu opartego na ML, skontaktuj się z naszymi konsultantami Machine Learning a pomożemy Ci!

Dawid Karczewski

Dawid jest full stack developerem. Tworzy aplikacje w Ruby on Rails i React Native od pierwszego pomysłu aż po wdrożenie. Buduje dla naszych klientów rozwiązania, które pomagają im rosnąć.

Zobacz wszystkie wpisy autora
home-05

Szukasz utalentowanych inżynierów, którzy zbudują Twój produkt cyfrowy?

Nasi sprawdzeni eksperci są gotowi dołączyć do Twojego zespołu.

Zatrudnij inżynierów Machine Learning
artificial intelligence04

Wdrażanie sztucznej inteligencji w Twojej firmie

Praktyczny przewodnik dla przedsiębiorców i product ownerów

Czytaj teraz

Szukasz ekspertów od machine learningu do swojego zespołu?

W naszej sieci talentów czekają dziesiątki zweryfikowanych specjalistów od machine learningu.