dla Początkujących
6 godz. 26 min · JavaScript · Full-stack i Programowanie
Adam GospodarczykProgramowanie to szeroka dziedzina, która nieustannie się rozwija. Rozpoczynając naukę możemy opierać się głównie na wskazówkach bardziej doświadczonych osób, bądź autorach kursów i nauczycielach. W praktyce najważniejsze na początku jest dobre zrozumienie tego, czym jest programowanie, jakie możliwości daje oraz jakie możemy wybrać ścieżki rozwoju. W tym kursie spojrzymy na programowanie z szerokiej perspektywy, dając Ci solidne podstawy do dalszej nauki.
To kolejne trudne pytanie, na które nie ma jednoznacznej odpowiedzi. Dobra wiadomość jest taka że języki programowania, podobnie jak angielski, niemiecki czy hiszpański mają cechy wspólne. Nie oznacza to że nauka jednego, da Ci dostęp do wszystkich ale poznasz ogólne mechanizmy, które spotkasz w niemal wszystkich pozostałych technologiach. W tym kursie skupiamy się właśnie na takich obszarach, opierając przykłady o obecnie najpopularniejszy język jakim jest JavaScript.
Być może zastanawiasz się jak dokładnie wygląda praca programisty? Czym różni się front-end od back-endu i czy wysokie umiejętności analityczne są wymagane niezależnie od obszaru programowania, którym się zajmujemy? Dodatkowo samo zostanie programistą to tylko początek drogi. Możliwości jakie przed nami stoją nie tylko są ogromne, ale również nieustannie się rozwijają, stawiając przed nami nowe wyzwania.
Ten kurs podzielony jest na dwie części - teoretyczną, która przedstawi Ci szerokie spojrzenie na programowanie oraz praktyczną, w której samodzielnie będziesz w stanie przekonać się jak pisać programy z wykorzystaniem języka JavaScript - najpopularniejszego języka na świecie. To, że będziemy przerabiać przykłady w JavaScript, nie stanowi przeszkody a wręcz lepiej przygotuje Cię do pracy z innymi językami jak Python, C# czy C++ lub Kotlin. To wszystko ułatwi Ci podejmowanie decyzji dotyczących dalszej nauki i rozwoju jako programista.
W pierwszych lekcjach części praktycznej kursu dowiesz się jak skonfigurować środowisko pracy wraz z edytorem, w którym przyjdzie Ci pracować. Pomożemy Ci w dobraniu odpowiednich ustawień i wtyczek, które przyspieszą naukę i pomogą w lepszym zrozumieniu podstawowych koncepcji programistycznych. Krok po kroku dowiesz się jak przygotować środowisko i rozpocząć komfortową pracę.
Mimo, że będziemy pracować z JavaScript, posłuży nam on do przedstawienia najważniejszych koncepcji programowania w każdym innym języku. Nie będziemy uczyć się tworzenia stron i środowiska przeglądarki a jedynie przećwiczymy najważniejsze koncepcje języków programowania w środowisku konsolowym. Dzięki temu zdobyte umiejętności z łatwością przełożysz na inne języki jak Python, Java czy Swift, bo wszystkie posiadają identyczne konstrukcje, a poznać należy wyłącznie różnice.
OOP to jeden z najważniejszych paradygmatów programowania, który powinien poznać każdy aspirujący Programista. Dzięki temu będziesz mógł zdecydowanie lepiej zrozumieć możliwości i powiązania klas i obiektów, które tworzą programiści a także pisać kod, który jest prostszy i reużywalny. To koncepcja, którą także wyjaśnimy obrazowo w kursie. Oczywiście, poza teorią w kursie pokażemy Ci przykłady tworzenia funkcjonalnych klas w JavaScript.
Kolejną ważną koncepcją, którą musi znać każdy początkujący Programista jest praca z błędami - innymi słowy obsługa błędów lub debugowanie naszej aplikacji. To niezwykle ważne, bo oszczędzi Ci mnóstwa frustracji oraz wielu godzin rozpoznawania, co w kodzie nie działa poprawnie. Z kursu w praktyce dowiesz się, jak testować swoje aplikacje, łatwo wykrywać błędy i korzystać z narzędzi, które będą je dla nas wykrywać lub automatycznie poprawiać!
Ten kurs przygotowaliśmy tak, aby był fundamentem wiedzy o Programowaniu, którego używamy w wielu naszych ścieżkach na eduweb.pl. To znaczy, że kurs który masz przed sobą rozpoczyna ścieżkę Python, JavaScript, Ruby i wiele innych. Wiemy, że w sieci jest mnóstwo materiałów na temat podstaw programowania i chcieliśmy przygotować wyjątkowy kurs, który da Ci spokój w natłoku wielu informacji w sieci. Zaangażowaliśmy w to najlepszych autorów eduweb oraz naszym zdaniem jednych z najlepszych programistów w Polsce. To, co jest jednak najważniejsze - kurs omawia programowanie bardzo prostym językiem, dzięki czemu jest przystępny dla każdego!
Kurs przeznaczony jest dla osób początkujących, które stawiają swoje pierwsze kroki na scieżce programisty lub programistki. Jednak skorzystają z niego także te osoby, które myślą o nauce programowania w celu uzupełnienia innych umiejętności, na przykład internetowi przedsiębiorcy, freelancerzy, UI/UX i web designerzy. Jeżeli czujesz się zagubiony lub przytłoczony dużą ilością często sprzecznych informacji - ten materiał pozwoli Ci szerzej spojrzeć na programowanie. To z kolei przełoży się na lepsze decyzje, które będziesz podejmować w kontekście swojego rozwoju. W kursie znajdziesz wskazówki i porady dotyczące efektywnej nauki programowania, które pomogą Ci szybciej zdobyć nowe umiejętności i pracę w zawodzie. Najważniejszą z nich jest fakt, że programowanie to dynamicznie rozwijająca się dziedzina, która wymaga od Ciebie nieustannej nauki. Zatem wypracowanie odpowiednich nawyków i technik nauki jest niezwykle istotne, niezależnie od miejsca w którym aktualnie się znajdujesz.
W tej lekcji pokażę Ci jak możemy zgłaszać
własne wyjątki i jest to coś co jest bardzo często wykorzystywane a szczególnie wtedy
jak korzystasz z cudzego kodu to w takim kodzie może się znaleźć właśnie zwracanie
wyjątku, które zawarł tam jakiś programista. I pokażę Ci teraz jak można to zrobić.
Mamy taki prosty przykład jak wcześniej czyli mamy jakiś taki obiekt db, który
pozwala szukać w bazie danych i naszą funkcję z searchDb, która otwiera
połączenie, szuka w tej bazie danych i zamyka połączenia. No i mamy to oplecione
tym blokiem try/catch, na wypadek gdyby gdzieś
w tej funkcji albo w innych funkcjach, które ona wywołuje pojawił się błąd.
Jeżeli sobie to zapiszemy widzimy, że tutaj żadnego błędu nie ma.
Ale teraz wyobraźmy sobie, że chcielibyśmy żeby nasza funkcja searchDb przyjmowała
słowo, którego chcemy szukać w bazie danych,
czy tak naprawdę frazę i to często nazywa się po prostu query,
więc tak nazwę ten parametr. Nasza funkcja
to przyjmuje i ona mogłaby to przekazywać dalej do funkcji db.search
i ta funkcja musiałaby to tutaj przyjmować.
To nie musi się wszędzie nazywać tak samo.
Czyli jeżeli moja funkcja przyjmuje query
to tu muszę przekazać query prawda, bo jakby pod tą zmienną to się znajduje pod takim
parametrem ale tutaj mógłbym to nazwać q i wewnątrz tej funkcji
to samo byłoby pod q.
Ale mogę również nazwać tak samo to w żaden sposób nie koliduje.
I moglibyśmy sobie tutaj ten string zamienić na
taki żebyśmy mogli napisać szukam w bazie danych frazy
i tutaj zrobić tą interpolację tego query.
Czyli teraz w momencie kiedy wywołujemy nasze searchDb to musimy przekazać coś pod to
query więc wpiszmy sobie na przykład, że szukamy kursu JavaScript,
zapisuje i teraz widzimy, że otwieramy
połączenie, szukam w bazie danych frazy kurs JavaScript, zamykam połączenie.
To połączenie zamyka się jakby dwa razy bo jest tutaj to również w bloku finally
więc nie musiałoby tego być tutaj
ale to nie jest żaden problem.
Teraz co my byśmy chcieli zrobić.
Otóż chcielibyśmy naszą taką bibliotekę,
którą byśmy tworzyli do wyszukiwania tak zabezpieczyć, że ktoś musi podać tą frazę,
który wyszukuje. Tutaj wszystko zawsze zależy od
programisty i od konkretnego zastosowania bo możemy zrobić tak, że jak ktoś nie podał
frazy to mu zwrócimy null, że nic nie zostało znalezione.
Natomiast jeżeli patrzymy tak z punktu widzenia takiej logiki programu to
powinniśmy tą frazę podać bo jeżeli ktoś chce szukać ale jej nie podał to samo to
wyszukiwanie samo w sobie ono nie ma sensu. Po co szukać czegoś czego nie podaliśmy.
Dlatego my tutaj moglibyśmy sprawdzić,
jeżeli ktoś tej frazy nie podał to zwrócić wyjątek.
Czyli tak naprawdę jakby zwrócić błąd mówiąc temu programiści, który korzystałby z
naszego kodu, że wystąpił tutaj jakiś błąd znaczy że popełniłem gdzieś właśnie jakiś błąd.
Czyli programista, który korzysta z naszego
kodu uruchamia program widzi, że program mu się występuje i wtedy zaczyna diagnozować.
Aha tutaj został zgłoszony taki błąd taki wyjątek,
z tego powodu, że gdzieś przez przypadek
nie podałem frazy wyszukiwania. Więc to może być bardzo, bardzo przydatne.
Więc co będziemy chcieli zrobić.
Wystarczy, że tutaj na samym początku naszej
funkcji sprawdzimy czy to query zostało podane.
Możemy to sprawdzić na wiele sposobów.
Jeżeli ktoś nic nie podał do tej funkcji
czyli zrobiłby tak, to wtedy query przyjmie wartość undefined.
Natomiast jeżeli by podał pusty ciąg znaków to też jest bez sensu bo to nie jest nic
co pozwalałoby nam z bazy danych wyciągnąć jakieś prawdziwe wyniki.
Więc tutaj możemy po prostu sprawdzić if not query czyli query jeżeli będzie miało
pusty ciąg znaków albo będzie miało wartość undefined,
to za pomocą tego operatora odwrócimy to na true
i wtedy po prostu wykona się blok kodu, który zrobiłem tutaj. I w nim całe clue tej
lekcji. Czyli będziemy chcieli zgłosić własny wyjątek i w języku JavaScript
robi się to pisząc throw,
zresztą w innych językach też
robi się to w taki sam sposób i następnie co chcemy stąd wyrzucić.
I co ciekawe możemy wyrzucić stąd np.
jedynkę i to throw działa trochę tak jak return. To znaczy że nic poniżej się już
nie wykona ale z drugiej strony zgłosi to również błąd. Czyli nasza taka funkcja
searchDb musi być opleciona takim blokiem try/catch.
Dlatego, że throw po prostu wyrzuca taki błąd. Ale nigdy się tego nie robi w ten sposób
tylko zwraca się tutaj czy wyrzuca się tutaj jakąś instancje błędu.
I w języku JavaScript
co ważne mamy taką klasę globalną jak
error, więc możemy utworzyć nowy obiekt tej klasy za pomocą new Error
i przekazać tutaj to co znajdzie się pod message. Więc moglibyśmy tutaj napisać
nie podano frazy wyszukiwania
i wykrzyknik.
I teraz prześledźmy co tutaj się stanie. Jeżeli ktoś tak jak zrobiliśmy tutaj
poprawnie poda frazę kurs JavaScript ona wpadnie tutaj pod query,
ten warunek się nie wykona, wszystko jest w
porządku, otwieram połączenie, szukamy w bazie danych, zamykamy połączenie.
Natomiast jeżeli ktoś nie poda tutaj tej
frazy czyli on źle skorzysta po prostu z naszej funkcji. Nie w taki sposób
jaki był w naszych zamiarach, wyczyśćmy to sobie, zobacz co się wtedy stanie.
Będzie wystąpił błąd nie podano frazy wyszukiwania i zamykamy połączenia.
I teraz co tutaj się stało. W tym momencie
myśmy wyrzucili stąd nową instancję tak naprawdę czyli nowy błąd. Bo ten zapis
new Error stworzy nam tak jak my wcześniej z naszych klas tworzyliśmy jakiś obiekt i
za pomocą operatora throw on zostanie jakby zgłoszony czy wyrzucony z naszej
funkcji. Gdyby tutaj nie było tego bloku try/catch a tylko użycie searchDb to program by się
wyłożył tak samo jak w poprzedniej lekcji Ci pokazałem ale dzięki temu, że jest blok try
to kiedy zrobiliśmy throw to zostało to przechwycone tutaj w bloku catch i pod e
czyli tutaj, został podstawiony dokładnie ten
obiekt, który tutaj żeśmy wyrzucili poprzez throw.
Więc to jest super istotne. To co my tutaj zgłosimy wpadnie pod e.
No i dzięki temu, że ta klasa error,
to co się jej poda tutaj przy jej tworzeniu zapisuje w środku pod
właściwością message to tutaj jak ktoś dostał ten obiekt pod e
to może się odwołać do Message i wyświetlić sobie błąd, które my
przekazaliśmy. I wiem, że na początku drogi z programowaniem te koncepcje mogą się
wydawać skomplikowane ale zapewniam Cię, że tak to będzie wyglądać kiedy będziesz
tworzył bardziej skomplikowane programy. Często będziemy korzystali z czyjegoś kodu
i może się okazać, że zobaczymy jakiś błąd, który właśnie powie nam nie podano frazy
wyszukiwania i będziemy mogli sprawdzić, ok
rzeczywiście zapomnieliśmy tutaj coś wpisać
i jest to taki błąd krytyczny dlatego
programista, który tworzył taki kod stwierdził, że jeśli tej frazy nie będzie
to po prostu musimy tutaj zgłosić taki błąd.
Mówi się, że zgłasza się tutaj wyjątki czyli tzw.
exception w języku JavaScript jest to klasa error w innych jest to exception
i to po prostu sprawi, że program
przestanie działać. I teraz taki programista albo będzie musiał naprawić
błąd albo w jakiś sposób opleść to sobie blokiem try/catch.
To jakby już nie jest nasze zmartwienie. My po prostu tworząc taką funkcję powiedzieliśmy,
że jak tego query nie ma to program nie może działać poprawnie.