Jakie języki programowania wykorzystuje embedded developer?
Każdy embedded developer zna języki programowania C oraz C++, ponieważ umożliwiają one szybki i deterministyczny (nielosowy) czas wykonywania programu, a także odpowiednią kontrolę nad zasobami układu elektronicznego. C został zaprojektowany z myślą o systemach operacyjnych, a C++ na początku jako jego rozszerzenie. Obecnie składnia tego języka rozwinęła się na tyle, że programowanie w nim nie przypomina prawie w ogóle “starego C”. Dzięki swoim możliwościom i czasie jaki już są na rynku oferują ogromną ilość bibliotek, rozwiązań oraz mocną społeczność. Są najczęściej wybieranymi językami do projektów embedded. Poza nimi na liście wykorzystywanych języków znajdziemy również Pythona i Assembly.
Język C
- prostota i ekspresywność składni - można bez trudu skonfigurować parametry sprzętowe nie tracąc na czytelności kodu. Z łatwością można się nauczyć jego składni i być w nim efektywnym,
- szybkość wykonywania programów i małe zużycie zasobów,
- dojrzałość - przez prawie 50 lat język ten jest wykorzystywany do programowania sprzętu, systemów operacyjnych, bibliotek systemowych,
- przenośność kodu - język C może być skompilowany do większości architektur procesorów. Jeśli zastanawiasz się jaki język został użyty do zaprogramowania logiki Twojej pralki, to będzie to prawdopodobnie C,
- popularność - według rankingu TIOBE jest to obecnie najpopularniejszy język na świecie.
C++
- szybkość wykonywania programów i małe zużycie zasobów,
- programowanie obiektowe - podejście to różni się od tradycyjnego (proceduralnego), ponieważ patrzymy na powiązanie pomiędzy danymi i operacjami jakie na nich możemy wykonać np. gdybyśmy tworzyli aplikację do sterowania robotem mielibyśmy takie obiekty jak robot, koła i sensory,
- złożoność języka - potrzeba kilku lat komercyjnego programowania w tym języku, żeby być w nim wprawnym. Ceną wykorzystania możliwości tworzenia abstrakcji jest to, że zaczynamy tracić kontakt ze sprzętem oraz wykorzystaniem jego zasobów. Żeby programować w C++, trzeba dokładnie wiedzieć jak dana konstrukcja językowa wpływa na sprzęt,
- przenośność kodu.
Python
Jest językiem często wykorzystywanym do pisania i automatyzacji testów na urządzenia wbudowane. Zawdzięcza to następującym elementom:
- prosta składnia - jest to język najczęściej proponowany dla początkujących ze względu na łatwość nauki i jego możliwości,
- szybkość implementacji - ilość kodu do napisania danej funkcjonalności jest relatywnie mała w stosunku do podanych tutaj innych języków,
- duża ilość narzędzi do testowania i raportowania wyników testów.
Assembly
Obecnie rzadko wykorzystywany język w embedded, ze względu na długi czas implementacji funkcjonalności, czytelność kodu i brak przenośności na inne architektury. Występują jednak określone sytuacje, gdzie trzeba go użyć:
- głębokie debugowanie kodu - musimy sprawdzić co tam rzeczywiście w trawie piszczy,
- urządzenie jest związane z bezpieczeństwem,
- optymalizacja kodu,
- fragmenty bazy kodu wykorzystują Assembly.
Podsumowanie
Języki programowania to tylko narzędzia, które wykorzystujemy do rozwiązywania problemów. Każdy z nich ma określone właściwości i nadaje się mniej lub bardziej w danej sytuacji. Może się okazać, że za kilka/kilkanaście lat będziemy wykorzystywać np. język Rust, a nie C++. Na ten moment jednak musisz wykazać się znajomością C/C++ by znaleźć pracę w embedded.