Przeczytano 2 507 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:
    • 11 pytań
    • 724 odpowiedzi
    • 96.9% 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:
      • 11 pytań
      • 724 odpowiedzi
      • 96.9% 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ń
    • 1212 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:
      • 87 pytań
      • 1255 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:
        • 87 pytań
        • 1255 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ń
        • 1212 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:
        • 87 pytań
        • 1255 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:
        • 11 pytań
        • 724 odpowiedzi
        • 96.9% 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
Niedziałający mikrokontroler
Społeczność

Niedziałający mikrokontroler

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

Więcej
Chińskie podróbki mikrokontrolerów
Społeczność

Chińskie podróbki mikrokontrolerów

Witam,wielu z nas pewnie miało doświadczenia z tańszymi zamiennikam

Więcej
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