Jakie języki programowania wykorzystuje embedded developer?

post-thumb

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.

comments powered by Disqus