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.