Because the OP is directing this question to about using
8051, I would
strongly suggest to learn it first using assembly language because its hardware architecture is
suited to making small assembly language programs easy.
luv the bit test instructions
It is basically an OLD architecture, first designed, what 30+years ago? but a good one.
C programming on it can indirectly hide the way the architecture is used and hide its
limitation in order to code in C type constructs.
The overall advantage of high level like C programming is in understanding and maintaining the code after it was first written when the amount of code is large and
complex,
I don't think assembly can ever compete on this level (otherwise we would all be coding in assembler still : )
More modern designed microcontrollers are designed to be more friendly to high level language support.