20 lut 20229 min czytania
Dawid Karczewski
Senior full stack developer i CTO w Ideamotive.
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%.

Ź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!
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.

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.
Ł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 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 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:
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!
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 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 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 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.
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.
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.
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.
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.
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.
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.
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 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.
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.
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.
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ę.
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.
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 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.
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.
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.
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.
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.
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ą.
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.
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 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 autoraSzukasz utalentowanych inżynierów, którzy zbudują Twój produkt cyfrowy?
Nasi sprawdzeni eksperci są gotowi dołączyć do Twojego zespołu.
Popularne artykuły
21 inspirujących projektów UI aplikacji mobilnych na 2023 rok
Michał Pruciak 7 min czytania
MedTech vs HealthTech vs BioTech: jakie są różnice?
Michał Pruciak 7 min czytania
10 biznesowych zastosowań sieci neuronowych (z przykładami!)
Michał Pruciak 4 min czytania
10 przykładów dobrych praktyk w web designie na 2023 rok
Adam Kozłowski 7 min czytania
28 znanych aplikacji webowych napisanych w PHP
Dawid Karczewski 14 min czytania
Praktyczny przewodnik dla przedsiębiorców i product ownerów
Czytaj terazJakich usług AI szukasz?
W naszej sieci talentów czekają dziesiątki zweryfikowanych specjalistów od machine learningu.
Dane rejestrowe:
Firma
Usługi
Najczęściej poszukiwani specjaliści
Ocena 4,8 / 5,0 od klientów z różnych branż i lokalizacji.