przeprowadziliśmy migrację z asemblera do C w programowaniu mikroprocesorowym. Mam wątpliwości, czy to dobry pomysł
Nie obawiaj się, nikt już nie tworzy nowych programów w 100% asemblerze. W dzisiejszych czasach C może być używany nawet w najmniejszych, najbardziej cholernych architekturach 8-bitowych. Jednak znajomość jakiegoś asemblera sprawia, że jesteś znacznie lepszym programistą C. Ponadto w programie zawsze są jakieś małe lub dwa detale, które należy napisać w asemblerze.
Mogę powiedzieć, że składnia C jest o wiele łatwiejsza do nauczenia się niż składnia asemblera.
Tak, z pewnością składnia jest łatwiejsza. Jednak nauka całego języka C ze wszystkimi irytującymi szczegółami jest o wiele bardziej złożona niż nauka wszystkich szczegółów konkretnego asemblera. C to znacznie większy i szerszy język. Ale z drugiej strony może nie być konieczne poznanie wszystkich szczegółów.
C jest łatwiejszy w użyciu do tworzenia bardziej złożonych programów.
Rzeczywiście, C zapewnia mechanizmy modułowego projektowania programów, takie jak enkapsulacja i lokalne zakresy / zmienne lokalne. A C ma standardową bibliotekę oraz ogromną ilość zasobów napisanych w ciągu ostatnich 30 lat. A co najważniejsze, C jest przenośny.
Nauka języka C jest w jakiś sposób bardziej produktywna niż nauka asemblera, ponieważ wokół C jest więcej rzeczy do rozwijania niż asembler.
C ma wiele gotowych funkcji, bibliotek i zasobów, więc będzie mniej ponownego wymyślania koła. Ale poza tym twoje stwierdzenie jest subiektywne. Uważam, że jest to kwestia osobistych preferencji.
Na przykład jestem doświadczonym programistą C, od czasu do czasu programując w C ++. Uważam, że jestem znacznie mniej produktywny w C ++, ponieważ nie znam tego języka tak dobrze, jak znam C. Ale tylko dlatego, że tak uważam, niekoniecznie oznacza to, że programowanie w C jest bardziej produktywne niż programowanie w C ++. Doświadczony programista C ++ z pewnością miałby przeciwną opinię.
Istnieje wiele aspektów „produktywności”. Bardzo ważnym aspektem jest czas konserwacji, a zwłaszcza czas potrzebny na usunięcie błędów wywołanych przez konserwację. C jest znacznie łatwiejszy w utrzymaniu niż asembler.
Asembler jest językiem programowania niższego poziomu niż C, dzięki czemu nadaje się do programowania bezpośrednio na sprzęcie.
Programowanie sprzętowe można wykonać bezpośrednio w dowolnym języku. Jedyne, czego nie możesz zrobić w C, to dostęp do wskaźników stosu i rejestrów stanu itp. Samego rdzenia procesora. Więc jeśli przez programowanie sprzętowe masz na myśli rozmowę z własnym procesorem, to tak, asembler pozwala nieco więcej niż C. Jeśli masz na myśli dostęp do zewnętrznego sprzętu, to asembler nie ma przewagi nad C. Ale być może wady, ponieważ często trudniej jest pisać ogólny kod asemblera dla konkretnego urządzenia zewnętrznego, niż ogólny kod C.
Jest o wiele bardziej elastyczny, nawiązując do pracy z pamięcią, przerwaniami, mikro-rejestrami itp.
To nie jest poprawne. C pozwala ci to wszystko zrobić, chociaż być może będziesz musiał polegać na kodzie C specyficznym dla kompilatora, takim jak słowo kluczowe interrupt.
Na koniec musisz znać oba języki, aby programować MCU, z naciskiem na C.