Programowanie jest dziś integralną dziedziną elektroniki. Choć oczywiście wiele urządzeń można zbudować wyłącznie na bazie podstawowych układów cyfrowych i analogowych, to jednak znacznie łatwiej i szybciej osiągniemy założony cel, jeśli zaprzęgniemy do pracy mikrokontroler lub – w razie potrzeby – minikomputer jednopłytkowy. Układy programowalne mają wiele zalet, a ich podstawową przewagą nad klasycznymi, czysto „sprzętowymi” rozwiązaniami jest łatwość wprowadzania modyfikacji oraz aktualizacji, poprawiających znalezione błędy i rozszerzających możliwości funkcjonalne urządzenia. Programowanie w zastosowaniach „okołoelektronicznych” nie ogranicza się jednak do tworzenia systemów wbudowanych i kodów dla mikrokontrolerów. Bardzo często zachodzi potrzeba napisania mniej lub bardziej złożonego programu na komputer lub urządzenie mobilne, komunikującego się z urządzeniem i tworzącego jeden, sprawnie działający system. W tym artykule przedstawiamy najważniejsze informacje na temat nauki programowania i możliwości, jakie ono daje w codziennej praktyce.
Programowanie – dla kogo?
Wbrew obiegowej opinii, programowanie nie jest dziedziną dostępną jedynie dla osób wybitnie uzdolnionych matematycznie i posiadających duże doświadczenie w obsłudze, administracji czy nawet budowie komputerów. Wręcz przeciwnie – w ostatnich latach powstało bardzo wiele platform programistycznych, języków programowania oraz aplikacji, które umożliwiają tworzenie programów nawet dzieciom. I nie chodzi tutaj wyłącznie o coraz popularniejsze, graficzne środowiska programistyczne, w których algorytmy rysuje się poprzez składanie kolorowych bloczków na ekranie komputera, niczym „wirtualne puzzle”. Również języki programowania, czyli zbiory instrukcji, symboli, funkcji oraz składni, ulegają coraz dalej idącym uproszczeniom. Doszło nawet do tego, że w niektórych „ekosystemach” można stworzyć w pełni funkcjonalny serwer sieciowy za pomocą zaledwie kilkunastu linii kodu. Wybór środowiska i języka programowania zależy od zastosowania – inne narzędzia są dostępne dla małych mikrokontrolerów (np. AVR czy PIC), nieco inne dla dużych, wydajnych procesorów (np. ARM), a jeszcze inne dla wielordzeniowych procesorów aplikacyjnych, pracujących pod kontrolą systemów operacyjnych (np. Androida). Granice zacierają się jednak także pod tym względem i języki, które do niedawna były zarezerwowane tylko dla komputerów (np. Python czy C++) z powodzeniem mogą być wykorzystywane do programowania mikrokontrolerów.
Programowanie programowaniu nierówne
Pomimo podobieństw w zakresie języka programowania oraz stosowanych narzędzi, istnieje też sporo różnic, dzielących tworzenie kodu dla „dużych” urządzeń – komputerów, serwerów czy urządzeń mobilnych – oraz dla „małych” mikrokontrolerów i mikroprocesorów. Na pierwszym miejscu jest zdecydowanie filozofia projektowania i implementacji (czyli realizowania założonych celów w postaci kodu źródłowego) programów dla różnych maszyn i urządzeń. O ile w przypadku „dużych” systemów mamy do czynienia ze sporymi zasobami pamięci oraz imponującą wydajnością obliczeniową, to często nie zastanawiamy się podczas tworzenia aplikacji nad tym, co dokładnie dzieje się na tzw. niskim poziomie – czyli, prościej mówiąc, w samym sprzęcie. Programowanie mikrokontrolerów jest nierozerwalnie związane z elektroniką i to już nie tylko cyfrową – prawie wszystkie dostępne obecnie na rynku mikrokontrolery są wyposażone przynajmniej w podstawowe przetworniki analogowo-cyfrowe, a często także przetworniki DAC, komparatory, a nawet… wzmacniacze operacyjne. Tworzenie kodu dla mikrokontrolerów wymaga przynajmniej podstawowej znajomości elektroniki – ponieważ właśnie program, wgrany do pamięci mikrokontrolera, odpowiada zachowanie fizycznych podzespołów: załącza wyjścia przekaźnikowe, steruje silnikami i wyświetlaczami, odczytuje i przetwarza dane z czujników, klawiatur czy pokręteł. Dlatego ważna jest umiejętność myślenia „zespolonego”, łączącego to, co niefizyczne (kod programu) z rzeczywistymi komponentami, znajdującymi się w otoczeniu procesora i zależnymi od jego rozkazów.
Programowanie – dlaczego warto się go nauczyć?
Odpowiedzi na powyższe pytanie jest bardzo wiele – tak wiele, jak przyczyn, które skłaniają kolejne osoby do zajęcia się programowaniem. Nie da się ukryć, że praktycznie cała branża IT – w tym w szczególności programowanie – jest bardzo dochodowym działem rynku pracy, a wielu absolwentów (a nawet czynnych studentów) uczelni technicznych zmienia zawód, „przeskakując” z innych – nawet odległych – dziedzin inżynierii właśnie do programowania. Często odbywa się to przez obszary pokrewne, w szczególności działy testowania oprogramowania, które z natury rzeczy są związane z samym kodem i (nie zawsze zgodnymi z oczekiwaniami) efektami jego działania. Wiele osób zajmuje się jednak tworzeniem programów dla czystej przyjemności, bez snucia komercyjnych planów – jako przykład niech posłużą nam liczne w naszym kraju zawody robotów amatorskich, przyciągające już nie tylko studentów, ale także dzieci w wieku kilku..kilkunastu lat, a nawet osoby w średnim i starszym wieku. Programowanie, oprócz oczywistych korzyści praktycznych, jest bowiem doskonałym, niewyczerpanym wręcz źródłem „adrenaliny” i – co więcej – nie wymaga często żadnych lub prawie żadnych nakładów finansowych, większość narzędzi jest bowiem darmowa. Jeżeli udało nam się ostatecznie przekonać Cię do nauki tworzenia kodu – zobacz koniecznie nasz artykuł, prezentujący najciekawsze naszym zdaniem kursy programowania.