Programiści systemów wbudowanych słabo znają język C

| Gospodarka Artykuły

Według badań rynkowych ponad 80% programistów systemów embedded wykorzystuje C lub C++ jako swój podstawowy język programowania. Jednak w teście dotyczącym znajomości języka C wypadli oni bardzo słabo.

Programiści systemów wbudowanych słabo znają język C

Test na stronie Netrino.com sprawdzający znajomość języka C w systemach wbudowanych w ciągu 25 miesięcy rozwiązało ponad 4000 osób, a wyniki zbiorcze oraz w podziale na kraje i regiony dostarczają ciekawych wniosków – programistom systemów wbudowanych za znajomość języka C należy się jedynie ocena dostateczna.

Rys. 1. Rozkład wyników testu znajomości języka embedded C

Jest to wynik bardzo niepokojący, biorąc pod uwagę fakt, że od pisanego przez nich oprogramowania urządzeń medycznych, aplikacji przemysłowych, urządzeń ABS czy instrumentów znajdujących się w kabinie pilota może zależeć ludzkie życie. Embedded C Quiz składa się z 10 pytań wielokrotnego wyboru, z których każde ma cztery możliwe odpowiedzi, w tym okazjonalną w stylu „żadna z powyższych”. Rozwiązanie testu w sposób całkowicie losowy pozwoliłoby na zdobycie zaledwie 20 lub 30% punktów.

Udzielenie odpowiedzi trwa kilka minut, jednak nie ma limitu czasowego. Każde pytanie jest całkowicie niezależne od innych, a kolejność pytań taka sama dla wszystkich uczestników. Test został opracowany przez ekspertów z dziedziny firmware’u, a jego założeniem było sprawdzenie znajomości tych cech języka C, które są najbardziej specyficzne dla oprogramowania embedded.

Przykładowe kwestie poruszane w teście dotyczą właściwego użycia stałych, zmiennych i zmiennych statycznych, pisania mobilnego kodu C z użyciem kompilatorów i preprocesorów kompatybilnych z ANSI/ ISO oraz wykorzystania rotacji bitowych. Na przykład w jednym z pytań należy z dostępnych odpowiedzi wybrać właściwy typ „x” dla deklaracji „int * const x;”.

W innym trzeba wskazać jedną z czterech linii kodu, która „zresetuje najmniej znaczący bit x”. Długość prezentowanych fragmentów kodu nie przekracza jednej linii, a większość testowanych koncepcji i technik jest dokładnie opisana na stronie internetowej Netrino. Autorzy oceniają, że zdecydowana większość uczestników testu jest zatrudniona jako twórcy firmware’u. Quiz został opracowany w taki sposób, aby wyniki były jak najbardziej sensowne.

Jednak należy mieć świadomość, że nie było to badanie naukowe, do którego programiści systemów wbudowanych powinni być wybierani losowo, zamiast zgłaszać się samodzielnie. Autorzy mają nadzieję, że próbka była jak najbardziej reprezentatywna, gdyż w badaniu wzięło udział mniej niż 1% z 500 000 osób odwiedzających stronę, na której przez dwa lata znajdował się link do quizu.

Zasięg geograficzny

Quiz i cała strona, na której był on umieszczony, wykonana jest w języku angielskim, dlatego można się spodziewać, że uczestnicy, dla których jest to język ojczysty, byli w uprzywilejowanej sytuacji. W podziale na geograficzne regiony ponad 1000 wyników uzyskano ze Stanów Zjednoczonych (1465 wyników), Indii (1361) oraz reszty świata (1247). Resztę świata można podzielić na trzy główne podgrupy o ponad 100 wynikach: Europę Zachodnią (446), Azję bez Indii (304) oraz Bliski Wschód (101).

Wyniki

Tabela 1. Wyniki testu znajomości języka C w aplikacjach embedded w podziale na kraje i regiony

Średni wynik dla całego świata wyniósł 61%. Każdy programista systemów wbudowanych odpowiedział błędnie średnio na cztery z dziesięciu pytań wielokrotnego wyboru dotyczących swojego podstawowego języka programowania. Jest to niepokojący fakt, ponieważ język C jest językiem do wyboru w większości projektów embedded, a C++ jeszcze trudniej opanować.

Akademicka ocena wyników testu to słaba trójka. Programiści z USA uzyskali wynik o 1% lepszy niż średnia. Programiści z Indii wypadli poniżej średniej, zdobywając 59,3% punktów, a reprezentacja reszty świata uzyskała 61,7%. W tabeli 1 przedstawiono punktację dla kilkunastu wybranych krajów i regionów.

W skali światowej test został rozwiązany bezbłędnie tylko przez 238 osób. Po drugiej stronie skali znalazło się 209 programistów, którzy uzyskali punktację mniejszą niż oczekiwana dla losowego wyboru (25%). Pełny rozkład wyników dla wszystkich krajów przedstawiono na rysunku 1. Dane pokazują, że wynik 80% lub wyższy uzyskała mniej niż jedna trzecia programistów systemów wbudowanych.

Co przykre, jedna czwarta uzyskała mniej niż 50% możliwych do zdobycia punktów, mimo że w przypadku zgadywania wartość oczekiwana wyniosła co najmniej 25%. W teście pojawił się również rodzimy akcent, gdyż uzyskano 27 wyników z Polski. Średnia punktacja wyniosła tutaj aż 69,3%, należy jednak zauważyć stosunkowo niewielką liczebność próby. Co ciekawe, do grupy najmniej licznie reprezentowanych w teście zaliczają się Japonia (2 wyniki), Hong Kong (4), Korea Południowa (10) czy Tajwan (13).

We wrześniu 2009 roku na stronie Netrino uruchomiono kolejny quiz, tym razem sprawdzający znajomość języka C++ w aplikacjach embedded. Jak podają autorzy, wstępne wyniki są gorsze niż te uzyskane w teście znajomości języka C. Większy jest również odsetek osób, które testu nie ukończyły. Najważniejsza jest jednak wielkość próby, zatem jeśli ktoś z czytelników wykorzystuje w pracy język C++, to zachęcamy do rejestracji i przetestowania swoich umiejętności na stronie Netrino www.netrino.com .

Grzegorz Michałowski

Zobacz również