Translators
Types of Translators
- Assembler: Converts assembly language into machine code, which can be executed by a computer.
- Compiler: Converts high-level programming code into machine code all at once. It checks the entire program and produces error messages for any parts it doesn’t understand.
- Interpreter: Converts high-level programming code into machine code line-by-line. It will stop if it comes across an error.
Translation Process
- Lexical Analysis: First stage in translation where the source code is broken down into identifiable tokens such as operators, identifiers, variable types and keywords.
- Syntax Analysis: This process checks the tokens created in the lexical analysis stage against the syntax of the language.
- Generation of Intermediate Code: A universally recognised standardised code is generated as a form of ‘middle ground’ between the high-level and machine code.
- Optimisation: This process streamlines the code where possible to make it faster or take up less space.
- Code Generation: The final stage where machine code is produced.
Assembler and Compiler vs Interpreter
- One-shot vs Line-by-Line: Compilers and assemblers translate the whole code in one go, whereas interpreters translate line by line.
- Execution Time: Compiler and assembler output can be run immediately and therefore run faster than interpreted languages.
- Error Checking: Compilers perform thorough error checks on all lines before translating, unlike interpreters which stop at the first error.
Benefits of Translators
- Accessibility: Translators make the computer accessible to people who do not understand machine code.
- Efficiency: Translated code often runs faster and more efficiently than high-level code.
- Portability: They can help make code more portable, as some translators can adapt one high-level language to multiple machine languages.
Limitations of Translators
- Error Propagation: Because compilers and assemblers translate the entire program at once, an error on one line could propagate through the entire program.
- Execution Speed: Interpreted languages can be slower because they have to translate each individual line of code every time the program is executed.
- Memory Management: Translated programs will generally require more memory than the same program written directly in machine language.
Translation and IDEs
- Highlighting Syntax Errors: Many IDEs are configured to work with specific translators and can provide real-time feedback and syntax highlighting to assist developers.
- Automatic Translation: IDEs often include tools to automatically run translator programs, which saves developers time and effort.
- Debugging Tools: Most IDEs have debugging tools that work best with code that has been properly translated.