we have migrated from assembler to C in microprocessor programming. I have doubts that this is a good idea
Non temere, nessuno sviluppa più nuovi programmi al 100% assemblatore. Al giorno d'oggi, C può essere utilizzato anche per le architetture a 8 bit più piccole e ingombranti. Tuttavia , conoscere un assemblatore ti rende un programmatore C decisamente migliore. Inoltre, ci sono sempre alcuni piccoli dettagli o due in un programma che devono essere scritti in assembler.
I can tell that C syntax is a lot easier to learn than Assembler syntax.
Sì, la sintassi è più facile, certamente. Tuttavia, imparare l'intero linguaggio C con tutti i fastidiosi dettagli è molto più complesso che imparare tutti i dettagli di un particolare assemblatore. C è un linguaggio molto più ampio e più ampio.
Ma poi di nuovo, potresti non aver bisogno di imparare tutti i dettagli.
C is easier to use for making more complex programs.
In effetti, C fornisce meccanismi per la progettazione modulare del programma, come incapsulamento e ambiti locali / variabili locali. E C ha una libreria standard, oltre a un'enorme quantità di risorse scritte negli ultimi 30 anni. E, soprattutto, C è portatile.
Learning C is somehow more productive than learning assembler cause there is more developing stuff around C than Assembler.
C ha un sacco di funzionalità, librerie e risorse pre-fatte, quindi ci sarà meno re-inventare la ruota. Ma a parte questo, la tua affermazione è soggettiva. Credo che sia una questione di preferenze personali.
Ad esempio, sono un programmatore C esperto, che occasionalmente programma C ++. Mi trovo molto meno produttivo in C ++, perché non conosco quel linguaggio così come conosco C. Ma solo perché mi sento in quel modo, non significa necessariamente che la programmazione in C sia più produttiva della programmazione in C ++. Un programmatore C ++ con esperienza avrebbe sicuramente l'opinione opposta.
E ci sono molti aspetti da "produttivi". Un aspetto molto importante è il tempo di manutenzione e in particolare il tempo necessario per correggere i bug causati dalla manutenzione. C è molto più semplice da gestire rispetto all'assembler.
Assembler is a lower level programming language than C,so this makes it a good for programming directly to hardware.
La programmazione dell'hardware può essere eseguita direttamente in entrambe le lingue. Le uniche cose che non puoi fare in C sono l'accesso ai puntatori dello stack e ai registri delle condizioni, ecc., Del core della CPU stesso. Quindi se per programmazione hardware si intende parlare con la propria CPU, allora sì, l'assemblatore consente un po 'più di C. Se si intende accedere all'hardware esterno, l'assemblatore non ha alcun vantaggio su C. Ma forse svantaggi, poiché è spesso più difficile scrivere codice assembler generico per un particolare dispositivo esterno, rispetto al codice C generico.
Is a lot more flexible alluding you to work with memory,interrupts,micro-registers,etc.
Questo non è corretto. C ti consente di fare tutto questo anche se potresti dover fare affidamento sul codice C specifico del compilatore come la parola chiave interrupt.
Alla fine, devi conoscere entrambe le lingue per programmare gli MCU, con enfasi su C.