Difference between revisions of "Programming Language Translators"

From TRCCompSci - AQA Computer Science
Jump to: navigation, search
(Overview)
Line 44: Line 44:
  
 
https://www.youtube.com/watch?v=gWKoW_Z5Liw&list=PLCiOXwirraUDJYD-VxmztyhsDP0QM2BHW&index=4
 
https://www.youtube.com/watch?v=gWKoW_Z5Liw&list=PLCiOXwirraUDJYD-VxmztyhsDP0QM2BHW&index=4
 +
 +
=Quiz=
 +
<quiz display=simple>
 +
 +
{What code is generated from a compiler and can be run natively on a device?
 +
| type="()"}
 +
- Source code
 +
- Byte Code
 +
+ Object code
 +
 +
{What code is written by the user and can easily be edited by the user?
 +
| type="()"}
 +
+ Source code
 +
- Byte Code
 +
- Object code
 +
 +
{What code is generated from a compiler and can be run within a virtual machine on a device?
 +
| type="()"}
 +
- Source code
 +
+ Byte Code
 +
- Object code
 +
 +
{ Which of these is not a characteristic of using a compiler?
 +
| type="()" }
 +
 +
- Produces object code that can be distributed.
 +
||Incorrect.
 +
+ Executes code line by line.
 +
||Correct.
 +
- Source code is hidden.
 +
||Incorrect.
 +
- Code does not need to be recompiled.
 +
||Incorrect.
 +
 +
{Which of these are the benefits of a compiler?
 +
| type="[]"}
 +
+ Once compiled, the code does not need to be compiled again
 +
- The program can start running straight away
 +
+ Program is faster at runtime
 +
+ Source code is hidden and can't easily be decompiled
 +
 +
Which of these does Java use?
 +
| type"()"}
 +
-Interpreted
 +
||nah fam
 +
-Compiled
 +
||nah fam
 +
+Both
 +
||ayyy
 +
 +
{ Which of the following is a disadvantage of Compiled Programs?
 +
|type="()"}
 +
- They're Faster at Runtime
 +
|| Incorrect, Thats an advantage
 +
- They mask the source code from any one attempting to modify the progran
 +
|| Incorrect, Thats an advantage
 +
+ They cant be modified directly and must be decompiled
 +
|| Correct
 +
</quiz>

Revision as of 15:46, 5 January 2019

Overview

https://www.youtube.com/watch?v=qHM4rtpYuxE&list=PLCiOXwirraUDJYD-VxmztyhsDP0QM2BHW&index=3

TRC PowerPoint

Language Translators

Assembler

An assembler translates assembly language into machine code. One line of assembler will create a single line of machine code, because the assembler mnemonic is converted into the binary instruction.

Compiler

A compiler translates code written in a high level programming language into object code, the machine code of a particular machine. It 'compiles' the entire source code before translating it. The compiler has several advantages over interpreters, such as: the object code is saved, meaning there is no need to re-compile; compiled code executes faster than interpreted code; the object code can easily be distributed without the compiler; and compiled code is more secure, as it is harder to reverse engineer than interpreted code.

Interpreter

An interpreter also translates code written in a programming language into object code, but unlike a compiler it does this one line of code at a time. This makes it slower to run than a compiler, but interpreters are useful for partially testing or debugging programs.

Compiler vs Interpreter

Compiler over Interpreter

  • Object code is saved, so you only need to compile once so no need to re-compile. Obviously if the code is changed it will need to be re-compiled.
  • Executes faster than interpreted code, because interpreted code is interpreted and execute one at a time. Compiled code is simply executed.
  • Object code can be distributed (without the compiler).
  • Secure because the source code is hidden, the compiler generated object code is not easily reverse engineered.
  • Compilers can be more efficient, for example an interpreter must interpret and then execute each time it passes through a loop. Compiled code can just execute each time through the loop.

Interpreter over Compiler

  • Easier to partially test or debug programs, it will run until an error is reached. This will therefore allow you to test code that you haven't completely finished.

Types of Code

Source Code

The code written by the programmer.

Object Code

The code generated by compiling your source code. This object code can then be executed without the need to recompile.

Byte Code

Compilers & Interpreters would suggest there are clear divides between the languages which are interpreted and the languages that are compiled. This is not the case, some languages use both. The source code is first compiled into byte code, and then when run the byte code is then interpreted.

Languages such as Java work in this way. Java code is compiled into byte code which can then be distributed onto any platform. This is because the byte code is an instruction set than can be executed in a virtual machine. The virtual machine can then emulate the architecture of a computer allowing the byte code to be executed on any platform.

https://www.youtube.com/watch?v=gWKoW_Z5Liw&list=PLCiOXwirraUDJYD-VxmztyhsDP0QM2BHW&index=4

Quiz

1. What code is generated from a compiler and can be run natively on a device?

Source code
Byte Code
Object code

2. What code is written by the user and can easily be edited by the user?

Source code
Byte Code
Object code

3. What code is generated from a compiler and can be run within a virtual machine on a device?

Source code
Byte Code
Object code

4. Which of these is not a characteristic of using a compiler?

Produces object code that can be distributed.
Incorrect.
Executes code line by line.
Correct.
Source code is hidden.
Incorrect.
Code does not need to be recompiled.
Incorrect.

5. Which of these are the benefits of a compiler?

Once compiled, the code does not need to be compiled again
The program can start running straight away
Program is faster at runtime
Source code is hidden and can't easily be decompiled
Interpreted
nah fam
Compiled
nah fam
Both
ayyy

6. Which of the following is a disadvantage of Compiled Programs?

They're Faster at Runtime
Incorrect, Thats an advantage
They mask the source code from any one attempting to modify the progran
Incorrect, Thats an advantage
They cant be modified directly and must be decompiled
Correct

Your score is 0 / 0