19 listopada

0 Komentarzy

Co to jest programowanie?

19 listopada, 2020

Autor Starszy Programista

co to jest programowanie, nauka programowania, nauka programowania od zera, programista

W dzisiejszych czasach technologie cyfrowe coraz mocniej wkraczają w nasze życie oraz pojawiło się dużo nowych, czasem dziwnych profesji związanych z informatyką oraz programowaniem. Może podczas szukania ofert pracy natknąłeś się na oferty pracy typu: programista Java, programista c++, programista cnc, programista plc, programista baz danych itd. Wiec naturalnie nasunąć może się pytanie: kim jest programista i co to jest programowanie?

Co to jest programowanie?

Według definicji Wikipedii programowanie to:

Programowanie komputerów – proces tworzenia programu komputerowegoKod źródłowy jest napisany w języku programowania.

Z tej definicji możemy się dowiedzieć że wynikiem programowania jest program. Program to nic innego jak zbiór kroków i zasad jakie potrafi zrozumieć komputer i odpowiednio je wykonać. W tej definicji brakuje mi informacji o tym po co ktoś w ogóle miałby tworzyć program komputerowy? Programy piszę się w celu wykonania jakiejś pracy. Pracy która jest mozolna dla człowieka lub pracy której człowiek nigdy niebyły w stanie sam wykonać.  Ale ten wątek rozwinę dalej w tym wpisie.

Nawet nie wiesz że jesteś programistą!

Odejdę na chwile od definicji programowania komputerów i spojrzę z lotu ptaka na programowanie w ogóle. Kiedy np. zmieniasz baterię w zegarze na ścianie i ustawiasz godzinę by zegar wskazywał odpowiednio czas zimowy lub letni – wiesz że tak naprawdę programujesz zegar na godzinę w strefie czasowej w której znajduje się Polska? Właśnie zaprogramowałeś zegar!! Jesteś takim 'ukrytym' programistą:) Zegar równie dobrze może być ustawiony na czas który jest teraz w Londynie lub Nowym Jorku -> czyli w zależności od tego jaką informacje zakodujesz w zegarze, to powszechnie znane urządzenie będzie wykonywało „program” pokazywania czasu w jaki go zaprogramowałeś:)

Innym przykładem „krypto” programowania jest np. wstawianie prania lub ustawianie zmywarki. Tam też musisz odpowiednio wprowadzić „program” według którego ma się wykonać pranie: szybkość wirowania, temperatura wody, czas całego prania i analogicznie dla zmywania naczyń: ustawiasz program jak długo i z jaką temperaturą ma się wykonać mycie. Z pewnością teraz po tych przytoczonych przykładach samodzielnie znajdziesz inne urządzenia z życia codziennego które programujesz nawet nie zdając sobie z tego sprawy:) Każdy z nas jest programistą:)

Kod źródłowy i język programowania

No ale te twoje przykłady to nie jest prawdziwe programowanie – prawdziwy programista to tworzy jakiś tam kod źródłowy w tajemniczym języku programowania a nie ustawia program w pralce!

Zgoda. Faktycznie programista pisze kod programu. Kod programu to nic innego jak instrukcje, polecenia, komendy napisane zgodnie z danym językiem programowania które po wykonaniu tłumaczenia (kompilacji/interpretacji) potrafi wykonać maszyna. To wszystko. Wiec istnieją sobie urządzenia które potrafią wykonać po kolei komendy i instrukcje np. takim urządzeniem jest komputer. Komendy jakie dane urządzenie potrafi zrozumieć definiuje język programowania. Twoja lista komend która potrafi wykonać urządzenie to jest kod źródłowy programu, a gdy te instrukcje zostaną przetłumaczone do formy zrozumiałej przez urządzenie to wtedy mówimy o programie.

Uff! Mam nadzieje że nadal jesteś ze mną i przebrnąłeś przez to tłumaczenie:)

Kod źródłowy programu napisanego w Javie

Programowanie ma wiele twarzy

Wiec co to jest programowanie? To zależy. Zależy o jakie urządzenie chcesz oprogramować i wtedy możemy rozmawiać o programowaniu i języku programowania które może być w danym wypadku użyte. Poniżej postaram się przedstawić kilka przypadki programowania w podziale na profesję programisty. Mam nadzieje dzięki temu wyrobisz sobie zdanie czym jest programowanie.

Programista aplikacji desktopowych

Jeśli czytasz ten artykuł na komputerze to właśnie używasz aplikacji desktopowej – przeglądarki internetowej. Programiści aplikacji tworzą m.in. aplikacje które mogą być zainstalowane na komputerze z systemem operacyjnym Windows, Linux czy MacOS. Do tego można używać języków programowania takich jak: Java, C, C++  i jeszcze kilkadziesiąt innych. Na co dzień jeśli korzystasz z  Worda czy Excela to również są aplikacje desktopowe.

Wiele firm ciągle potrzebuje dla swoich pracowników aplikacji które będą ułatwiać lub nawet w ogóle umożliwiać im prace i ciągle jest zapotrzebowanie na specjalistów tworzących takie programy np. programy do projektowania wnętrz, dla przemysłu, czy odtwarzacz muzyki np. Spotify czy Apple Music. Jeśli rozpoczynasz naukę programowania pierwsze aplikacje które napiszesz pewnie będą aplikacjami desktopowymi/uruchamianymi na komputerze.

Jeśli chciałbyś zacząć naukę programowania to zapraszam Cię do mojego kursu podstaw programowania i Javy – zobacz czego się możesz nauczyć.

Programista front-end/aplikacji webowych 

Właśnie strona którą czytasz jest przykładem frontendu. Front-end to wszystko co wyświetla się u użytkownika w przeglądarce. To że strona np. dynamicznie doczytuje artykuły jak zjedziesz do końca strony (zobacz jak tłumaczę to na przykładzie Pudelka), wyświetla zdjęcia w odpowiedniej jakości w zależności od wielkości ekranu jaki posiada użytkownik (na ekranie laptopa jest więcej miejsca niż na smartphonie) czy też te wszystkie zawansowane edytory w których np. możesz sobie skonfigurować nową kuchnię, wybrać nadruk na kubek czy koszulkę lub bezpiecznie zrobić zakupy przez Internet – te wszystkie funkcje i wiele innych tworzą programiści frontendu. Tutaj króluje język JavaScript oraz tuziny bibliotek (kodu który przyśpiesza tworzenie aplikacji). Temat frontendu to temat rzeka. Nie tylko ostatnie zdanie mają tu programiści ale też graficy, marketingowcy („czerwony przycisk Kup sprzedaje nie ten zielony!”), projektanci interfejsu UX czy też inżynierowie optymalizujący czas wczytywania strony na przeglądarkę (Web Performance Optimization). Wiec jak widzisz pracy jest wiele przy „froncie” i naprawdę nie tylko wiedza programistyczna jest potrzebna do tworzenia aplikacji!

Programista back-end

Programista „zaplecza” aplikacji webowej? Widzisz ciężko się tłumaczy niektóre terminy z języka angielskiego na polski dlatego nasze polskie IT używa terminy po angielsku. Programista back-end tworzy niejako zaplecze dla aplikacji webowej którą używasz w przeglądarce internetowej, czy też tworzy zaplecze aplikacji mobilnej której używasz na swoim smartphone. A jak to działa? Kiedy logujesz się na Twoje konto np. poczty to aplikacja na serwerze zbiera tylko Twoje maile i wiadomości i wysyła je tylko Tobie. Inna osoba która tak samo się zaloguje otrzyma tylko swoje. Aplikacja back-endowa decyduje komu i kiedy zezwolić na dostęp do danych treści oraz ona trzyma piecze nad zapisem danych do bazy danych.

Programiści backendowi tworzą też aplikacje „autonomiczne” które wykonują pracę same bez sterowania przez kogokolwiek np. przetwarzanie zgromadzanych danych i generowanie raportów. Tutaj języków do wyboru jest wiele np. korporacje uwielbiają Jave oraz rozwiązania Microsoftu na platformie .NET. Firmy tworzą też aplikacje w Pythonie, Node.js czy PHP. W sumie PHP jest mega popularny gdyż istnieje wiele gotowych darmowych aplikacji np. WordPress do tworzenia blogów (ta strona stoi na Wordpresie), aplikacje sklepów internetowych, stron forum i wiele wiele innych.

Programista aplikacji mobilnych

Znam tylko kilka osób które do dziś dnia odmawia używania smartfonów i nie są to seniorzy:) Większość z nas posiada takie urządzenie na własność oraz używa na nich przeróżne aplikacje: od alarmu czy budzika, przeglądarki internetowej, aplikacji bankowej czy gier, map ect. Właśnie tego typu oprogramowanie tworzą programiści aplikacji mobilnych. Tutaj duży wpływ jaki język programowania może być użyty na danej platformie decyduje jej twórca. I tak na iPhony które stworzył Apple używa swój język Swift. Natomiast na Androida – system operacyjny stworzony przez Google wspiera Jave oraz języki z rodziny „Javy” np. Kotlin.  Dlatego warto się uczyć Javy ponieważ można na niej tworzyć aplikacje też na smartphony.

Programista baz danych/hurtowni danych

A co to u licha baza danych? To taki program w który w sposób bezpieczny potrafi przechować dane np. klientów firmy, hasła, dane finansowe, w sumie to każdy rodzaj danych jaki się wymarzy programistom do przechowywania. Bazy danych potrafią przechowywać informacje w sposób zorganizowany tak by móc w ich gąszczu wyszukiwać informacje które aktualnie potrzebne są użytkownikom lub programom. Bazy posiadają również specjalne języki pozwalające na wykonywanie prostych jak i skomplikowanych zapytań – tak, baze danych można od tak zapytać by podała nam informacje ale trzeba wykonać to zapytanie w języku który rozumie baza SQL. Jak takie zapytanie mogło by wyglądać? np. jeśli baza posiada informacje o zakupach wykonanych przez klientów w postaci tabeli gdzie kolumny to rodzaj informacji np. data zakupu, cena produktu a wiersze tej tabeli to poszczególne transakcje wykonane przez klientów. To zapytanie może wyglądać tak: z tabeli transakcje dodaj wszystkie koszty produktów z dnia 2020-11-19. Baza takie zapytanie potrafi zinterpretować i zwrócić wynik w postaci liczby która jest wypadkową wszystkich zakupionych produktów 19 listopada. Bazy danych są bardzo cenną rzeczą każdej firmy ponieważ może zawierać poufne informacje klientów. Programiści baz danych projektują w jaki sposób aplikacje mają przechowywać informacje oraz tworzą aplikacje wykonujące raporty jakich potrzebuje firma np. by lepiej podejmować decyzje.

Programista sztucznej inteligencji (data science, machine learning)

Sztuczna inteligencja z angielskiego artificial intelligence w skrócie AI jest działem informatyki który ma za zadanie modelowanie zachowań inteligentnych. Sama dziedzina nie jest młoda ale ostatnio kiedy pojawiły się większe zasoby danych oraz moc obliczeniowa komputerów stałą się tańsza AI przeżywa swój rozkwit. Programiści AI zajmują się problemami rozpoznawania obrazów np. przedmiotów na zdjęciach, rozpoznawaniu mowy, rozpoznawaniu tekstu czy też wnioskowania na podstawie tekstu. Sam na studiach napisałem aplikację która rozpoznawała czy do mieszkania weszła osoba nieupoważniona (po prostu złodziej) czy może po mieszkaniu chodzi sobie kot i w takim wypadku nie trzeba uruchamiać alarmu. Sztuczna inteligencja ma obiecujące zastosowanie w budowie robotów oraz pojazdów autonomicznych np. auta Tesla które same potrafią poruszać się po drodze. Programiści sztucznej inteligencji budują modele które szukają korelacji czyli powiązań między zebranymi informacjami, gdzie zbiory danych są ogromne a powiązania niewidoczne dla człowieka na pierwszy rzut oka. Komputery z odpowiednimi algorytmami wykonują takie analizy bez zmęczenia i znudzenia. Ciekawe zastosowanie sztucznej inteligencji ma w medycynie i badaniach genetycznych, gdzie szuka się nowych formuł leków czy wyszukuje się sposobu na dokładniejsze diagnozowanie chorób np. raka we wczesnym stadium kiedy jest jeszcze uleczalny. Wiec jeśli jesteś wizjonerem lub chciałbyś/chciałabyś odkryć coś nowego lub ulepszyć świat zostanie programistą sztucznej inteligencji jest dobrym pomysłem. I naprawdę jest wielu sceptyków i osób które mogą mówić że kiedyś świat stanie się jak w Matrixsie gdzie człowiek będzie uciekał przed maszynami – wydaje się to prawdopodobne ale to od nas zależy jak użyjemy narzędzia jakim jest sztuczna inteligencja.

Programista integracji

Programista integracji zajmuje się łączeniem ze sobą aplikacji. Może wydawać się to trochę dziwne ale skoro istnieje aplikacja A która potrafi przyjąć płatności oraz aplikacja B która potrafi wysyłać smsy to tylko kwestia „zintegrowania” tych dwóch programów/usług by po zaksięgowaniu wpłaty aplikacja A powiadomiła aplikacje B by ta wysłała smsem potwierdzenie do klienta. Ale nic samo w przyrodzie się nie wykonuje – takie połączenie dwóch programów wykonuje właśnie programista integrator. Do wykonywania tego typu zadań używa się specjalnie zdefiniowanej konwencji/protokołu w którym można zaprogramować komunikacje między 2 aplikacjami np. SOAP czy REST. Świetnym narzędziem do wykonywania tego typu integracji jest Java – jeśli chciałbyś ją poznać to zapraszam Cię do mojego kursu.

Devops

Osoba na stanowisku devops zajmuje się nie tyle rozwojem aplikacji o nowe funkcje co dbaniem by aplikacja działała nieprzerwanie i można było w łatwy – najlepiej automatyczny sposób, dostarczać nowe jej wersje użytkownikom. Devopsi często muszą znać się na wielu technologiach, językach skryptowych oraz umieć kombinować by umiejętnie zbudować procesy/mini aplikacje które pozwalają na utrzymaniu aplikacji w zdrowiu.

Gry komputerowe

Programiści gier komputerowych tworzą programy które potrafią przy użyciu kart graficznych generować wirtualne światy w których osadzone są gry komputerowe czy też gry na konsole. Taki programista przy użyciu prostych plików graficznych tzw. tekstur generuje całe modele postaci, budowli, krajobrazów i przy użyciu zawansowanych algorytmów i wiedzy z dziedziny geometrii i trygonometrii buduje światy które czasami łudząco wyglądają jak prawdziwy świat. Oczywiście np. taką grę Wiedźmin (nasza chluba narodowa) tworzą setki osób przez kilka lat. Program gry Wiedźmin to pewnie miliony lini kodu – czyli instrukcji które ostatecznie tworzą grę dającą niezapomniane doznania i rozgrywkę dla graczy. Program który jest grą składa się z materiałów typu dźwięki, filmy, teksty scenariuszy, konfiguracje gry, konfigurację rozgrywki oraz tzw. silnik gry który posiada w sobie moduły np. silnik fizyki czy moduł sterowania światła w grze czy efektów specjalnych. Jeśli chciałbyś/chciałabyś zostać programistą gier to polecam rozpocząć naukę od tworzenia prostszych gier w specjalnych edytorach i stopniowe szlifowanie umiejętności by potem zacząć tworzyć własne gry przy użyciu np. Unreal Engine.

Poniżej zamieszczam film z najnowszą wersją silnika do tworzenia gier Unreal Engine 5 – film jest po angielsku ale można włączyć polskie napisy:

Programista robotów/Programista mikrokontrolerów

Programista robotów bardzo często nie tylko programuje roboty ale również je tworzy. Wiec jest to osoba która ma pasję do majsterkowania oraz wiedzę z zakresu budowania maszyn, elektroniki oraz oprogramowywania układów scalonych. Osobiście miałem kilku znajomych pasjonatów którzy tworzyli takie rozwiązania np. mój kolega na pracę magisterską zbudował robota pająka którego można było sterować zdalnie przez wifi przy użyciu przeglądarki a inny budował latające drony zadaniowe – posiadały ramiona mechaniczne które mogły wykonywać prace na wysokościach – również zdalnie sterowane.

W dzisiejszych czasach też bardzo popularne stały się tzw. inteligentne urządzenia, domy itp. po angielsku IoT i tutaj jest bardzo duża przestrzeń nowych dróg rozwoju – wiec jeśli nie boisz się elektroniki i chciałbyś zostać programistą to polecam Ci ten kierunek. Na Politechnice Warszawskiej powstał kierunek Inżynieria Internetu Rzeczy. Oczywiście nie musisz iść na studia by zacząć tworzyć małe roboty i urządzenia – już w domu możesz spróbować swoich sił w programowaniu układów Arduino czy Raspberry Pi.

Poniżej przykład najbardziej zawansowanych robotów jakie powstały – a wszystkie zostały stworzone przez inżynierów/programistów – film jest po angielsku ale można włączyć polskie napisy:

Programista PLC/CNC

Starszy Programista

O autorze

Jestem Starszym Programistą i bardzo się cieszę że mnie odwiedziłeś! Na co dzień pracuje jako programista Java, jak to by najstarsi górale ujęli: Senior Java Developer. Programowanie to moja pasja, i jeśli jeszcze nie bardzo wiesz jak zacząć przygodę z Javą to z nieukrywaną frajdą przedstawię Ci magię programowania oraz wytłumaczę Ci świat Javy!

Zostaw komentarz

Your email address will not be published. Required fields are marked

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

Ogarnij Javę sam/a!
Poznaj podstawy programowania oraz naucz się tworzyć aplikacje w Javie