Odpowiedzi (11)
- Sortuj według
- Ostatnio dodane
- Najwyżej ocenione
- Sortuj od najstarszych
-
-
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.-
@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.
-
-
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.
-
@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?
-
@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ą. -
@Sandro1812: Czyli tak naprawdę nie ma złotego środka, trzeba uczyć się wszystkiego :)
-
@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ć :) -
@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. ;)
-
@Zhandos62: Prawdopodobnie nauczenie się jednego bardzo dobrze da o wiele więcej możliwości.
-
@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 m
Jak zaprogramować mikrokontroler, żeby sterował układem mechaniczny
Właściwie napięcie na wejściu ADC mikrokontrolera. Jak?
Zbudowałem prosty, klasyczny układ pomiaru napięcia przez ADC mikro
Niedziałający mikrokontroler
Cześć. Niedawno zakupiłem zestaw chińskiego Arduino z aliexpress dl
Dzwonek do domu – jaki wybrać i jak go podłączyć?
Jaki zasięg mają bezprzewodowe dzwonki do drzwi? Przycisk dzwonkowy
Jaki zasilacz do komputera dobrać?
Wybór odpowiedniego zasilacza do komputera jest niezwykle istotnym
Co to jest PWM i jakie ma zastosowania w elektronice?
Poznaj tajniki modulacji szerokości impulsu (PWM) i odkryj, jak klu
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 :).