Uwaga! Trwają prace nad nową wersją serwisu. Mogą występować przejściowe problemy z jego funkcjonowaniem. Przepraszam za niedogodności!

⛔ Potrzebujesz wsparcia? Oceny CV? A może Code Review? ✅ Dołącz do Discorda!

Chcesz być (lepszym) programistą i lepiej zarabiać? Umów się na rozmowę - powiem Ci jak to zrobić!

JavaScript czy Python? Który jest lepszy?

Piotr Dul, senior software developer, wciela się w rolę adwokata języka programowania Python i stara się wykazać jego wyższość nad językiem JavaScript, który jest reprezentowany przez prowadzącego podcast (Mateusz Bogolubow). Rozmawiamy m.in. o tym jakie możliwości posiadają oba języki i gdzie ich skuteczność jest najwyższa.

Poruszane tematy

Gość: Piotr Dul – kim jest i czym się zajmuje
Czy możesz się przedstawić i powiedzieć, co łączy Cię z branżą IT?

Rozwój i popularność języka Python
Zacznijmy od rysu historycznego, kroki milowe w rozwoju danego języka programowania oraz obecną popularność. Zaczynamy od Pythona, potem przejdziemy do JavaScript.

Cechy charakterystyczne języka JavaScript
Jakie cechy charakterystyczne ma dany język programowania? Zacznijmy tym razem od JavaScript.

Dlaczego warto rozważyć naukę języka Python
Dlaczego oba języki programowania są polecane jako te od których warto zacząć? Zaczynamy od Pythona.

Możliwości aplikacji webowych w języku JavaScript
Aplikacje webowe - możliwości, popularność, dostępne rozwiązania, popularne wdrożenia. Startujemy od JavaScript.

Uczenie maszynowe i analiza danych w języku Python
Uczenie maszynowe (ML) oraz analiza danych - (jak wyżej). Zaczynamy od Pythona.

Kosolenie się w tworzeniu aplikacji mobilnych w języku JavaScript
Aplikacje mobilne (jak wyżej) - Zaczynamy od JavaScript.

Automatyzacja i skrypty w języku Python
Automatyzacja i skrypty - zaczynamy od Pythona.

Tworzenie gier przy użyciu JavaScrypt
GameDev - zaczynamy od JavaScrypt.

Tworzenie aplikacji desktopowych w języku Python
Aplikacje desktopowe - zaczynamy od Pythona.

Zastosowania języka JavaScript w IoT
IoT - zaczynamy od JavaScript.

Blockchain i kryptowaluty w języku Python
Blockchain i kryptowaluty - zaczynamy od pythona.

Podsumowanie tematów dotyczących języków programowania
Podsumowanie[a].

Rekomendacje książek do nauki języków programowania
Jaką książkę polecisz osobom, które chcą lepiej poznać dany język programowania?

Piotr Dul – kontakt
Gdzie możemy Cię znaleźć w sieci?

Polecana książka

➡ Kyle Simpson, You Don't Know JS Yet

➡ Mark Pilgrim, Dive Into Python 3

Kontakt do gościa

➡ WWW: devmentor.pl/python

➡ LinkedIn: www.linkedin.com/in/piotr-dul/

Transkrypcja

Dziś moim gościem jest Piotr Dul, mentor i developer z wieloletnim doświadczeniem. Wspólnie postaramy się znaleźć odpowiedź na pytanie, który język programowania jest lepszy. Piotr będzie adwokatem języka Python, a ja języka JavaScript. A Ty, drogi słuchaczu, sędziom wydającym wyrok. Daj znać w komentarzu, kto wygra. Piotrze, dziękuję, że przyjąłeś moje zaproszenie na rozmowę.

To ja bardzo dziękuję za zaproszenie. Zawsze miło mi się z Tobą rozmawia.

Zacznijmy od Twojej osoby. Powiedz nam coś więcej o sobie. Co łączy Cię z branżą IT?

Przedsiębiorcą jestem od 2009 roku i od razu w branży IT. Na początku programowałem w PHP, ale dość szybko doszedłem do wniosku, że tak naprawdę język programowania jest tylko narzędziem, które służy do wykonywania projektów. Dlatego szybko zainteresowałem się innymi językami, w tym Pythonem. Z Pythonem jestem związany od około pięciu lat, kiedy pierwsze zlecenie wpadło do mojej firmy. Wtedy się tym Pythonem zainteresowałem.

Po tym zleceniu pogłębiłem swoje zainteresowanie tym językiem i nie tylko. Postanowiłem rozwijać się w kierunku Data Science, gdzie udało mi się napisać pracę dyplomową, używając tego języka. Taka ciekawostka: był to algorytm, który generował zagadki szachowe. Użyłem go później w grze komputerowej.

 

No dobrze, pewnie jeszcze będziemy trochę rozmawiać o Twoich projektach. A teraz może przybliżymy naszym słuchaczom rys historyczny, takie kroki milowe w rozwoju danego języka programowania. Możemy też wspomnieć o jego popularności, żeby było wiadomo, o czym rozmawiamy, a potem będziemy mówić o tym, jak to wygląda w konkretnej dziedzinie. Zacznijmy od Pythona, a potem przejdziemy do JavaScript, więc Ty Piotrze zaczynasz, a ja będę kontynuował.

Jasne. Początki są datowane na 1991 rok. Później Python 1.0 w 94 roku, Python 2.0 w 2000 roku, czyli minęło 6 lat. Pomiędzy zostały wprowadzone funkcje jak lambda, map, filter, reduce. Duży przełom między Pythonem 2.0 a 3.0, który ukazał się w 2008 roku. Przełom polegał na tym, że on nie był kompatybilny z wcześniejszymi wersjami. Natomiast bardzo upraszczał składnię, wprowadził nowe funkcje i był na pewno szybszy. Później sprawy potoczyły się dosyć szybko, bo od tego 2008 roku ekspansja Pythona poszła w kierunku nauki o danych, czyli właśnie sztucznej inteligencji, Data Science. I pomiędzy 2010 a 2020 rokiem powstawały takie biblioteki jak NumPy, Pandas, TensorFlow i PyTorch. To był naprawdę duży krok Pythona w kierunku właśnie Data Science i rozwoju zainteresowania tym językiem. W 2020 roku nastąpił koniec wsparcia dla Pythona 2.x, tzn. każdego Pythona z tego głównego wydania 2. Obecnie Python idzie głównie w kierunku nauki o danych i jest w tej dziedzinie bardzo popularny.

Może wspomnisz coś jeszcze o jego popularności, bo wiem, że patrzyłeś, jak wygląda jego popularność w tym rankingu TIOBE, jak on wypada na tle innych języków?

Python był czwarty, piąty jest właśnie JavaScript, więc dość wysoko. Dla porównania mój macierzysty pierwszy język, którym się nauczyłem programowania, czyli PHP, jest daleko, bo na trzynastym miejscu. 

Metodologia tego rankingu jest trochę dziwna. Bo tutaj spierają się popularnością w wyszukiwarkach, więc to, że ktoś coś wyszukuje, to nie wiem, czy to jest takie super miarodajne, ale jest, więc z tego korzystamy. 

Ja też zapisałem, że JavaScript jest na piątym miejscu. Ale nie spodobała mi się ta pozycja, więc poszukałem głębiej i trafiłem na Stack Overflow Developer Survey, to jest na podstawie ankiety właśnie ze Stack Overflow. Tam JavaScript uzyskał pierwsze miejsce jako najpopularniejszy język, ponieważ 68% programistów go używa. Samego Node.js używa 37% programistów. 

Jest też taka informacja, że NPM, czyli taki Node Package Manager, czyli Manager Package dla JavaScriptu, zawiera 2,3 miliona pakietów i jest najpopularniejszym takim ekosystemem, więc to też pokazuje, jak jest duży i co tam się dzieje. To, że się dzieje aż tyle, to też czasami nie jest dobre, ale zawsze liczby ładnie wyglądają, więc podaję. 

Zwróciłem też uwagę, że na GitHubie jest to druga technologia, akurat nie pamiętam, która jest pierwsza, ale właściwie nie wiem, czy to nie jest Python w 2024 roku. Więc JavaScript był najpopularniejszy do 2023, a chyba potem pierwsze miejsce przyjął Python właśnie przez tą popularność sztucznej inteligencji, o której sobie pewnie jeszcze dzisiaj będziemy mówić.

Więc ja poszukałem troszkę głębiej, żeby ten JavaScript lepiej wypadł, ale to też pewnie dzisiaj będziemy o tym mówić, że to wiąże się trochę z tym, że JavaScript jest w wielu różnych miejscach dość mocno popularnych i chyba też nie takich specjalistycznych, co powoduje, że więcej osób z niego korzysta. Tak mi się wydaje, że specjalizacja powoduje, że jednak dany język w rankingu może wypadać gorzej, ale to nie znaczy, że jest gorszy. Jak Ty na to patrzysz?

Rankingi mają to do siebie, że w zależności, kto je przygotowywał, to tak trochę wypadają. Mnie z JavaScriptem w ogóle nie dziwi, że jest tak dużo paczek znanych. Była gdzieś całkiem niedawno taka obiegowa opinia, że jak nie wyszła jakaś aktualizacja danego frameworka czy biblioteki w JavaScripcie, to prawdopodobnie on już nie żyje. Więc jest tego naprawdę dużo, natomiast Python nadrabia właśnie ostatnimi laty dzięki różnym bibliotekom i szerokiemu zastosowaniu sztucznej inteligencji.

Ja teraz wrócę do takiego rysu historycznego JavaScriptu, bo co ciekawe, pewnie większość wie o tym, ale JavaScript powstał w 10 dni i to była taka jego pierwotna wersja. Początkowo nazywał się Mocha, potem LiveScript, potem JavaScript i w zasadzie ta nazwa wynika z tego, że troszkę chcieli pozyskać popularność od Javy, więc nazwali JavaScript, co powoduje, że teraz wielu osobom, które zaczynają w ogóle przygodę z programowaniem i też niestety często rekruterzy mylą. Myślą, że Java i JavaScript to jest to samo, a to jednak nie jest to samo. 

Ten JavaScript powstał w 1995 roku. Twórcą jest Brendan Eich. Jest to współpraca Firefoxa kiedyś tam, a obecnie Brave. Nie wiem, czy korzystaliście, ale to też jest przeglądarka, która skupia się na prywatności. Warto do niej zajrzeć. 

Główne przeznaczenie JavaScriptu to byli początkujący programiści i ten JavaScript został zaprezentowany przy prezentacji przeglądarki Netscape Navigator. Pewnie większość z Was nie kojarzy, ale to była jedna z popularniejszych wtedy przeglądarek. Teraz już chyba nie istnieje. W każdym razie to był główny konkurent Internet Explorera, który obecnie jest Edge'em. W każdym razie IE nie miał zbyt dobrego PR-u, więc chyba postanowili zmienić jego nazwę. 

Podstawowy problem JavaScriptu był taki, że jego implementacja wyglądała inaczej w każdej przeglądarce, więc jak coś napisaliśmy na przykład w Netscape'ie, to wcale nie było powiedziane, że będzie działać w Internet Explorerze. To powodowało, że była duża niechęć do tego języka, tak bym powiedział, było dużo problemów, o czym zaraz sobie jeszcze powiemy.

W 2005 roku, czyli w zasadzie 10 lat po tym pierwszym wydaniu, pojawiła się technologia AJAX, która mocno wspierała rozwój stron internetowych. Wtedy pojawiła się koncepcja Single Page Application, czyli coś, co pozwala w zasadzie ładować dane na stronę bez jej przeładowania, co w dobie PHP, mieliśmy dzisiaj o niej nie wspominać, ale tak mi się przypomniało, że wtedy tak to wyglądało, żeby móc załadować dane, to musieliśmy przeładować stronę, żeby PHP mógł odpytać bazy danych i załadować stronę, a AJAX powodował, że tego nie potrzeba. Można było doładowywać dane bez przeładowania strony, co obecnie wydaje się w ogóle dziwne. My sobie scrollujemy stronę i nam się doczytują różne rzeczy, wtedy tak nie było.

No i w 2005 roku właśnie AJAX przy wykorzystaniu JavaScriptu pozwalał na coś takiego. To był taki zalążek tych wszystkich obecnie znanych bibliotek, frameworków typu Angular, React i Vue.js. To mocno rozpropagował Google, który wykorzystywał te rozwiązania w Gmailu czy Google Maps, które do dzisiaj z nich korzystają. To jest ciągle 2005 rok, a tu jeszcze trochę czasu.

Właśnie w 2009 wyszło jQuery, które obecnie jest chyba uważane za coś mocno zaszłego, ale wtedy to była rewolucja, która pozwalała napisać jeden kod, który był dobrze uruchamiany w Internet Explorerze i w innych przeglądarkach, co bardzo ułatwiało rozwiązywanie różnych problemów, w zasadzie pisanie stron i tak dalej. Ja jeszcze korzystałem z tego, wiem, że ostatnio wyszła nowa wersja jQuery, ale dużo osób uważa, że z jQuery korzystają tylko dinozaury, więc może dlatego ja o tym pamiętam, a Ty jak?

Chciałbym powiedzieć, że w moich ostatnich dwóch projektach widziałem jQuery, więc to jest nadal wykorzystywany framework.

  1. 2009 rok, więc jest jQuery, w 2009 też jest Node.js, czyli środowisko wykonawcze dla JavaScriptu, bo do tej pory cały czas myśleliśmy, że JavaScript to są przeglądarki, a obecnie to też jest język backendowy i to był 2009 rok.

W 2010 powstał NPM, czyli ten Node Package Manager, o którym wspominaliśmy, w którym jest 2,3 miliona paczek obecnie. Teraz nie pamiętam, gdzie mam te statystyki, ale chyba każdego miesiąca pojawia się 50 tysięcy nowych, więc dużo się dzieje.

Potem mamy 2012, pojawia się TypeScript, czyli coś, co pozwala nam typować kod w JavaScripcie. W zasadzie jest to trochę taka nakładka na ten JavaScript, nie chcę się za bardzo zagłębiać w te tematy, w każdym razie pewnie jeszcze będziemy wspominać, co to jest dynamiczne typowanie, czy silne typowanie i tak dalej.

Następnie 2013, pojawia nam się React na froncie od Facebooka. No i 2015, czyli powiedziałbym, troszkę rewolucja w JavaScripcie. Pojawiają się nowe rozwiązania, w końcu język staje się naprawdę wygodny, pojawia się ECMAScript 2015 znany też jako ES6. Dużo nowości, wszyscy zaczynają kochać JavaScript i pojawia się mocny rozwój tego języka. 

W tym czasie też pojawia się PWA, czyli Progressive Web Application, czyli taki tryb offline'owy w JavaScripcie, który pozwala uruchamiać aplikacje bez dostępu do internetu, przynajmniej w takiej ograniczonej wersji. 

Potem już co roku pojawiają się nowe wersje, już nie ma rewolucji, powiedzmy, że jest ewolucja, ale cały czas coś się dzieje w tym języku programowania. Trochę przegadałem temat, dużo się dzieje, dużo fajnych rozwiązań. Widać, że tu mocno się rozwija, nie wiem, chciałbyś to jeszcze jakoś skomentować?

Może jeszcze wspomnę, bo mówiłeś o założycielu, a ja nie powiedziałem. Guido van Rossum i to był Holender. Nazwa Python nie pochodzi od węża, może od tego by trzeba było zacząć, tylko od grupy Monty Pythona, więc taka ciekawostka.

Jeszcze sprawdziłem w moich notatkach i chyba się pomyliłeś, bo wcześniej mówiłeś, że w tym rankingu TIOBE, to Python jest na pierwszym miejscu.

O widzisz, to znaczy, że tak szybko wzrósł, znaczy się od czasu jak sprawdzałem, mam nieaktualne dane.

 

Jakie cechy charakterystyczne ma dany język programowania? Zaczniemy od JavaScriptu, więc znów ja troszkę powiem.

Pierwsza rzecz to dynamiczne typowanie, czyli brak typów, ale od razu nawiążę do tego, że TypeScript pozwala wprowadzić te typy. Jeszcze o tym powiemy, ale na początku może to być łatwiejsze, potem jednak to typowanie może być wygodniejsze.

Jest to język interpretowany, czyli nie potrzebujemy kompilacji przed uruchomieniem, co też jest bardzo fajne na początek. Może być wykonywany w przeglądarce, co powoduje, że jest tak popularny moim zdaniem. Możemy operować na drzewie DOM, czyli tak naprawdę możemy wyszukać sobie jakiś guzik, zrobić obsługę kliknięcia. Jeżeli ktoś kliknie na ten guzik, to możemy po prostu coś zrobić. Też jest to związane z tym, że ten język jest oparty na zdarzeniach, czyli właśnie mamy kliknięcie, wysłanie i tak dalej.

Mamy asynchroniczność, czyli nie czekamy na dane zdarzenie i program się wtedy zatrzymuje, tylko wysyłamy żądanie do serwera i czekamy na odpowiedź. Jak otrzymamy i nie wiemy, że to jest za sekundę czy za pięć, to wtedy się wykonuje dalszy kod. Asynchroniczność powoduje, że my nie wiemy, kiedy otrzymamy tą odpowiedź, więc jeżeli dwa razy do serwera wyślemy zapytanie, to nie wrócą w tej samej kolejności, tylko może to być losowe.

Na pewno jest wieloplatformowy, o czym też dzisiaj będziemy mówić. Już wspomniałem, że mamy frontend, mamy backend, ale mamy też aplikacje mobilne, mamy aplikacje desktopowe, więc to naprawdę duża różnorodność. 

I tak trochę śmiejąc się o tym, co powiedzieliśmy wcześniej, codziennie przełomowa biblioteka, bo jeżeli mamy miesięcznie 50 tysięcy nowych paczek w NPM, to któraś na pewno jest przełomowa. To tyle z mojej strony, jeśli chodzi o JavaScript.

To ja przewrotnie w Pythonie zacznę od czegoś, co się nazywa Zen Pythona. I to jest taka, nazwijmy nawet to, filozofia programowania, którą uprawiam i jakby ktoś cofnął się do naszego podcastu, w którym byłem też gościem u Ciebie, to ja mam taką dosyć prostą filozofię, że po prostu jest klient, jest rozwiązanie. I właśnie Python i ten Zen Pythona mówi o tym, że jest proste zastosowanie, prostota, czytelność, wszechstronność i szybkie prototypowanie, to jest właśnie to coś, co wyróżnia Pythona.

Idąc tak jeszcze po krokach, które wymieniałeś. To też jest dynamicznie typowany. Też jest interpretowalny, nie musi być kompilowany, może to jest łatwiejsze. Na pewno też ma bogaty ekosystem frameworków. Wymieniałeś dużo frameworków JavaScriptowych, natomiast sporo frameworków jest też takich ogólnego przeznaczenia, gdzie możemy zbudować całe strony internetowe, gdzie mamy też ORM-a i wszystko ułożone. Ale też jest sporo tak zwanych bibliotek Data Science'owych, o których też pewnie jeszcze będziemy wspominali. 

Wiele paradygmatów programowania obsługuje, czyli też obiektowość, proceduralne, funkcyjne, wieloplatformowy, działa też na wielu systemach operacyjnych, praktycznie na każdym. Co jeszcze wyróżnia Pythona? Na pewno społeczność. Może nie wychodzi aż tak dużo bibliotek jak w JavaScripcie, natomiast od pewnego czasu też sporo tych bibliotek powstało. I powstają cały czas nowe. 

Jeszcze jedną rzecz chciałem wymienić, to jest automatyczne zarządzanie pamięcią tzw. garbage collector. Nie musimy o to dbać, sam Python sobie z tym poradzi, praktycznie możemy zapomnieć o takim problemie. 

To tak z grubsza. Bardzo podobne można powiedzieć są te języki. Ja cały czas będę wracał do tego Zen Pythona, bo to jest coś, co przemawia mocno do mnie, tak jak już mówiłem, ta prostota i czytelność, bo spotkałem się w swoim doświadczeniu z rozwiązaniem stosunkowo prostych problemów w danej aplikacji w bardzo skomplikowany sposób. A ten Zen Pythona mówił o tym, żeby nie komplikować, żeby właśnie sobie ułatwiać, że ta prostota nad skomplikowaniem, brzmi to dosyć prosto, natomiast są całe książki o tym. Ten Zen Python bardzo do mnie przemawia. 

Można powiedzieć, kończąc tę część, że Python jako jeden z nielicznych stawia właśnie na prostotę, wygodę, jasność przekazu, skromność i czytelność. To jest w mojej opinii bardzo fajna filozofia programowania.

Mam wrażenie, że tak nawiązałeś do następnego pytania, więc od razu do niego przejdę. Dlaczego oba języki programowania są polecane jako te, od których warto zacząć naukę programowania? Tu wróćmy do Pythona, pewnie wiele rzeczy się pojawi, o których przed chwilą powiedziałeś. 

Tak. Pierwsza rzecz, bardzo przypomina język naturalny, łatwo się go uczy, od razu uczy dobrych nawyków, jak wcięcia na przykład. Nie potrzebujemy też pamiętać o jakichś ukośnikach, slashach na koniec, czy cokolwiek innego, jakichś dziwnych znaczkach mówiących o końcu linii. Jest dość naturalny jako pierwszy język programowania.

Może bym wszedł w rolę adwokata, bo mówisz, że uczy wcięć, ale w zasadzie to nie jest tak, że trochę przeszkadza? Większość języków programowania nie wymaga ich, a tu jednak są niezbędne. To tak jak powiedzmy te średniki w PHP, to jednak tutaj te odstępy są dość problematyczne.

To przewrotnie powiem, że właśnie JavaScript i ten tak zwany spaghetti code pisany właśnie w jednej linii jest bardzo nieczytelny. To właśnie te wcięcia, czyli bloki kodu w Pythonie, już uczą dobrych nawyków, gdyż kod piszemy dla ludzi, prawda? On ma być czytelny dla człowieka, nie dla maszyny. Dla maszyny moglibyśmy pisać w asemblerze, to wtedy on byłby bardziej czytelny. Natomiast jeżeli język programowania od nas wymusza już na samym początku czytelność, to jest duży atut, moim zdaniem, versus to, że można pisać w jednej linii wszystko i jest to kompletnie nieczytelne.

OK, przyjmuję. 

Tutaj wracamy do tego Zen Pythona, gdzie należy pisać prosto. Kolejną rzeczą, o której też już wspominałem, to jest to, że Pythona używamy w różnych dziedzinach, takich modnych, tak to nazwijmy, czyli właśnie Data Science, Web Development jak najbardziej, ale też automatyzacje. Chyba jeszcze nie wspominałem, że Python szeroko jest stosowany w różnych automatyzacjach, ale też w frameworkach do automatyzacji na przykład serwerów.

Coś, co już wspominałem, to ogromna liczba zasobów, tutoriali, bibliotek jak i zwykłych blogów, gdzie ludzie opisują, jak coś można zrobić. Przykładem niech będzie Titanic, czyli taki tutorial o tym, jak napisać algorytm, który przewidzi, kto przeżył na Titanicu, mając tylko jego numer biletu. Bardzo fajna sprawa, polecam. 

Ostatnia rzecz, o której też już wspominałem, a JavaScript też to ma, czyli brak konieczności deklarowania typów, co może być zarówno zaletą, jak i wadą, bo o tym, że nie musimy pamiętać i może jakaś zmienna zmienić swój typ, to dla bardziej doświadczonych programistów nie ma problemu, natomiast może jawić się jako magia dla tych mniej doświadczonych. Na początek może nawet lepiej, że nie musimy tych typów na sztywno wpisywać. Bo po prostu jeszcze ich nie znamy, jak się uczymy tych typów, znamy jakieś bardzo proste na początku.

Tak jest. To może ja teraz przyjmę pałeczkę i zacznę od tych typów. Czyli dynamicznie typowany język JavaScript powoduje, że łatwiej coś osiągnąć. Wiadomo, że to powoduje pewne pomyłki, ale na początku chcemy osiągnąć jakiś efekt. Więc łatwiej jest napisać cokolwiek, nawet jeżeli to niekoniecznie będzie działać poprawnie, to już działa. Cieszymy się trochę z tego i na pewno to powoduje, że łatwiej jest zacząć od JavaScriptu. 

Ten element, że jest to język interpretowany, czyli od razu zostanie uruchomiony na przykład w przeglądarce, też na pewno bardzo ułatwia naukę programowania w tym języku. Wcześniej wspomniałeś o tym zarządzaniu pamięcią. To w JavaScripcie wiadomo, że powinniśmy o tym pamiętać, ale osoba, która się uczy, to w ogóle nie musi wiedzieć, że coś takiego jest, że trzeba się tym przejmować. Tutaj też dzieje się to wszystko automatycznie. 

Też o tym wspominałeś, że w zasadzie możemy dowolnie pisać ten kod, czyli możemy pisać obiektowo, funkcyjnie albo może to być spaghetti kod. Znów, na początku pozwoli nam to cokolwiek napisać, co myślę, że po prostu nie zraża. Jesteśmy w stanie dużo szybciej osiągnąć jakikolwiek efekt. No i plus tego, że też możemy to robić od razu, mając przeglądarkę internetową, która znajduje się na każdym komputerze. Możemy napisać sobie, nie wiem, index.html, tam wrzucić sobie tag script, wrzucić ten JavaScript i już coś się dzieje. Już możemy cieszyć się jakimiś drobnymi efektami. Nawet pamiętam, za moich czasów dość mocno popularne było zrobienie śniegu na stronie internetowej i to był efekt wow.

To powoduje, że dużo łatwiej jest zacząć od tego języka. A też pewnie świadomość tego, że ten JavaScript może być i wykorzystany na stronie internetowej, na przykład na backendzie czy na desktopie, powoduje, że chętniej do niego sięgniemy, bo może się okazać, że będziemy chcieli napisać jakiś program, który kolega będzie w stanie sobie uruchomić po prostu przy pomocy kliknięcia pliku .exe.

Przy pomocy tego JavaScriptu plus HTML i CSS będzie w stanie to zrobić dość szybko, wygodnie, bez większych problemów. Dodatkowo ogromna społeczność. Już pomijając te NPM i ilość materiałów do nauki, powoduje, że łatwo znaleźć rozwiązania, nawet najprostsze, o których już wspomniałem, czyli na przykład ten śnieg.

Dodatkowo, może też tak się Ciebie zapytam. Czy myślisz, że, szybciej widzimy efekty napisanego kodu w JavaScriptcie, czy w Pythonie? Bo tak mówisz o tym Zenie, to od razu nawiążę do tego, jak to jest?

Zen Python mówi o tym, że zrobię na szybko na przykład API, a frontend sobie gdzieś wygeneruje. Czyli to jest ten właśnie w całej okazałości Zen, czyli bardzo szybko uzyskuję efekt. Nadal Python może bardzo szybko, czy Django postawić i też już mam efekty, chociaż Django to już jest trochę armata, powiedzmy, żeby jakąś prostą stronę wyświetlić. Bo to jest cały framework ze wszystkimi jego bibliotekami. 

Myślę bardziej o czymś takim jak Hello World. Ile by trzeba było zrobić, żeby ten mój Hello World powstał. Wyobrażałem sobie w najprostszej wersji, że odpalam sobie przeglądarkę, otwieram konsolę, wpisuję cokolwiek, Hello World i już mam. A w Pythonie? 

To samo, nawet na moim starym Macu Python jest już zainstalowany domyślnie i otwarcie konsoli i wpisanie Hello World to jest może nawet jedno mniej kliknięcie, bo nie muszę przeglądarki otwierać, a Ty też musisz konsolę włączyć. 

Ale z drugiej strony nie uważasz, że użytkownicy Maca tak, ale użytkownicy Windowsa, to myślę, że jak mają zajrzeć do terminala, konsoli, to jednak ich to już to zraża. To jest coś, co nie jest takie naturalne przy używaniu komputera. 

Są też gotowe do instalacji biblioteki, ale zauważ, że na przykład żeby z Node.js korzystać, też muszę coś zainstalować, więc to jest coś za coś. Natomiast są rozwiązania, które klikasz w Windowsie i masz wszystko już zainstalowane, więc nie trzeba za dużo wiedzieć. 

To uznajmy, że jest remis. 

 

Przejdźmy może do tematu aplikacji webowych, bo tak do tej pory mówiliśmy ogólnie, wspominaliśmy o tych różnych rozwiązaniach, ale jednak myślę, że ocenienie, który język jest lepszy, to trzeba zajrzeć w dokładną dziedzinę, bo tak trudno porównywać coś, co nie ma wspólnego mianownika, więc naszym obecnie wspólnym mianownikiem będą aplikacje webowe. 

Tu powiedzmy coś więcej o możliwościach połączenia. O popularności, dostępnych rozwiązaniach. Nie rozwlekajmy się. Zaczynamy od JavaScriptu, więc ja parę rzeczy powiem. 

Jeśli chodzi o aplikacje webowe, to wydaje mi się, że JavaScript naprawdę ma bardzo dużo do powiedzenia. I żeby się nie rozwlekać, to może wspomnę tylko o takich najpopularniejszych frameworkach, bibliotekach, czyli coś, co pozwala nam szybciej osiągać efekty, pisać aplikacje. I to też nas zamyka w pewne ramy, co powoduje, że obojętnie, czy my będziemy pracować w jednej firmie, czy w drugiej, to pewnie będziemy w stanie dość szybko się w tym odnaleźć. 

Takie trzy najpopularniejsze frameworki to Angular od Google. I dla przykładu przy wykorzystaniu Angular został stworzony na przykład PayPal. Tam po stronie backendu jest Node.js. Microsoft Office Online, co mnie trochę zdziwiło, bo nie byłem świadomy tego, że ten cały pakiet Office, to tam właśnie jest napisany. Na przykład też Lufthansa korzysta z Angular. 

Mamy też Vue.js. A Vue.js został stworzony przez Evana You z Google, który w zasadzie ma obywatelstwo chińskie i doszedł do wniosku, że postanowi stworzyć na podstawie doświadczeń z Angular i doświadczeń z Reactem coś własnego, lepszego. Właśnie w ten sposób pojawiło się Vue.js. Vue.js jest wykorzystywany na przykład przez firmy Xiaomi, Alibaba, GitLab, Vizera. 

Wcześniej już wspomniany React, czyli właśnie Facebook. Teraz też Instagram korzysta z Reacta. Mamy Netflixa, który też korzysta z Reacta i pod spodem ma Node.js. Shopify, dość popularny e-commerce, o którym w zasadzie jakiś czas temu nagrywałem odcinek. Mamy też Dropboxa, który korzysta z tego Reacta. 

Wydaje się, że ten JavaScript, podając te przykłady, pokazuje, jak bardzo jest popularny. Jak jest wszędzie wykorzystywany, jeśli chodzi o aplikacje webowe. Jeszcze przypominając, że 68% programistów zna ten język, to pokazuje, że jest mocno popularny. 

Tak to wygląda, jeśli chodzi o JavaScript. A ciekawy jestem, co Ty powiesz Piotrze na temat Pythona. 

W Pythonie, jednym z popularniejszych frameworków, to jest oczywiście Django. To jest all in one. Mamy wszystko co chcemy. Jakiś ORM do zarządzania bazą danych, silniki wyświetlania templatek, różne mechanizmy. Najpierw wymienię, a później powiem o zastosowaniach, bo część rzeczy wymieniłeś, w których też jest Python. I zaraz skontruję, że tak powiem. 

Mamy Django, bardzo szeroko rozpowszechniony. Spotkałem się na przykład z tym, że różne banki korzystają co najmniej na backendzie z Django. Kolejny framework Flask, który jest właśnie takim fajnym, minimalistycznym frameworkiem do szybkiego postawienia jakiegoś sprawdzenia MVP. Bardzo elastyczny, bardzo szybko się w nim robi. A odnośnie właśnie szybkości robienia, to mamy coś takiego jak FastAPI.

Znowu powrócę do tego Zen Pythona. Nie lubię takich dyskusji, że w dwóch językach uzyskamy to samo, ale ktoś będzie się upierał, bo go lubi, ten kod mu się bardziej podoba. Miałem taki przykład z życia, robiąc gry, gdzie ze swoim wspólnikiem ja chciałem na Unity, to jest akurat C#. A on chciał bodajże na Godocie z racji tego, że tam mu się bardziej kod pod spodem podobał. I tutaj ten Zen nie tylko Pythona, ale też i w programowaniu można to tak uogólnić. Mówi właśnie, że te zrobienie jest lepsze od zrobienia tego pięknie, bo zrobię to szybciej. Łatwiej to jest później naprawić, a jeszcze łatwiej jest to po prostu wyrzucić do kosza i napisać nowe. Na przykład w FastAPI można to bardzo szybko sobie prototypować, wyrzucić i napisać jeszcze raz nowe. 

O tych wdrożeniach, o których mówiłeś, to ja skontruję. Instagram, sporo backendu jest w Django. To tam też siedzi. Oczywiście nie wspomnę już o tym, że biblioteki do analizy danych, do analizy zdjęć też są to mikroserwisy tak zwane. Później wspomniałeś o Dropboxie. Tutaj udało mi się znaleźć informację o tym, że Dropbox korzysta do zarządzania serwerów. Są takie narzędzia jak Ansible, napisane w Pythonie i tam szeroko jest wykorzystane chociażby przez Dropboxa. Wspomniałeś też o Netflixie. To ja dla kontry powiem, że był znany taki konkurs Netflixa, gdzie trzeba było napisać algorytm do rekomendacji filmów, też oczywiście w Pythonie. Więc mam kontrę do każdego z tych Twoich wymienionych zastosowań Pythonie. 

Podsumowując ten rozdział, odniosę się do aplikacji webowych, że faktycznie tutaj Python też ma swój udział. Nie wykluczam tego, ale z drugiej strony ten JavaScript po stronie frontendu powiedziałbym, że występuje w 100%. Po stronie backendu, jeżeli ten Python nawet by miał te 70%, to te 30% zostaje dla Node.js, co daje nam wynik dużo lepszy dla JavaScriptu niż w Pythonie. Zgodzisz się, czy będziesz polemizował?

Ciężko z tym polemizować, ale dam kontrargument, który polega na tym, że gdy robimy aplikację, tutaj JavaScript powiedzmy odpowiada za wygląd, a Django za backend. Idźmy dalej, to, co robią algorytmy uczenia maszynowego napisane na Pythonie, z biznesowego punktu widzenia ma większe znaczenie niż to, jak on wygląda. Więc jeżeli nie będziemy mieli dochodów z danego biznesu, to żaden z języków nie będzie wtedy istniał. A to stoi na Pythonie. 

No dobra, to zróbmy inaczej, bo zaraz przejdziemy sobie do uczenia maszynowego, analizy danych i AI, więc wtedy pozwolimy się wykazać Pythonowi. Ale jeżeli mówimy o samych aplikacjach webowych, to jednak bym tutaj JavaScriptowi przyznał zwycięstwo, zgodzisz się? 

Powiedzmy, że jest warstwą prezentacji, natomiast z warstwy biznesowej, backendowej, to Python, więc tak delikatnie może być. 

No dobrze, nie dasz się przekonać, tak jak mówiłem, słuchacze będą oceniać, prosimy o komentarze pod nagraniem. 

 

Teraz zapytam się Ciebie o uczenie maszynowe, AI, analizę danych. Zaczniemy od Pythona, jak to wygląda? 

Rzekłbym, że Python miażdży JavaScript, dlaczego? Chociażby dlatego, że mamy pełno bibliotek i zastosowań tych bibliotek w praktyce, nie tylko same biblioteki, tak jak w JavaScripcie, 50 tysięcy dziennie. Stosowane są chociażby do rozpoznawania obrazów na przykład w medycynie. Wszystkie rentgenowskie przykłady rozpoznawania jakichś początków zmian, to ogromny impakt dla człowieka. Inne frameworki typu Large Language Models, czyli najlepsze zastosowanie ChatGPT. Chyba teraz nie trzeba przedstawiać tego narzędzia. To też wszystko miało swój początek na Pythonie. Nawet mogę wspomnieć, że w takich skromnych zasobach, jakie ja posiadam i tutaj będę nieskromny, bo zarówno wiedzy, jak i komputera. Potrafiłem napisać algorytm uczenia ze wzmocnieniem, który sam od siebie nauczył się poruszać pionkami w szachach. Czyli mając tak małe zasoby, już jesteśmy w stanie zrobić coś fajnego. Dla mnie, kogoś kto dorastał z komputerami, zrobienie tego na żywo, że ten komputer się uczy i faktycznie nie ma żadnej wiedzy, zobaczenie czegoś takiego na swoim własnym PC-cie, jest czymś przełomowym. Sprawdzając otoczenie, który w danym tam właśnie algorytmie występuje i ucząc się tego otoczenia, trochę jak człowiek, który jak jest mały, to się na początku przewraca, a później się już mniej przewraca i następnie już chodzi, biega i gra w koszykówkę. Tak samo ten algorytm się uczy. I tak zadam przewrotnie pytanie. Masz to w JavaScripcie?

Mam TensorFlow.js, o którym wspomniałeś. Jest taka wersja biblioteki JavaScriptowej, która pozwala trenować, uruchamiać modele językowe. Więc można to robić. Faktycznie JavaScript jest wykorzystywany do uczenia maszynowego, ale raczej w takim środowisku przeglądarkowym. Czyli musimy coś zrobić teraz. Na przykład analizujemy sobie co się dzieje na kamerze w telefonie. Często jest tak, że jest to realizowane przy pomocy JavaScriptu. I na takich, powiedziałbym, mniejszych zasobach ten JavaScript dobrze się sprawdza. Mamy D3.js, które dotyczy wizualizacji danych. Mamy Danfo.js, które pozwala analizować i manipulować danymi w stylu Pandas właśnie z Pythona. Mamy Brain.js, które pozwala tworzyć sieci neuronowe. Ale to wszystko raczej polega na prototypowaniu albo właśnie takim usprawnieniu niektórych rzeczy, ale to nadal jest takie, powiedziałbym, mniej popularne wykorzystanie niż Python. Powiedziałbym, że Python to taki wół roboczy, a w JavaScripcie to raczej myszka, która pozwala przyspieszyć niektóre rzeczy, ale nie jest tak mocna jak Python. To tu od razu przyznaję. 

Powiedziałbym, że w tym JavaScripcie, w tym całym ekosystemie dorzucono TensorFlow.js, żeby móc mówić, że JavaScript też robi Data Science. Przepraszam, ale że tak powiem, tu jest knockout. 

Przyznaję. Mogę z całą pewnością powiedzieć, że Python tutaj nie ma konkurencji. Z drugiej strony zastanawiam się, czy nie jest trochę tak, że dzięki temu, że właśnie te przeglądarki są wszędzie, że ten JavaScript występuje wszędzie, o czym jeszcze będziemy mówić, powoduje, że jego popularność ułatwia zdobywanie danych do uczenia przy pomocy Pythona. Może bez JavaScriptu nie byłoby to takie proste. 

Daleko idące wnioski. Tego nie wiem szczerze mówiąc, czy dzięki JavaScriptowi to zawdzięczamy. Na pewno firmy, które udostępniają swoje zasoby, tak jak wspomniany Netflix. Udostępnił zasoby, zrobił konkurs i akurat algorytm był napisany w Pythonie.

Akurat w przypadku Netflixa może to nie być takie jednoznaczne, ale na przykład strony internetowe. Jeżeli analizujemy sobie ruch kursora na stronie internetowej, to wszystko jest pewnie analizowane przez JavaScript, przesyłane gdzieś do bazy danych, z której potem korzysta Python. Tak to widzę.

Pod tym względem tak. Natomiast no tych danych też jest dużo więcej, ale to powiedzmy jest jedna ze składowych.

 

Przejdźmy teraz do kolejnego tematu, który jest mi dużo bliższy i dużo chętniej o nim poopowiadam, bo chyba teraz to będzie knockout po stronie JavaScriptu. Czyli aplikacje mobilne i zaczniemy od JavaScript.

Mamy tu przede wszystkim rozwiązania typu Cross-Platform, czyli możemy tworzyć kod, który wygląda tak samo dla każdej platformy, a docelowo jest uruchamiany na każdym systemie operacyjnym. W zasadzie znalazłem informację, że te rozwiązania, o których zaraz powiem, to jest ponad 50% całego rynku mobilek. Więc jestem dość zdziwiony, a może nie. 

W każdym razie mamy React Native, który nawet może ma 40% tego rynku. Pozwala tworzyć rozwiązania bardzo podobne do Reacta, ale właśnie z przeznaczeniem na mobilki. 

Mamy Ionic 16%, który wspiera Angulara, Reacta i Vue.js, czyli tak naprawdę tworzy sobie taki komponent Web View, w którym uruchamia te aplikacje, które są pisane w wspomnianych bibliotekach. 

Mamy też coś takiego jak Apache Cordova, która ma gdzieś 3%, więc raczej niedużo na rynku, ale wcześniej to było dość popularne rozwiązanie, które się nazywało PhoneGap.

Akurat w przypadku React Native, to wszyscy pewnie korzystamy z Facebook, Instagram, Tesla, Walmart, Spotify, Uber Eats. Te wszystkie rozwiązania korzystają z React Native. Myślę, że tutaj naprawdę bardzo dużo się dzieje i powiedziałbym, że też takim niewielkim nakładem pracy możemy naprawdę fajne rozwiązania tworzyć i potem publikować to od razu na najpopularniejszych platformach, co naprawdę daje bardzo dużo zysku i mało nakładu pracy. Myślę, że Python nie będzie miał żadnego podjazdu. 

Jak tu się z Tobą nie zgodzić? Muszę przyznać rację, że Python nie ma za dużo do zaoferowania. Natomiast ma może mniej popularne rozwiązania typu BeeWare, gdzie możemy szybko sobie zaprototypować jakąś aplikację mobilną, a na przykład na backendzie postawimy Flask czy Django.

Wrzucę też taki mały kamyczek do tego super ogródka JavaScriptu, jeżeli chodzi o mobilne aplikacje. Tych aplikacji zaczęło powstawać tak dużo, że jeżeli masz fajną aplikację, taką która może komuś pomóc, na przykład znaleźć pomoc w okolicy. Niedawno były powodzie i tak dalej. To ona zginie w napływie innych aplikacji, które mają za zadanie po prostu wyświetlić Ci reklamę. Chciałem powiedzieć, że właśnie dzięki temu, że można sobie skopiować kod i zrobić jakąś aplikację mobilną, wrzucić to później do sklepu z aplikacjami, to takim złem jest to, że dobre aplikacje gdzieś giną w całym tym natłoku wszystkich aplikacji.

Czyli sam sobie trochę w tym JavaScript strzelasz w kolano. Robiąc aplikację albo bibliotekę nie jesteś w stanie się wybić. Tego jest tak dużo i każdy może to zrobić, zmieniając kolor tła i wrzucając jako nową aplikację. Zmieniając trochę i podszywając się pod inne aplikacje. Tutaj taki mały kamyczek dorzuciłem.

W zasadzie nie jest to wina języka, tylko popularności rozwiązań. Czy jeżeli Python byłby równie popularny, miałby tyle rozwiązań Cross-Platform, to myślisz, że byłoby inaczej? To nie wina JavaScriptu, tylko ludzi albo chęci zarobku, a niekoniecznie języka.

No tak. 

Coś musiałeś znaleźć.

Chciałem coś innego powiedzieć. Podczas II wojny światowej ludzie, wykonywali różne dziwne polecenia, mówili, że to nie nasza wina, nam tylko kazano. Tutaj też trochę takie wytłumaczenie, że to nie wina JavaScriptu, tylko ludzi. No tak, ale ci ludzie wykorzystują JavaScript w celu szybkiego tworzenia które samo w sobie jest na plus. Może trochę się jednak czepiam. Sam tego doświadczyłem. Chciałem gdzieś wrzucić aplikację, oczywiście za darmo, taką to-do listę, których jest miliard. To była akurat to-do lista dla osób starszych, seniorów. No i w ogóle nie została założona z racji napływu innych aplikacji to-do list. 

No dobrze. To jednogłośnie aplikacje mobilne dla JavaScripta. 

 

Przejdźmy do tematów bliższych pewnie Pythonowi, czyli właśnie automatyzacja i skrypty, admini, DevOps i tak dalej. Możliwości, popularność, dostępne rozwiązania. Jak to wygląda od strony Pythona.

Tutaj jest mnogość skryptów automatyzujących. Z tego co kojarzę, miałeś niedawno gościa, który pracuje jako DevOps, ja też się trochę tym zajmowałem. Wspominał o automatyzacji i w tle na pewno myślał o Pythonie. Natomiast, to narzędzie, o którym już wspomniałem, czyli Ansible, ten rdzeń ma napisany w Pythonie i to nie jest przypadek. To jest szalenie wykorzystywane. Chociażby z tego powodu, że w Linuxie też mamy, już w Ubuntu nawet tak starym jak sięgam pamięcią też umiałem i mogłem od razu po postawieniu systemu korzystać z Pythona i ze skryptów automatyzujących, gdzie naprawdę można chociażby przeszukując po prostu GitLaba, GitHuba, czy nawet wygenerować sobie w ChacieGPT dowolny automatyzujący skrypt. I to działa, może nie jakoś niskopoziomowo, ale pozwala zarządzać zarówno plikami i procesami. Z takich ciekawostek o Dropboxie już wspomniałem, ale dziś też udało mi znaleźć informacje o tym, że NASA z tego korzystała do różnych właśnie serwerowych zastosowań.

Przyznam, że starałem się znaleźć coś fajnego w JavaScripcie i taki chyba najważniejszy element to coś co się nazywa MP2 do zarządzania aplikacjami Node.js, akurat sam nie korzystałem. Mamy Webpacka i inne bundlery, ale to jest chyba nie ta forma automatyzacji, o której tutaj myślimy. 

Jest też Grunt i Gulp do automatyzacji zadań w procesie budowy aplikacji, ale wydaje mi się, że każdy język ma coś takiego jak Webpack, Grunt, Gulp itd. Ale na przykład coś co jest mało popularne, to Jenkins narzędzie do CI/CD, wspiera integrację z JavaScriptem i chyba jedna z ciekawszych rzeczy to, że AWS Lambda może automatyzować zadania w JavaScripcie. Więc przyznam się, że tak troszkę szukałem na siłę rzeczy, które jesteśmy w stanie wykorzystać w JavaScript. No i chyba JavaScript nie jest na tyle popularny, żeby go właśnie wykorzystywać do automatyzacji i zastanawiam się dlaczego. 

Może po pierwsze, to jest to co powiedziałeś, że ten Python na Linuxie może być dostępny od razu, więc dużo łatwiej cokolwiek zrobić, napisać skrypt, wykorzystać. Ten JavaScript w formie Node.js dopiero się gdzieś tam pojawiał, zdobywał większy zasięg w środowisku i dopiero potem może być on wykorzystywany. 

Na pewno warto wspomnieć, że Node.js wykorzystany do takiego strumieniowania danych i w tym może być fajniejszy niż Python. Dużo firm korzysta z niego właśnie w takiej formie, ale to nadal nie jest coś co pozwala mocno automatyzować, czy wspierać tego typu działania. Jak myślisz?

Myśląc o JavaScripcie, serwerach, DevOpsie i automatyzacji serwerów, to mi się zupełnie nie łączy. Dlaczego? Bo ja JavaScript łączę z przeglądarkami. Dla mnie to, że jest backendowy JavaScript, to był jakimś trochę mindfuckiem swego czasu, ale nie podważam tego. Natomiast to mi się kompletnie nie kojarzy z serwerami. 

I może właśnie dlatego nie ma tych narzędzi.

Tak. Nikt nie pomyślał, żeby zastosować ten język do tego typu zadań. 

W zasadzie jak się już coś sprawdza, w sensie Python się sprawdza w tym, to po co to zmieniać. Nie widać super korzyści z tego, żeby był to JavaScript. On ma swoje zastosowania trochę gdzie indziej.

Tak jest. Czyli Zen Python znowu górą, ponieważ łatwo sobie napisze jakiś skrypcik, który mi tam powiedzmy, wyczyści cache plikowy w moim serwerze.

 

Tak jest, przyznaję, ale tylko dlatego, że teraz przejdziemy do GameDev i zaczniemy od JavaScript. Od razu może warto powiedzieć, że JavaScript napewno dobrze sobie radzi, jeśli chodzi o tworzenie gier, ale takich gier mobilnych, czy indie. Czyli raczej małe zespoły, liczy się kreatywność, coś fajnego do zrobienia, a nie gry typu AAA, czyli coś, co pewnie większość z Was gra. Mając do dyspozycji na przykład HTML5, Canvas, czy WebGL, jesteśmy w stanie stworzyć gry 2D i 3D.

Jeśli chodzi o gry 2D, to mamy dość popularną bibliotekę Phaser.js. Widziałem też coś takiego jak React Native Game Engine, który od dwóch lat jest nieaktualizowany, ale też fajnie pokazuje, że to jest taka nakładka na React Native, która pozwala łatwo tworzyć aplikacje mobilne, a w zasadzie gry mobilne.

Jeśli chodzi o gry 3D, no to mamy Babylon.js albo Three.js, który pozwala nam tworzyć właśnie takie ładnie wyglądające gry. Ostatnio trafiłem też na coś takiego jak PlayCanvas, który w zasadzie Piotrkowi jeszcze przed nagraniem pokazywałem. To był w szoku, że tak może gra wyglądać w przeglądarce i tutaj wszystkim polecam stronę https://robostorm.io/, naprawdę gra wygląda ciekawie, jak na przeglądarkę.

PlayCanvas pozwala też tworzyć rozwiązania VR czy AR, więc naprawdę dużo zastosowań. Wygląda to bardzo fajnie. Nie sprawdzałem, ale mówi się, że to jest silnik 3D w chmurze. Nie wiem, jak on działa, ale naprawdę ciekawe rozwiązanie.

Mamy też Unity od wersji 5, która wspiera JavaScript, a nie natywnego C#. Piotrek przed rozmową nam podrzucił informację o Construct. To jest takie rozwiązanie Drag and Drop, plus możemy pisać skrypty w JavaScript, więc naprawdę tu dużo się dzieje i myślę, że jeżeli lubicie tworzyć gry internetowe i chcielibyście coś wypuścić swojego, to ten JavaScript może być idealny. Napisanie czegoś w takim silniku pełnoskalowym, to jest naprawdę dużo roboty i dużo więcej trzeba się namęczyć, a tu w przypadku JavaScriptu można naprawdę coś fajnego w krótkim czasie stworzyć.

Zen Python znowu ma do zaproponowania dużo. Ja zacznę od żółwia. Jest taka biblioteka, gdzie łączę swoje wspomnienia z pierwszym pisaniem kodu, to akurat nie było w Pythonie, bo wtedy chyba jeszcze nie było Pythona, tak dawno pisałem kod. To było w podstawówce i uczyłem się na tak zwanym żółwiu, gdzie się żółwia przesuwało do przodu i coś rysowało. Python ma też do zaproponowania tę bibliotekę żółwia, gdzie możemy zarówno uczyć się programowania, uczyć dzieci, jak zrobić jakąś prostą grę, na przykład jak kiedyś zrobiłem warcaby. 

Szybkie prototypowanie, prosta intuicyjna nauka, ale na tym nie skończę, gdyż w Pythonie mamy Pygame, gdzie możemy zrobić gry 2D. Ja popełniłem kiedyś kilka gier w tak zwanym Pixel Arcie.

Wspomniałeś o Unity, ja wspomnę o Godocie, gdyż on też wspiera Pythona, a na zakończenie mam jeszcze coś takiego, że często w wykorzystywany w GameDevie Blender można wpisać skrypty automatyzujące właśnie w Pythonie, więc tutaj Python też ma sporo do zaoferowania.

Muszę do jednej rzeczy się odnieść, o której powiedziałeś, o tym Unity, że on wspiera JavaScript. Otóż ja w Unity pracuję od 10 lat, bardzo mało widziałem kodu napisanego w JavaScripcie w Unity. Owszem, wspiera, ale chyba nikt z tego nie korzysta. 

To czas to zmienić. Ale tak jak opowiadasz o tym Pythonie, to tak mam trochę takie wrażenie, że Python to jest takie rozwiązanie, narzędzie do zadań specjalnych. Często pojawia się coś co można w Pythonie zrobić, jak gdyby takie wyspecjalizowane rozwiązanie, to Python jest do tego idealny. Zgodzisz się z tym?

Zgodzę się z tym, że Python jest idealny do wszystkiego, bo ma zawsze coś do zaproponowania. Zauważ, że nawet w tych aplikacjach mobilnych, też nie poległem kompletnie. Python ma coś do zaproponowania i w dzisiejszych czasach, gdzie mamy do czynienia z napływem kodu generowanego przez generator, przez sztuczną inteligencję, to szybkie prototypowanie i ten Zen Pythona bardzo się wpisuje w ten cały trend, w tę całą strategię.

Zauważ, że firmy, jeżeli mają zatrudnić dziesięciu programistów, to zatrudnią dwóch, którzy będą generowali i będą się na tym znali. A Python idealnie się wpisuje w szybkie prototypowanie i ma w każdej dziedzinie, w każdej kategorii coś do zaproponowania.

No dobrze, to skoro tak mówisz, to czekamy na propozycje dla aplikacji desktopowych.

Python ma do zaproponowania moduły jak Tkinter, gdzie mamy interfejsy, możemy szybko interfejs użytkownika zaprototypować. Mamy PyQt, mamy PySide czyli framework do zaawansowanych, wieloplatformowych aplikacji, więc nadal Python ma coś do zaproponowania.

A masz jakieś przykłady takich aplikacji, które zostały napisane przy pomocy którejś z nich?

Teraz mnie zaskoczyłeś, nie mam, nie zanotowałem sobie takich przypadków. Podejrzewam, że to jest kwestia wpisania w Google'a, gdyż nawet jak patrzyłem na popularność tych frameworków, to są, wystarczy spojrzeć, ile jest tutoriali. Nikt nie nagrywa tutoriali dla mało popularnych bibliotek, bo nikt tego nie będzie oglądał. Zainteresowanie danym frameworkiem można mierzyć też tym jak łatwo można dotrzeć do jakiegoś tutorialu. 

I znowu Zen wchodzi, gdzie mamy proste rozwiązanie, nie ma jakichś bardzo skomplikowanych rzeczy, jak musisz wiedzieć, jak działa na przykład ORM albo jakieś bardziej złożone narzędzie, którym chcesz zapisać coś w bazie danych. Możesz to zrobić bardzo szybko, używając po prostu jakiejś biblioteki. Coś się dzieje pod spodem, niekoniecznie Cię to musi interesować.

OK, czy coś jeszcze tutaj masz do dodania?

Mam do dodania na przykład coś takiego. Aplikacja do zarządzania e-bookami, calibre. Tutaj mamy taką wstawkę, że kiedyś byłem w takim start-upie, gdzie sprowadzaliśmy dopiero e-czytniki, e-booki i pamiętam, że od samego początku ta aplikacja była szeroko stosowana. Tam można było zmienić czcionki, tło itp. Ona też w Pythonie jest napisana. Także z takich przykładów, to proszę bardzo. Mamy aplikację, w której możemy sobie czytać e-booki.

Przejdźmy do JavaScriptu. Tu mamy bardzo popularne Electron.js, wyszukałem, że ma nawet 25% rynku. Mamy App.js, NW.js i akurat one wykorzystują przeglądarkę jako środowisko wykonawcze, czyli tak naprawdę piszemy kod jak pod stronę internetową i to potem jest uruchamiane w takim narzędziu, dzięki czemu możemy dość łatwo utrzymywać całość, bo możemy dużo rzeczy wykorzystywać wcześniej napisanych, na przykład w stronach internetowych. W takim Electron.js spokojnie możemy uruchomić Reacta, czy coś innego i tym wszystkim sobie zarządzać, tak jak w przeglądarce. Dość popularne rozwiązania, pewnie każdy z nich korzystał: Slack, Discord, czy Visual Studio Code. Te wszystkie właśnie rozwiązania, które sobie odpalamy w naszych systemach zostały napisane w Electron.js.

Jest jeszcze coś takiego jak Proton Native, to jest niszowe narzędzie, jednoprocentowe, ale co ciekawe, ono nie wykorzystuje przeglądarki jako środowiska wykonawczego, tylko ma swoje API, co powoduje, że jest szybsze, ale jak widać na razie na popularności nie zdobyło. I tu bym powiedział, że na pewno JavaScript jest bardziej popularny niż Python. 

Trudno mi ocenić, czy jest lepszy, ale chyba właśnie te wszystkie mocno popularne rozwiązania obecnie korzystają raczej z Electron.js, niż z jakichś innych rozwiązań. Czy coś byś dodał, Piotrze?

Tak, bo ja w tle wykorzystałem zasoby internetu i już Ci mówię, że na przykład YouTube Downloader jest napisany w PyQt i Tkinterze, takie coś jak BitTorrent, proszę bardzo, tam na niskopoziomowe zarządzanie sieci, ale też Blender, o którym już wspominałem i Dropbox w starszych wersjach. Także chciałeś, to proszę bardzo.

Dziękuję bardzo. Jednak chyba obecnie te rozwiązania bardziej wykorzystujące Electron.js są popularniejsze, częściej wykorzystywane. Nie wiem, czy to jest związane z takim dużo łatwiejszym przełożeniem, strony aplikacji internetowej na aplikację desktopową, może biznesowo to się bardziej klei. Zgodzisz ze mną?

Tak, tu się zgodzę. Łatwo wtedy jakiegoś frontendowca wykorzystać do napisania, zlecić mu coś takiego.

 

Lecimy dalej. IoT, jak to wygląda w JavaScripcie? Od razu może powiem, że chylę czoła przed Pythonem, bo kolejny raz chciałem wyszukać coś, co będę mógł przedstawić. Pomijając coś takiego, że JavaScript pozwoli prezentować te wszystkie dane, które są zbierane, to jeśli chodzi o takie rozwiązania faktycznie wykorzystywane w tego typu urządzeniach, to znalazłem jedynie Johnny-Five. To aplikacja raczej dla hobbystów lub prototypowania, która pozwala korzystać z platform typu Arduino, Raspberry Pi, BeagleBone. To raczej cały czas jest coś, co pozwoli nam zrobić coś dla siebie, niż jest wykorzystywane szeroko komercyjnie, podejrzewam, że Python będzie miał dużo więcej do zaoferowania.

Tak jest. Python wjeżdża na białym koniu i ma do zaproponowania na przykład MicroPython i wiele, wiele bibliotek, w których możemy je uruchamiać na mikrokontrolerach, między innymi tych wszystkich, których wymieniłeś. Chciałem też zauważyć, że masz już natywnie wsparty Python, bo tam często są Linuxy pod spodem zainstalowane w tych urządzeniach. Można wspomnieć, że takie miasta jak Londyn, Kopenhaga stosują rozwiązania oparte właśnie na Pythonie. Chociażby w Londynie analiza danych z sensorów, badanie jakości powietrza i zapewne nie tylko w Londynie. W Kopenhadze jest inteligentny system zarządzania oświetleniem ulicznym, który dostosowuje właśnie jasność lamp w zależności od natężenia ruchu i pogody, tam właśnie na mikrokontrolerach udało mi się dostrzec, że jest wykorzystywany MicroPython. Tutaj mi się wydaje, że większego pola manewrów w JavaScripcie nie ma, także jest kolejny knockout.

 

Dlatego też szybko przejdźmy do kolejnego tematu, już nie będę nic więcej mówił, żebyś nie mógł się zbytnio nacieszyć tą miłą sytuacją. Zapytam o ostatni chyba element w tym naszym porównywaniu, czyli blockchain i kryptowaluty i zaczynamy od Pythona.

Python ma do zaoferowania swoje biblioteki, które integrują się z blockchainami, chociażby Ethereum, Web3, później mamy PyCryptodome, obsługę zaawansowanych funkcji kryptograficznych. Z racji tego, że kryptowaluty łączą się z dużą ilością danych i przepływem tych danych, to Python jak najbardziej się wpisuje z całą dobrocią inwentarza bibliotek związanych z analizą danych, takich chociażby jak Pandas i Matplotlib, gdzie możemy robić różne wykresy. Ciekawe wdrożenia, to chociażby Ethereum, które też korzysta do obsługi węzłów i interakcji z siecią Ethereum z Pythona. Binance, Pythonowe API jest do wspierania handlu kryptowalutami, integracją z giełdą, no i Bitcoin też do obsługi pod spodem węzłów bitcoinowych, to Python pomaga w analizie i iteracji w blockchainie, także grubo.

Przejdźmy też do JavaScriptu, bo JavaScript też pozwala łączyć się z blockchainami przy pomocy Web3.js, czy też Ethers.js, też biblioteki, które pozwalają pobierać dane z blockchaina i wyświetlać je po stronie frontendu.

Możemy też stworzyć zdecentralizowane aplikacje, więc możemy bazować na tym blockchainie. Frameworki Ethereum Truffle and Hardhat, pozwalające wykorzystywać JavaScript. Mamy też Coinbase Commerce i BitPay, które pozwalają korzystać z takiego wygodnego SDK do zarządzania JavaScriptem. 

No i coś, co znalazłem i mnie miło zaskoczyło. Jeden z najpopularniejszych portfeli, mam tu na myśli MetaMask, też został napisany w JavaScripcie. Więc zastanawiam się, czy tu Python faktycznie ma dużą przewagę.

Myślę, że oba języki mają coś do zaproponowania. Natomiast takie rozwiązania niskopoziomowe, gdzie JavaScript potrzebuje dodatkowych bibliotek, to w Pythonie mamy już wszystko zainstalowane, bo jest Linux, który go wykorzystuje. Wydaje mi się, że mamy troszeczkę łatwiej.

 

Czas na podsumowanie. Jak to wygląda z Pythonem? Gdzie twoim zdaniem ma przewagę? W którym miejscu warto z niego korzystać? 

Na pewno w pierwszej kolejności uczenie maszynowe, tutaj bezdyskusyjnie. Później urządzenia IoT, tutaj też mi się wydaje, że nie ma porównania. Automatyzacja i skrypty do zarządzania serwerami. Tutaj też jednogłośnie. Po równo było, powiedzmy w GameDevie gdzie oba języki może nie są jakoś mocno osadzone w tej kategorii. Na końcu krypto, gdzie też każdy z języków ma coś do zaproponowania. To tyle z Pythona bym widział.

Ja bym powiedział, że JavaScript na pewno mocno przoduje jeśli chodzi o aplikacje webowe, chociaż pamiętam, że zgłosiłeś zastrzeżenia. Aplikacje desktopowe podobnie, na pewno aplikacje mobilne, to są takie rzeczy, które myślę, że spokojnie można myśleć o nich, jeżeli wybierzemy sobie JavaScript. 

Jeśli chodzi o GameDev, to dla osoby, która chce mieć większą swobodę, większą przewagę ma JavaScript. Na przykład chce sama stworzyć jakąś grę, opublikować ją, sprzedać i zarobić. Może być troszkę łatwiej, bo będzie mniej zasobów, które musimy zużyć, ale to też może oceń, bo wiem, że też zajmowałeś się wydawaniem gier, więc może masz inne spostrzeżenia na ten temat.

Już wspomniałem o tym, że ciężko przebić się przez tak zwany crap. I to właśnie zawdzięczamy niektórym popularnym językom. Wspomnieliśmy o tym, że nie można przypisać łatki samemu językowi. Natomiast jest coś takiego, że ciężko jest się przebić z wartościowymi grami, treściami, bo jest tego tak dużo. Więc jak najbardziej tak, ale jest gwiazdka.

Jeszcze powiem o krypto, że jeżeli dla nas krypto jest ciekawostką, czy blockchain, to pewnie można się coś pobawić, jeśli chodzi o JavaScript, ale jednak mamy tu bardziej dedykowane rozwiązania. Mam tu na myśli na przykład Solidity, które daje dużo więcej możliwości. Więc JavaScript tak, może na początek, ale na takie bardziej zaawansowane rozwiązania pewnie coś innego. Tak bym podsumował tę naszą walkę, jeśli chodzi o JavaScript i Python. Czy chciałbyś coś tu dodać?

Jak dobrze liczę, Python wygrywa 5 do 4. 

To dodam to krypto i będzie równo.

OK, widzowie ocenią, jesteśmy bardzo ciekawi waszych komentarzy.

Tak jest, komentujcie, piszcie, co waszym zdaniem wygrywa, z czym się nie zgadzacie, gdzie nas poprawicie, o czym zapomnieliśmy, dajcie znać.

 

Jeszcze zapytam Cię, Piotrze, może o książkę, jaką byś polecił osobie, która chciałaby lepiej poznać Pythona. 

Jest dużo darmowych książek z Pythona, począwszy od książek, które uczą podstaw programowania właśnie w Pythonie. Z takich, które chciałbym polecić, to jest właśnie cały czas nawiązywanie do tego Zen Pythonowego, gdzie sobie można wyczytać, czyli: Think Python, Allen B. Downy. To jest książka dla początkujących i ona właśnie uczy tak krok po kroku programowania, ale gdzieś tam cały czas się przedziera przez tę książkę właśnie ten Zen Pythona, gdzie wygrywa ta prostota i to mi się bardzo podoba.

To ja poleciłbym książkę raczej nie dla osób początkujących, bo mam na myśli: You Don't Know JS. Akurat ta książka jest dostępna na GitHubie za darmo i została przetłumaczona na język polski, można kupić sobie też wersję polską. Mamy też wersję drugą tych książek i tytuł to: You Don't Know JS Yet, więc to jest taka trochę kontynuacja. Dużo tam jest takich szczegółów, których raczej bym nie polecił osobie początkującej, ale jeżeli ktoś jest zainteresowany, dlaczego język działa tak, a nie inaczej pod spodem, to myślę, że to jest fajna pozycja. Ale jeżeli ktoś czyta tę książkę i nie czuje mięty, to może trzeba ją odstawić i wrócić do niej za rok czy dwa, może wtedy będziemy w stanie ją docenić. Ma ona dużo zwolenników i dużo przeciwników. Uważam, że warto się z nią zapoznać.

Piotrze, czy coś jeszcze chciałbyś tu dodać?

Ja dodam, że ta książka, o której powiedziałem, też jest dostępna w języku angielskim za darmo. 

 

Mam ostatnie pytanie. Gdzie możemy cię znaleźć w sieci, jeżeli ktoś by chciał Cię o coś dopytać, coś się dowiedzieć, a może, nawet nauczyć Pythona?

Jako mentor, to już od 2016 roku, czyli to będzie 8 lat. Gdzieś tam się udzielam, tak to nazwijmy. Udzielam, to jest dobre słowo, ponieważ ta atmosfera też mi się udziela. Bardzo lubię pracę z ludźmi, a nie z komputerami. Mam nadzieję, że to widać, więc jakby ktoś był zainteresowany taką współpracą na zasadzie, mentor i uczeń, chociaż niekoniecznie to tak musi wyglądać, bo ja też się dużo uczę od swoich współpracowników, to na stronie https://devmentor.pl/mentoring-backend-python można znaleźć wszelkie informacje.

A jeżeli chodzi o sieć, to oczywiście mam swoje media społecznościowe, gdzie niekoniecznie wszystkie są związane z programowaniem czy Pythonem, ale na przykład mam taką ciekawą inicjatywę o nazwie: piotr112233, gdzie uczę dzieci programowania w Pythonie od podstaw, tworząc proste gry lub rozwiązując zagadki, mam taki kurs, który nagrałem. To jest bardzo, bardzo fajna sprawa. Poza tym właśnie media społecznościowe łącznie z TikTokiem.

Piotrze, bardzo dziękuję za tę rozmowę i chęć podzielenia się swoimi doświadczeniami. Mam nadzieję, że przynajmniej w jakimś stopniu JavaScript będzie panował nad Pythonem. Żeby nie było tak przyjemnie.

Oj, dużo memów mi się przypomniało, ale to może widzowie sobie sami wygooglują, jak to wygląda. Python versus JavaScript w memach.

Lepiej nie, lepiej nie. To jeszcze raz, Piotrze, bardzo Ci dziękuję.

Ja też dziękuję.

Mentoring to efektywna nauka pod okiem doświadczonej osoby, która:

  • przekazuje Ci swoją wiedzę i nadzoruje Twoje postępy w zdobywaniu umiejętności,
  • uczy Cię dobrych praktyk i wyłapuje złe nawyki,
  • wspiera Twój rozwój i zwiększa zaangażowanie w naukę.

Chcesz zostać (lepszym) programistą i lepiej zarabiać? 

🚀 Porozmawiajmy o nauce programowania, poszukiwaniu pracy, o rozwoju kariery lub przyszłości branży IT!

Umów się na ✅ bezpłatną i niezobowiązującą rozmowę ze mną.

Chętnie porozmawiam o Twojej przyszłości i pomogę Ci osiągnąć Twoje cele! 🎯