1/23
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai |
|---|
No analytics yet
Send a link to your students to track their progress
Compiler
is a software tool that converts high-level programming code written by people into machine-readable instructions, usually in binary or machine code.
Single Pass and Multi Pass Compilers
process source code sequentially, generating code in a single pass. Multi-pass compilers go through multiple phases, allowing for advanced optimizations but potentially requiring more memory and time.
Source to Source Compilers
translate code from one high-level programming language to another, facilitating language migration and cross-platform compatibility.
Cross Compilers
generate code for a different target architecture or platform than the one on which the compilation is performed.
Native Compilers
produce machine code that can be executed directly by the host system's hardware, providing optimal performance.
Just In Time (JIT) Compilers:
Found in virtual machines like Java or .NET, JIT compilers translate code at runtime into machine code for immediate execution, combining the benefits of interpretation and compilation.
Ahead of Time (AOT) Compilers
convert entire programs into machine code before execution, resulting in faster startup times and consistent performance.
Optimizing Compilers
analyze the code to apply various optimization techniques, like loop unrolling, constant folding, and inline expansion, to enhance the compiled program's speed and efficiency.
Interpreting Compilers
read and execute code line by line, translating it to machine instructions on the fly.
Incremental Compilers
These compilers only recompile portions of the codebase that have changed, minimizing compilation time during development.
Interpreter
is a software tool that runs high-level programming code directly, without first converting it into machine code. It processes and executes the code line by line,
translating each line into machine instructions as it goes. This approach simplifies error detection and debugging.
Sequential Interpreters
These interpreters execute source code line by line in the order it's written.
Interactive Interpreters
interpreters allow users to input and execute code interactively, receiving immediate feedback.
Batch interpreters
interpreters execute a set of instructions or a program all at once, often used for automating tasks or running scripts.
Bytecode interpreters
interpreters translate source code into an intermediate bytecode representation before execution.
Just in time interpreters
interpreters combine features of interpreters and compilers. They dynamically translate parts of the code into machine code as needed.
Tree-Walk Interpreters
These interpreters build an abstract syntax tree from the source code and then traverse the tree to execute the program.
Source to Source Interpreters
These interpreters convert source code from one high-level language to another.
Hardware Interpreters
Some hardware architectures have specialized instructions that allow for more efficient interpretation of certain high-level language constructs.
Emulators and virtual machine interpreters
These interpreters are used to run software designed for a different hardware or software environment.
Dynamic Translators
these interpreters translate code from one architecture to another in real time, enabling software compatibility across platforms.
Domain Specific Interpreters
These interpreters are designed for specific domains or application areas.
Concurrent interpreters
interpreters execute multiple parts of a program simultaneously, enabling better utilization of multi core processors and improved parallelism.