Przeczytano 2 173 razy

Jaki język do Mikrokontrolerów?

Dzień dobry, zaczynam zabawę z programowaniem Mikrokontrolerów i zastanawiam się jakie jest najlepszy język do programowania, pod względem skąplikowania oraz wydajności?

Odpowiedzi (11)


    • Ostatnia wizyta:
    • W serwisie od:
    • 9 pytań
    • 638 odpowiedzi
    • 96.5% pozytywnych ocen od użytkowników

    Generalnie najbardziej zależy nam aby układ był wydajny więc logicznym wyborem jest nauka języka C. I faktycznie jest on najczęściej spotykany. Co prawda jest jeszcze C++, jednak tak naprawdę jest to język C z trochę inną składnią i wzbogacony i paradygmat obiektowości, który jednak w mikrokontrolerach prawie w ogóle nie jest używany.

    Co więcej, nauka C niejako wymusza na nas zaznajomienie się z podstawami działania układów mikroprocesorowych, ze szczególnym akcentem na operacjach na pamięci, zarówno statycznie (przez stos), jak i dynamicznie (przez stertę). Oczywiście jest jeszcze ASM ale to raczej dla totalnych maniaków samych bebechów tych układów :).

    No i ostatnio też coraz bardziej modny staje się Rust, który jest niemal tak samo wydajny jak C, jednak w odróżnieniu od C tutaj nie musimy się przejmować błędami programu związanymi z dostepem do pamięci - sam język jest wyposażony w tzw. garbage collector który usuwa z pamięci programu wcześniej zaalokowaną a już nieużywaną pamięć (co w przypadku programów pisanych w C jest często wynikiem fakapów, gdy jakiś wątek albo funkcja próbują odczytać pamięć do której nie mają dostępu). Wiem natomiast że ten język nie jest aż tak intuicyjny jak C i wymaga zupełnie innego podejścia jednak uważam że dla samej ciekawości warto, chociaż tutaj wiele nie podpowiem bo zwyczajnie się go jeszcze nie uczyłem :).


    • Ostatnia wizyta:
    • W serwisie od:
    • 50 pytań
    • 793 odpowiedzi
    • 99.4% pozytywnych ocen od użytkowników

    hmm... który jest najbardziej skomplikowany, to nie wiem. Może Forth albo Fortran ;) Ale to też mało popularne języki. 
    A wydajnośc, to chyba język maszynowy daje największe możliwości, choć chyba nie chciałbyś w asemblerze pisać dużych programów.
    W mojej ocenie "C" to podstawa i od tego cała reszta. 
    Choć nie jest to najłatwiejszy język, to najbardziej uniwersalny.
    Na początek fajne są Arduino i kiedyś popularny Bascom. Można je opanować w jeden, dwa dni. Oczywiście biegłość wymaga sporo więcej czasu.
    Ich wadą jest to, że nabywa się złych nawyków, dlatego polecam zaczynać od C. 
    To klasyka, bardzo uniwersalna.


      • Ostatnia wizyta:
      • W serwisie od:
      • 9 pytań
      • 638 odpowiedzi
      • 96.5% pozytywnych ocen od użytkowników

      @boss:Przy nauce języka C z doświadczenia powiem, żeby szczególną uwagę przyłożyć do operacji na pamięci oraz struktur danych, bo to wiedza z tych dwóch rzeczy się najbardziej przyda przy debugowaniu aplikacji. Co do arduino to zgodzę się że jest na tyle proste że właśnie pielęgnuje złe nawyki od samego początku - dlatego wg mnie lepszym pomysłem jest zabawa z STM oraz środowiskiem Cube IDE, które nie wymaga od nas klepania dziesiątek linijek kodu aby skonfigurować jakieś bebechy płytki, tylko możemy to zrobić w konfiguratorze, którzy jednocześnie upraszcza sprawę oraz wskazuje jakie parametry są istotne przy działaniu np UARTa, I2C, Timerów, PWM czy ADC.


    • Ostatnia wizyta:
    • W serwisie od:
    • 30 pytań
    • 1165 odpowiedzi
    • 98.9% pozytywnych ocen od użytkowników

    Odpowiedź oznaczona przez autora jako pomocna

    Na język najlepiej jest patrzeć jako na narzędzie, dzięki któremu będziesz w stanie zadać urządzeniu daną funkcjonalność, więc "najlepszy język" to pojęcie bardzo względne. Tą samą funkcjonalność jesteś w stanie zadać używając większości z nich. Wiadomo, że w jednym języku będzie to mniej, a w drugim bardziej skomplikowane. Więc nie ma to za bardzo znaczenia, którym się posłużysz. Najważniejsze jest to, żebyś wiedział w jaki sposób daną funkcję zrealizujesz. Jeśli to załapiesz, to poznanie składni każdego kolejnego języka powinno być dla ciebie jedynie formalnością.

    Najbardziej popularnymi językami, które stosuje się do programowania mikrokontrolerów są C i asembler. Później C++, python i java.
    Z powyższych najbardziej optymalnym i pozwalającym na użycie najmniejszej ilości zasobów jest asembler, ale niestety nie jest tak intuicyjny jak pozostałe. C jest dość uniwersalny, bo przy jego pomocy zaprogramujesz niemal każdy mikrokontroler. 

    Gdybym miał ci doradzić, to zabawę poleciłbym ci zacząć od C, C++ lub pythona. Ciekawym wyborem zwłaszcza dla początkującego jest język Arduino, który mówiąc najprościej jest czymś w rodzaju uproszczonego C. I jeśli np. znasz już podstawy programowania w C++ lub C, to nie powinien być on dla ciebie większym wyzwaniem. Niestety nie zaprogramujesz przy jego pomocy każdego mikroprocesora.


      • Ostatnia wizyta:
      • W serwisie od:
      • 84 pytań
      • 1249 odpowiedzi
      • 98.5% pozytywnych ocen od użytkowników

      @Zhandos62: A czy język C lub Python posiada jakieś ograniczenia, z którymi trudno sobie poradzić i stosuje się wtedy inny? Spotkałeś się kiedyś z takim przypadkiem?


        • Ostatnia wizyta:
        • W serwisie od:
        • 29 pytań
        • 377 odpowiedzi
        • 100% pozytywnych ocen od użytkowników

        @Pysiak: Co do wad pythona to skompiluje Ci on nawet program z błędem i da nieoczekiwany wynik. W C++ np. program z błędem się nie skompiluje. Ma on też ograniczoną wydajność, choć chyba dla mikroprocesorów nie powinno to mieć takiego znaczenia, ale dlatego większość gier np. nie jest w pythonie a raczej w C++.
        Co do języka C to jest on dość okrojony jeśli chodzi o wbudowane biblioteki. Również znalazłem informację, że jest on problematyczny jeśli chodzi o zarządzanie pamięcią.


        • Ostatnia wizyta:
        • W serwisie od:
        • 84 pytań
        • 1249 odpowiedzi
        • 98.5% pozytywnych ocen od użytkowników

        @Sandro1812: Czyli tak naprawdę nie ma złotego środka, trzeba uczyć się wszystkiego :)


        • Ostatnia wizyta:
        • W serwisie od:
        • 29 pytań
        • 377 odpowiedzi
        • 100% pozytywnych ocen od użytkowników

        @Pysiak: Jak się nauczysz C, to prawie jakbyś znał C++, a w tym jest większość aktualnie programowana.
        Python też jest atrakcyjny, bo jest o wiele łatwiejszy i ten sam program napiszesz w mniejszej ilości linijek kodu.
        Złoty środek? Faktycznie nie ma. Wszystko ma swoje wady i zalety. Wybór języka pewnie zależy od tego, co na czym Tobie zależy/ co chcesz programować :)


        • Ostatnia wizyta:
        • W serwisie od:
        • 30 pytań
        • 1165 odpowiedzi
        • 98.9% pozytywnych ocen od użytkowników

        @Pysiak: Nie powiedziałbym, że trzeba od razu znać każdy. Solidna znajomość jednego z nich już powinna dać ci bardzo dużo możliwości. ;)


        • Ostatnia wizyta:
        • W serwisie od:
        • 84 pytań
        • 1249 odpowiedzi
        • 98.5% pozytywnych ocen od użytkowników

        @Zhandos62: Prawdopodobnie nauczenie się jednego bardzo dobrze da o wiele więcej możliwości.


        • Ostatnia wizyta:
        • W serwisie od:
        • 9 pytań
        • 638 odpowiedzi
        • 96.5% pozytywnych ocen od użytkowników

        @Pysiak:zgadzam się, tym bardziej, że opanowanie C daje solidną bazę do nauki pozostałych, np Pythona czy Javy.

Czytaj także:

Jak zaprogramować mikrokontroler, żeby sterował układem mechanicznym?
Społeczność

Jak zaprogramować mikrokontroler, żeby sterował układem m

Jak zaprogramować mikrokontroler, żeby sterował układem mechaniczny

Więcej
Właściwie napięcie na wejściu ADC mikrokontrolera. Jak?
Społeczność

Właściwie napięcie na wejściu ADC mikrokontrolera. Jak?

Zbudowałem prosty, klasyczny układ pomiaru napięcia przez ADC mikro

Więcej
Niedziałający mikrokontroler
Społeczność

Niedziałający mikrokontroler

Cześć. Niedawno zakupiłem zestaw chińskiego Arduino z aliexpress dl

Więcej
Dzwonek do domu – jaki wybrać i jak go podłączyć?
Blog

Dzwonek do domu – jaki wybrać i jak go podłączyć?

Jaki zasięg mają bezprzewodowe dzwonki do drzwi? Przycisk dzwonkowy

Więcej
Jaki zasilacz do komputera dobrać?
Blog

Jaki zasilacz do komputera dobrać?

Wybór odpowiedniego zasilacza do komputera jest niezwykle istotnym

Więcej
Co to jest PWM i jakie ma zastosowania w elektronice?
Blog

Co to jest PWM i jakie ma zastosowania w elektronice?

Poznaj tajniki modulacji szerokości impulsu (PWM) i odkryj, jak klu

Więcej