These problem s can be m itigated by yet another form of translator called a com piler. A com piler converts a high-level language into m achine language. High-level languages are m uch m ore intuitive than assem bly language and can be converted into m any different types of m achine language for different processor architectures. This m eans that if a program is written in a high level language, the program only needs to be written once; the sam e piece of program code can be com piled into m achine language for various specific architectures. C, C+ + , and Fortran are all exam ples of high-level languages. A program written in a high-level language is m uch m ore readable and English-like than assem bly language or m achine language, but it still m ust follow very strict rules about how the instructions are worded, or the com piler won't be able to understand it.