Jak zacząć programować? – Nauka programowania – Ekspert Computer Alliance Radzi!
Jak zacząć programować? Na to pytanie odpowiada sobie każdy komputerowy adept. Zacznijmy od definicji programowania. Programowanie komputerów to proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów komputerowych lub urządzeń mikroprocesorowych (mikrokontrolery). Kod źródłowy jest napisany w języku programowania, z użyciem określonych reguł, może on być modyfikacją istniejącego programu lub czymś zupełnie nowym. Programowanie wymaga dużej wiedzy i doświadczenia w wielu różnych dziedzinach, jak projektowanie aplikacji, algorytmika, struktury danych, języki programowania i narzędzia programistyczne, kompilatory, czy sposób działania podzespołów komputera. W inżynierii oprogramowania programowanie (implementacja) jest tylko jednym z etapów powstawania programu.
Kliknij i zobacz inne artykuły przygotowane dla programistów.
Artykuł: Laptop dla web developera – TOP 5 propozycji
Artykuł: Laptop dla programisty – cechy dobrego sprzętu komputerowego
Zanim zaczniesz programować powinieneś odpowiedzieć sobie na kilka kluczowych pytań. Oto one:
Dlaczego chcesz się nauczyć programować?
Odpowiadając na to pytanie powinieneś sobie uzmysłowić, że trzeba mieć prawdziwy powód żeby nauczyć się programować. Być może zauważyłeś, jak szybko zmienia się świat. Technologia zmienia się jeszcze szybciej. Technologie, które wchodzą dziś, po kilku latach zazwyczaj jest już przestarzała lub nawet nie istnieć. To się dzieje cały czas – every day, every night. Jedyną stałą w programowaniu jest ciągła zmiana. Musisz cały czas się rozwijać, uczyć się i podejmować właściwe decyzje.
Gdy się zatrzymujesz (zwalniasz), to tak jak byś się cofnął, ponieważ cały świat brnie do przodu!
Kiedyś zrozumiesz tę ideę, gdy po wielu latach trafiłem do luksusowego hotelu tętniącego życiem z mojego dzieciństwa. Przeżyłem szok, hotel bardziej przypominał mi PRLowską umieralnię. Dlaczego? Przecież hotel nic nie zmienił. A w tym czasie świat poszedł do przodu, bardzo do przodu. Zmieniły się oczekiwania, a bogate wyposażenie mogło zachwycać jedynie w latach 90. W informatyce czas leci znacznie szybciej,m nawet 100 razy szybciej!
Jak zacząć programować – programowanie to nieustająca nauka!
W związku z tym, że IT rozwija się tak szybko i z każdą chwilą powstają nowe, kolejne możliwości. Musisz nauczyć się podejmować decyzje, “w co warto pójść”, co ma przyszłość, a co nie. Może się okazać, że po kilku latach, twoja specjalizacja w wybranej technologii jest całkowicie bezużyteczna. Gdybyś kilka lat temu był fanem WPF’a/Silverlight’a to co byś robił dzisiaj? Nauka języka programowania, to bardzo mały wycinek całości! Na szczęście gdy nauczysz się jednego języka, wiele innych opanujesz w mgnieniu oka.
Jak zacząć programować – Zarobki programistów
Dla wielu osób motywacją są zarobki (choć według mnie istnieją silniejsze powody, dla których warto programować). Pamiętaj pracując w IT. Twoim głównym narzędziem jest komputer. Warto zainwestować w solidny komputer lub solidny laptop. Kliknij w linki i zobacz nasze propozycje dla programistów. Możesz znaleźć pracę, która pozwoli Ci pracować zdalnie (z domu, z Tajlandii, gdziekolwiek będziesz). Warto zwrócić uwagę, że nie musisz wcale pracować dla polskiej firmy. Możesz zarabiać np. “tyle samo”, tylko w euro, dolarach, funtach.
W ekonomii funkcjonuje prawo popytu i podaży. Jeśli jest pracodawcy potrzebują programistów X,
- a programistów X jest mało (to zarabiasz więcej), w końcu jakoś trzeba Cię zachęcić byś wybrał akurat tą firmę a nie inną (trudno będzie znaleźć kogoś na twoje miejsce).
- a programistów X jest dużo (to zarabiasz mniej), naturalnie stawki są niższe, bo zawsze ktoś się znajdzie na twoje miejsce.
Jak zacząć programować? – Programista programiście nie równy.
Nieraz większe doświadczenie, potrafi skrócić czas produkcji o dni, tygodnie, miesiące. Doświadczony programista zrobi coś w tydzień, a początkujący informatyk będzie potrzebował co najmniej miesiąca tworząc przy tym produkt gorszej jakości. Dlatego doświadczenie jest tak bardzo pożądane! Warto również wiedzieć, że stawki są negocjowane i często tajne. Jak w każdej innej pracy w przypadku dużego popytu, niższej podaży – nieraz zdarza się, że nowo zatrudniona osoba bez większego zatrudnienia – zarabia znacznie więcej niż osoba doświadczona pracująca wiele lat w danej firmie – życie – biznes.
Jak zacząć programować? Jaki język wybrać?
Podobnie jak w życiu, wybór narzędzi zależy od tego co chcesz zrobić. Różne miejsca – różne języki. Zastanów się gdzie chcesz być, za 2, 3, 5, 10, lat. W zależności od tego wybierz język (technologię). Jeśli twoim marzeniem jest korporacja, to być może warto pomyśleć o Javie. Jeśli bardziej widzisz się w start-up’ie (młodej prężnej firmie) – może Python. Jeśli chciałbyś tworzyć magiczne strony (HTML + CSS + JS).
Jak się uczyć?
Metod nauki jest wiele. Jak zawsze najważniejsza jest praktyka. Przede wszystkim musisz zadbać o środowisko, które pomoże Ci w nauce. Będziesz popełniał błędy. To dobrze. Dzięki nim się nauczysz. Jednak musisz zadbać o to byś jak najszybciej dowiedział się o popełnionym błędzie. Niektóre języki wymagają kompilacji. Przez co musisz napisać pewną część kodu, dopiero potem możesz skompilować (czyli przetłumaczyć na język zrozumiały dla komputera). Dopiero wtedy może okazać, się że coś nie działa. W językach skryptowych. W chwili wpisywania linijki możesz zobaczyć jaki ma efekt. Jeśli efekt Ci się nie podoba – możesz zmienić. Dużo szybciej możesz ‘podłapać’ o co chodzi.
Dlatego zachęcam do języków skryptowych/interpretowanych przynajmniej na początek.
Jak zacząć programować? Społeczność jest potrzebna.
Pomoc w rozwiązaniu problemów. W czasie programowania na pewno spotkasz się z milionami problemów. Jedne będą wynikały z tego co napisałeś inne z czynników środowiskowych. To znaczy, że błąd wynika:
- z braku biblioteki,
- innej niż wymagana wersja,
- możesz mieć najnowszą wersję, ale w niej znajduje się błąd widoczny w twoim programie,
- być może zaktualizowałeś bibliotekę zależną, ale nie jest w pełni kompatybilna.
Jeśli wokół tego co robisz zebrała się odpowiednio duża społeczność, z pewnością już ktoś trafił na taki problem i go rozwiązał.
Zatem w internecie z pewnością znajdziesz odpowiedź – co zrobić. Najpopularniejszym serwisem Q&A w tej dziedzinie jest Stack Overflow.
Gotowe komponenty!
Nie ma sensu odkrywać koła na nowo. W programowaniu jeśli to tylko możliwe, to korzysta się z istniejącego kodu. Kodem mogą być różne funkcje, komponenty które kiedyś napisałeś, albo biblioteki które napisali inni (i udostępnili). Zwróć uwagę, że nawet np. sortowanie, czy nawet narysowanie zwykłej linii również wymaga pewnego kodu. Zagadnienie może wydawać się proste, jednak wymaga to czasu, często proste rozwiązanie jest niewydajne (wolne). Na szczęście ktoś to już napisał. Zatem będziesz korzystał z bibliotek/komponentów, które robią to co chcesz. Nie musisz wiedzieć jak to realizują, ważne jest jak je obsłużyć.
Angielski!
Na bardzo elementarnym poziomie angielski nie jest wymagany. Później jednak będzie niezbędny chociażby do czytania dokumentacji bibliotek/komponentów z których będziesz chciał skorzystać.
Frontend/Backend
W informatyce wyróżnia się Frontend i Backend. Przypomina to koncert. W czasie koncertu widzisz scenę (frontend), jednak by odbył się koncert, ktoś musiał przygotować scenę, zamontować głośniki, oświetlenie, ktoś musi tym zarządzać. Ważne są też toalety, bezpieczeństwo, obsługa i sprzedaż biletów, reklama (dzięki której wiesz, że taki koncert będzie) i wiele wiele innych. To wszystko z tyłu to backend (w przypadku koncertów mówimy o backstage).
Frontend – to widoczna część projektu – zazwyczaj widoczna w przeglądarce.
Backend – to niewidoczna część projektu, dzięki której wszystko działa.
Mobile/Desktop
Mobile – telefon – często w kontekście aplikacji na telefon.
Desktop – komputer – często w kontekście aplikacje na komputer
Jak zacząć programować? Co chcesz robić – jaki język?
Jak zacząć programować? Specyfika poszczególnych języków
Z każdym językiem wiąże się wiele technologii, frameworków, etc – często nie mają wiele wspólnego ze sobą – są to osobne galaktyki.
JavaScript / JS / ECMAScript
JavaScript (w skrócie: JS, a tak naprawdę jest to ECMAScript). Jest to język “Interpretowany”. Jest to język dostępny w każdej przeglądarce.
Każda przeglądarka posiada narzędzia programistyczne. W chrome wystarczy nacisnąć F12 (by otworzyć narzędzia programistyczne) i już możesz pisać.
JavaScript to język w którym pisze się programy które mają działać w przeglądarce (u użytkownika, po pobraniu strony z serwera). Ze względu jego popularności i niechęci programistów do nauki kolejnego języka. Współcześnie JS wykroczył poza przeglądarki. Przy użyciu JavaScript można pisać różnego rodzaju usługi po stronie serwera z wykorzystaniem tak zwanego node. Przy użyciu JS – można również tworzyć aplikacje na telefon.
Jak wiesz na rynku mamy kilka przeglądarek. Każda z nich posiada wiele wersji. Dlatego pewne opcje dostępne są w nowszej wersji przeglądarki a inne nie. Ale aplikacja musi działać na tym i na tym. Dlatego w tym języku wykorzystuje się niezliczoną ilości ‘łatek’. Jeśli przeglądarka nie posiada danej opcji, to trzeba wykombinować, by mimo wszystko dana funkcjonalność naszej aplikacji działała.
Współcześnie jest już lepiej i wygodniej. Jednak cokolwiek piszesz, musisz wiedzieć jakie i jak stare przeglądarki chcesz obsługiwać.
Gdy już wiesz, to przed użyciem warto sprawdzić, kiedy i gdzie dana funkcja stała się dostępna (czy spełnia twoje kryteria).
Pierwsza biblioteka którą musisz poznać to: JQuery
Gdy będziesz tworzyć DUŻO bardziej skomplikowane strony, to z pewnością przydadzą się:
- Angular
- React
- Vue
- Backbone (+ Marionette)
SQL
SQL to język komunikacji z bazą danych.
W języku SQL mówisz:
“Bazo danych, interesuje mnie klienci, których pozyskaliśmy w tym roku, którzy dokonali co najmniej kilka zakupów w tym produkt XYZ. Podaj mi ich imię, nazwisko i adres email wraz z ilością produktów które kiedykolwiek kupili.”
Kiedyś jeśli będziesz tworzył duże aplikacje bazodanowe, z pewnością i tak będziesz musiał się nauczyć. Proste zapytania zrozumiesz w mgnieniu oka.
np. (przykład kodu)
SELECT first_name, last_name, email FROM customers;
Proste? Wydaje się proste nawet jeśli nie znasz SQL.
Java
Wymaga kompilacji. Język kochają korporacje. Może nie kochają ale z niego korzystają. Dlaczego? Ponieważ do tej pory istnieje bardzo dużo bibliotek, ‘kodu’ napisanego w tym języku. Migracja wymagała by napisania wszystkiego od nowa (a zajęło by to wiele lat). Język wykazuje dużą stabilność. Zatem program napisany dziś nadal będzie działał za kilka lat!
Python
Język interpretowany.
Bardzo dynamicznie zyskuje zwolenników. Python występuje w dwóch wersjach. Python 2.7.x oraz 3.x.
Python 3.x nie jest w pełni kompatybilny z python 2.7. Dlatego programy napisane w wersji 2.7 prawdopodobnie nie będą działały prawidłowo w python 3.x! Jest to przekleństwo i jednocześnie najwspanialsza rzecz dotycząca Pythona. Jest to niezwykle czytelny język.
Assembly
Assembler jest to prawie kod maszynowy (0001 1011 001). Prawie oznacza że w tym języku określasz konkretne komendy które procesor ma wykonać.
Różne procesory mogą mieć różne komendy. Assembler umożliwia napisanie najbardziej wydajnych implementacji! Assemblera używa się tylko dla fragmentów kodu, które muszą być naprawdę wydajne! – resztę pisz się w bardziej przyjaznych językach.
Prosta funkcja licząca ciąg fibbonaciego w asemblerze zajmuje 140+ linijek (nie licząc komentarzy – które są niezbędne by zrozumieć kod). W pythonie to samo może zająć max kilka linijek!
IncrementCount:
mov cx,cntDigits ;
mov di,counter+cntDigits-1
std ; go from LSB to MSB
stc ; this is our increment
pushf ; save carry flag
.top
mov ax,000fh ; convert from ASCII BCD to BCD
and al,[di] ; get next digit of counter in al
popf ; recall carry flag
adc al,ah ; add these digits
aaa ; convert to BCD
pushf ;
add al,’0′ ; convert back to ASCII BCD digit
stosb ; save and increment counter
loop .top ;
popf ; recall carry flag
ret ;To wycinek kodu liczący ciąg fibonacciego z http://assembly.happycodings.com/code1.html
R
Wygodny język do obliczeń statystycznych. Ewentualnie możesz spróbować pythona z NumPy i SciPy. Jednak python jest już językiem ogólnego przeznaczenia, zatem może nie być aż tak wygodny do obliczeń statystycznych.
Jak zacząć programować? Podsumowanie
Odpowiadając na tytułowe pytanie – Jak zacząć programować? Należy odpowiedzieć sobie na 3 pytania:
– czy jestem gotowy ciągle się roziwjać i uczyć? (nauka programowania nigdy się nie kończy)
– czy wiem gdzie chcę być za 2, 5, 10 lat?
– czy zdecydowałem co chcę programować? (to determinuje jakiego języka powinienem się nauczyć)
Pozdrawiamy i zapraszamy do inwestycji w Laptopy dla programistów
Zespół Computer Alliance
http://www.computer-alliance.pl