There are various high level language compilers for 8051 or enhanced versions of 8051 from various vendors. The most popular is the C language compiler. As the modern C compilers are efficient, assembly language are seldom used nowadays. It is common to have a complete program written solely in C including interrupt service routines.
C language, being a high level language, has many important advantages over assembly language like portability, automatic proper handling of various data types including data arithmetic, ease of data organization, ease of expressing program logic, etc. It is much easier to write a program in C than in assembly language. C language programming is also much less error prone.
All C compilers for 8051 have extensions to cater to the 8051 architecture. Important ones are the various memory spaces (internal RAM, code space, external RAM space), special function registers and bit variables.
With the knowledge of the 8051 architecture, a beginner can quickly write useful programs for 8051 in C, totally bypassing the need to know the 8051's assembly language instructions. This is a proven approach for learning 8051 programming.
* Keil C
* Bascom51 Basic compiler