click below
click below
Normal Size Small Size show me how
1.2.2
| Question | Answer |
|---|---|
| Hardware | physical parts of a computer system (internal/external) |
| Software | all computer programs - Application software - Systems software |
| Application software (Software) | software that is designed to perform a task or produce something (typically user run) |
| Generic application (Application software) | doesn’t have a specific or narrow purpose, meet many needs (e.g. word processors, graphics manipulation) |
| Specific application (Application software) | can only be used for a single purpose (e.g. database software, web browser) |
| Systems software (Software) | controls hardware + provides platform for other software to run (e.g OS, utilities) - Utility software |
| Utility software (Systems software) | software designed to keep the device safe, running efficiently and provides the user with useful tools for maintenance - Anti-malware software - Defragmentation - Compression - Backup - File management - File repair - Device drivers |
| Anti-malware software (Utility software) | recognises + removes malware from files |
| Defragmentation (Utility software) | groups together data on a hard drive, speeding up access to files |
| Compression (Utility software) | reduces storage space occupied by a file - Files must be extracted before being read |
| Backup (Utility software) | copies data to another location (automatic, manual, scheduled), protecting data |
| Full backup (Backup) | all data copied |
| Incremental backup (Backup) | only data changed since last backup copied |
| File repair (Utility software) | corrects errors in corrupted files |
| Source code | the high-level language-code the program was originally written in |
| OSS | open source software: users have access to course code |
| OSS pros | Users - Can be installed and used for free, on any number of computers - Can customise, modify and distribute software - Wide community modification Creators - Less work, support provided by community - Gets software out to a wider community |
| OSS cons | Users - Can be poorly supported, and features may not be well tested, leaving bugs Creators - Little to no financial gain |
| Closed source software | (proprietary software) Software supplied pre-compiled; no source code - Covered under CDPA - May be a one-time fee, subscription fee or it could be free |
| Closed source software pros | Users - Usually better supported, more testing Creators - Usually get an income |
| Closed source software cons | Users - Cannot see any bugs in the code - May have to pay a fee per user/device - Cannot modify the software Creators - No community support - Constant demand for new updates |
| Translators | convert code into machine code |
| Machine code | binary form of source code, so computers understand, low-level language |
| Syntax | the structure of a language |
| Assemblers (Translator) | Converts each line of assembly code into machine code Pros - Memory-efficient - Fast to execute - Fewer instructions to accomplish result Cons - Long time to code the program - Lack of portability between devices |
| Interpreters (Translator) | Converts and runs one line at a time, each time it is run Pros - Program will always run + stops at errors - Code never needs to be ‘recompiled’ - Easy to debug Cons - Execution speed is slower - Source code is required |
| Compiler (Translator) | Converts all code at once, compiling it into an executable file that only runs when all errors are corrected |
| Compiler pros and cons (Translator) | Pros - Speed of execution is faster - Source code kept secret - No need for translation at run time Cons - Program won’t run with syntax errors - Code must be recompiled when changed - Compiled file only works on certain CPUs |
| Stages/parses of Compilation | 1. Lexical analysis 2. Syntax analysis 3. Code generation 4. Code optimisation |
| Lexical analysis | identify parts that make up a program (whitespace + comments removed) |
| Stages of lexical analysis | Lexer reads code letter by letter, when whitespace, operator or special symbol is found, lexeme is complete The lexeme is then checked if it is valid using predefined rules that allow lexemes to be identified as valid tokens Symbol table is created |
| Lexeme (lexical analysis) | sequence of recognisable characters (e.g. a word) |
| Tokens (lexical analysis) | class of lexemes (e.g. keywords, identifiers, strings, numbers + punctuation) |
| Symbol table (lexical analysis) | keeps track of variables and subroutines |
| Syntax analysis | checks/reports errors |
| Stages of syntax analysis | Analyses tokens' syntactical structure by analysing them against production rules to detect any errors, ensuring that the line of code has the correct components and makes sense An abstract syntax tree created from the tokens Updates symbol table |
| Stages of code generation | The abstract syntax tree is converted to object code |
| Object code (code generation) | machine code before the linker is run |
| Stages of code optimisation | Tweaks the program to make it run as efficiently as possible, for speed or memory |
| Linker | puts the appropriate machine addresses in all the external call/return instructions so all modules and external library routines are linked together correctly, and links any separately compiled subroutines into the object code. |
| Static linking (linking library code) | All required library code included directly in finished machine code - results in large executable program files |
| Dynamic linking (linking library code) | Compiled versions of libraries stored on the host computer. The OS links the required code from the library as the program runs. The file size is reduced, but when libraries are updated the program may not work anymore |
| Linking library code (Linker) | The library code can be included in two ways: - Static linking - Dynamic linking |
| Loader | part of the OS responsible for loading the executable program file (machine code) into memory. In dynamic linking, it also loads the libraries into memory |
| Libraries | ready-compiled + tested programs that can run when needed and can be reused. |
| Libraries pros and cons | Pros - Code is usually pre-tested + works - Saves time writing code - Pre-compiled, so are optimised to run quickly Cons - Hard to amend library code - No guarantee the library is still maintained - Sometimes you can’t see the library’s code |