Udostępnij!

Czy JavaScript można nazwać językiem programowania?
Gdzie można zastosować tę technologię?
I dlaczego specjaliści Javy i JavaScript się nie lubią?

Posłuchaj rozmowy z Tomaszem Popisem – Kierownikiem działu szkoleń Inżynierii Oprogramowania w Altkom Akademii

DK: Dzień dobry, witam na spotkaniu poświęconym JavaScript. Dzisiaj moim gościem jest Tomasz Popis, który odpowiada za szkolenia z inżynierii oprogramowania w Altkom Akademii. Tomasz, czyli multiprogramista…

TP: (śmiech).

DK: …człowiek wielu języków, a nawet, mógłbym powiedzieć, Arya Stark programowania i nawet próbowałem znaleźć te języki i są to wszystkie języki z drugiej części alfabetu.

TP: No chyba tak. Dzień dobry.

DK: Takie wprowadzenie po to żebyśmy mogli dzisiaj porozmawiać o JavaScripcie, o takim języku programowania. Czy można go nazwać językiem programowania?

TP: No tak, można go nazwać. Już można.

DK: Czyli już można nazwać językiem programowania. Dlaczego JavaScript?

TP: I to jest źle postawione pytanie, bo zależy w jakim kontekście dlaczego JavaScript. Dlaczego JavaScript od strony aplikacji frontowych?

DK: Nie, dlaczego w ogóle – skąd JavaScript dzisiaj to takie wielkie „wow” i wszyscy mówią, że JavaScript to jest coś najważniejszego?

TP: Po pierwsze zmienił się trochę model warstwy widokowej w aplikacjach front-endowych gdzie mamy dużo dynamiki, dużo animacji, więc potrzebny jest dobry język skryptowy, w którym będzie można tę dynamikę zakodować, warstwy widoku. A „wow” jest też dlatego, że mamy teraz platformę Node.js i możemy pisać aplikacje serwerowe w JavaScripcie.

DK: Ja pamiętam jeszcze te czasy kiedy w przeglądarce na komputerze przygotowywaliśmy sobie aplikacje we Flashu…

TP: Oj tak, było tak.

DK: …i to był język programowania. Tam można było zbudować pełną aplikację, a potem pojawił się JavaScript i wydaje mi się – to do potwierdzenia przez Ciebie – że gorsze wypiera lepsze.

TP: Gorsze wypiera lepsze – no tak, kiedyś JavaScript był językiem gorszym, to znaczy były takie żarty między programistami Javy i JavaScriptu, to znaczy oczywiście JavaScriptowcy nie lubili Javowców i na odwrót, bo kiedyś JavaScriptowcy nie byli programistami. Oni myśleli, że są, ale ci od Javy mówili, że nie. Ci od Javy zajmowali się back-endem, a ci od JavaScriptu zajmowali się warstwą widokową i to gdzieś tam w latach dziewięćdziesiątych czy dwutysięcznych. Tylko, że ta warstwa widokowa kiedyś była taka, że trzeba było w JavaScripcie zaprogramować tylko uciekający „iksik” z reklamy, żeby się ta reklama zamknęła. Stąd Javowcy śmiali się z JavaScriptowców. I do takich prostych zastosowań na warstwie widoku wystarczył JavaScript w starszych wersjach, którego gramatyka nie pozwalała na zbyt wiele. Nie można było robić zbyt skomplikowanych struktur…

DK: Pamiętam te czasy, nawet pamiętam, że w JavaScripcie zmieniało się kolorki przycisków.

TP: Tak.

DK: A jak jest dzisiaj?

TP: Dzisiaj tez w JavaScripcie zmienia się kolorki przycisków, ale mamy nowe standardy języka, mamy platformę Node.js, czyli mamy poprawioną gramatykę. A jak mamy poprawioną gramatykę, to ta gramatyka przypomina już języki back-endowe, serwerowe, takie jak Java. I w tym momencie z platformą Node możemy pisać równie skomplikowane i złożone aplikacje po stronie serwera. Dlatego teraz JavaScript nie jest już językiem gorszym.

DK: Czyli jest językiem programowania?

TP: Jest językiem programowania.

DK: Ok, czyli możemy dzisiaj powiedzieć śmiało, że osoba, która programuje w JavaScripcie jest programistą.

TP: Jest programistą.

DK: Świetnie.

TP: W dodatku, za karę, ci Javowcy, którzy kiedyś śmiali się z JavaScriptowców, teraz muszą się uczyć JavaScriptu.

DK: Naprawdę?

TP: No tak – wiesz, teraz jest taka moda na full stacka, czyli niby umiem wszystko, czyli nic, ale tak jest i coraz częściej Javowiec musi zrobić warstwę widokową, poznać HTML-a, poznać JavaScript i łączyć te dwie części, front-endową i back-endową, zbudować pełną aplikację od bazy danych po warstwę widoku.

DK: To musi być bardzo skomplikowane.

TP: No, to jest bardzo skomplikowane.

DK: To jest bardzo, bardzo dużo wiedzy. Chciałem zapytać do czego możemy wykorzystać dzisiaj JavaScript – bo pamiętam ten czas kiedy stosowaliśmy tylko do zmiany kolorów czy przesuwania elementów, a dzisiaj?

TP:  Komunikacja z bazą danych, relacyjną, node-SQL-ową, dokumentową, w zasadzie nawet do budowania usług serwisowych, mikroserwisów – nie ma problemu.

DK: Mówi się o aplikacjach uruchamianych w przeglądarce i o back-endzie, który jedyne co robi to przetwarza informacje i zapytania przychodzące z przeglądarki.

TP: No to dzięki platformie Node – no bo w zasadzie w przeglądarce jest silnik, który potrafi interpretować JavaScript. I ten silnik niejako został wyjęty, działa jako osobna aplikacja, mniej więcej jak wirtualna maszyna Javy i taki silnik można zainstalować na serwerze, poza przeglądarką i w tym środowisku uruchamiać, interpretować kod JavaScript.

DK: To jest ten sam JavaScript, którego uczymy się do napisania aplikacji w przeglądarce czy inny JavaScript?

TP: To jest dobre pytanie, bo tutaj mówimy o transpilatorach w tym momencie. Czyli z punktu widzenia dzisiejszego programisty, który aplikację front-endową pisze też z wykorzystaniem platformy Node.js po to żeby móc wykorzystywać nową gramatykę języka; czyli platfoma Node.js pozwala pisać w nowym standardzie języka, ale w wyniku tego taki projekt front-endowy jest transpilowany do starej wersji języka, którą rozumie przeglądarka, z tym, że deweloper się tym nie przejmuje. Pracując po stronie serwera, ten deweloper też pracuje w nowej wersji języka, ale ona już jest tam uruchamiana na tej platformie Node.js, czyli z punktu widzenia dewelopera jest to ten sam język programowania, ale z punktu widzenia wykonania go potem, to w przeglądarce jest to stara wersja języka. Ale pamiętajmy, ze to może robić dwóch osobnych programistów, w dwóch osobnych projektach; nie jest już tak, że mamy renderowanie widoku po stronie serwera, czyli mamy dwa projekty napisane w tym samym języku programowania. Warstwa widoku to jest aplikacja z użyciem takiego frameworka jak Angular albo React w architekturze SPA, a po stronie serwera mamy wystawione API i warstwa widoku komunikuje się z warstwą serwera.

DK: Czy ci programiści mogliby się wymieniać?

TP: Ponieważ mają wspólną płaszczyznę porozumienia w postaci języka, to tak – kwestia tylko nabycia umiejętności przez back-endowca żeby nabył umiejętność pracy na front-endzie z frameworkiem i odwrotnie.

DK: Czyli są drobne różnice w metodach czy czymś czego trzeba się nauczyć.

TP: Tak, ale jest ułatwiona droga żeby się tym zająć.

DK: Ile jest wersji JavaScriptu?

TP: Kilka, od JS5 do JS9.

DK: Jakbym chciał dzisiaj rozpocząć pracę w JavaScripcie, to której wersji miałbym się nauczyć?

TP: Powszechnie używamy JS6, ale jeśli chciałbyś się nauczyć…

DK: Ta nauka trochę mi zajmie więc zakładam, że powinienem zacząć od czegoś nowszego.

TP: Powinieneś zacząć od szkolenia.

DK: Ale pamiętaj, że mam już podstawy.

TP: Masz już podstawy. Ale mamy też szkolenia zaawansowane, wzorce projektowe, programowanie reaktywno-funkcyjne, także…

DK: Jest się czego uczyć.

TP: Jest się czego uczyć.

DK: Skoro już jesteśmy przy nauce – chciałem zapytać czego powinniśmy się uczyć.

TP: Powinniśmy sobie najpierw odpowiedzieć na pytanie, którą drogą chcemy iść, czy front-end dewelopera, czy back-end dewelopera. I na obu tych ścieżkach mamy kursy podstawowe i zaawansowane – kursy z języka, podstawy JavaScriptu, zaawansowane aspekty języka JavaScript, programowanie reaktywno-funkcyjne, dobre praktyki…

DK: To jest część wspólna?

TP: To jest część wspólna dla obydwu ścieżek. A potem już mamy różnice bo po stronie back-endu będziemy uczyli się bibliotek do komunikacji z bazą danych, relacyjną, nie-relacyjną, frameworków, które ułatwiają wystawienie API, takie jak np. express JS, a w ścieżce front-endowej będziemy uczyli się budowania widoków w architekturze SPA, czyli frameworki Angular, React, View, Ember.

DK: A gdybym, załóżmy, chciał przejść wszystkie te szkolenia?

TP: No to będzie kilka tygodni.

DK: Przychodzę na szkolenia, w ciągu 4-5 tygodni przechodzę cały warsztat, a potem już tylko praktyka.

TP: Potem już tylko praktyka, ale pamiętaj, że jak przyjdziesz na szkolenie to będziesz miał dużą pigułkę wiedzy przekazaną przez praktyka, który pracuje na projektach. Czyli w zasadzie tę praktykę zaczniesz od pierwszego dnia szkoleniowego.

DK: Brzmi zachęcająco, ale jak już się tego nauczę, to gdzie powinienem pójść dalej, co powinienem dalej zrobić?

TP: To jesteś już full stackiem i możesz iść do pracy. A w międzyczasie możesz zrobić kurs z Machine Learning z TensorFlow w JavaScripcie.

DK: Do czego służy TensorFlow?

TP: Będziesz mógł wzbogacić funkcjonalność aplikacji o rozpoznawanie tekstu, rozpoznawanie obrazu…

DK: Aha – i tego wszystkiego mogę się nauczyć programując w JavaScripcie? Ależ się zmienił ten język programowania.

TP: Świat się zmienił.

DK: (śmiech). I wymagania. Czyli nie ma odwrotu od JavaScriptu.

TP: Nie ma odwrotu.

DK: I tym optymistycznym akcentem kończymy na dzisiaj. Pełna oferta szkoleń JavaScript od podstaw, z podziałem w kolejnych krokach na szkolenia dla osób zajmujących się interfejsem użytkownika i dla osób zajmujących się częścią serwerową. Dziękuję Ci, Tomku.

TP: Dziękuję.

DK: Do usłyszenia, do zobaczenia na kolejnym spotkaniu.

TP: Do zobaczenia.