Languages are either "Compiled languages" or "interpreted languages":
- A compiled language will use a compiler which is another program that checks your code and then converts it to the correct machine code for the machine it is intended to run on. You can only run the program after you have compiled it. A compiler can help spot syntax errors and certain semantic errors and will give you a "compilation error".
- An Interpreted language can be ran directly as long as you have another program called the interpreter which translates your code into machine code whilst it is running. This means certain errors will not be caught before runtime (There is no concept of a compilation error) and so you won't know until runtime if certain errors are present in your code
Compilers or interpreters are used to translate high level source code into CPU instructions.
That can either be an assembler, or a compiler.
An interpreter.
Compiler
Both, compiler and assembler, are software tools which translate instructions written in a programming language into executable machine code. (Both will typically require additional tools, such as a linker, in the process.) An assembler recognizes a machine-specific assembly language. This is a low-level language with a one-to-one relationship between language (assembly) instructions and machine code instructions. A compiler recognizes a generally machine-independent language such as the C programming language. These are higher level languages compared to the assembly languages, generally offering a one-to-many relationship between language instructions and expressions, and the resulting machine code instructions.
A machine code program. Machine code is the native language of the machine and the only language actually understood by the machine. However, program instructions can be written using a high-level programming language that the computer can translate into machine code using another machine code program called a compiler.
Assembly langue is translated into machine language by an assembler.
An Assembler converts assembly language instructions into machine language.
Machine-dependent (generally called "platform-dependent")
That sounds like the description of an interpreter.
Both, compiler and assembler, are software tools which translate instructions written in a programming language into executable machine code. (Both will typically require additional tools, such as a linker, in the process.) An assembler recognizes a machine-specific assembly language. This is a low-level language with a one-to-one relationship between language (assembly) instructions and machine code instructions. A compiler recognizes a generally machine-independent language such as the C programming language. These are higher level languages compared to the assembly languages, generally offering a one-to-many relationship between language instructions and expressions, and the resulting machine code instructions.
assembler
A machine code program. Machine code is the native language of the machine and the only language actually understood by the machine. However, program instructions can be written using a high-level programming language that the computer can translate into machine code using another machine code program called a compiler.
Machine language is the computer instructions in memory--the actual bits used by the machine hardware or microcode interpreter. To "look" at it, it has to be converted to a human-readable form. Often, it is printed as a sequence of hexadecimal numbers, usually tagged with the memory address. Sometimes it is processed by a disassembler program, which tries to translate the code into assembly language instructions and data. This is not always successful since in machine architectures that mix data and instructions, it can be difficult to determine which program areas are data and which are instructions.
Assembly langue is translated into machine language by an assembler.
An Assembler converts assembly language instructions into machine language.
Interpreater translate the high level language into machine level language line by line
Machine-dependent (generally called "platform-dependent")
Why would you want to do that? The usual procedure is to translate a high-level language such as Pascal to machine language. If you really want assembly language - perhaps to see how the Pascal compiler does its work - then presumably you can use a disassembler to convert the machine language (the executable file) into assembly language.
Computers use machine language, which are coded instructions in binary.
Microprocessors work in microcode, not assembly language. Microcode processes machine instructions, which are often assembled from assembler languages; higher level languages often convert each line of code into multiple lines of assembler language before their ultimate compilation into an executable. The assembler language contains mnomonics that are used to translate each line of source code into a machine instruction. When those machine instructions are loaded in memory, the CPU will use microcode to interpret and execute those instructions. Barring some experimental CPUs that use non-traditional machine code (such as Sun's Java CPU), all production-class CPUs use machine instructions as their basis for software execution.