Software Flashcards
General purpose software
Software that can be used for a variety of tasks.
Includes office applications eg presentation software (creates presentations and posters/diagrams) and word processing software.
Likely to attract a lot of users and therefore can be sold at quite a low price.
Bespoke software
Software that is developed to meet the user’s specific requirements.
Developed for a specific task and/or user.
Unlikely that others would want to buy it therefore development costs and high.
Application software
Designed to perform tasks that a user wants to complete eg playing a game or sending an email.
Some may be pre-installed on a computer but often the user has to install the application software.
Examples: word processors, video games, communication software
Special purpose software
Software that can only be used for one particular task.
Eg scientific calculator software can only carry out calculations.
System software
Controls the hardware of a computer system eg operating systems.
OSs are loaded into RAM when the computer starts up and has access to the hard drive.
Provide a platform for application software to run on and a way for application software to interact with hardware.
Examples: translators, utility programs
Closed source software
Software for which the source code is not freely available.
Developed and provided to the user as a fully compiled, executable set of files.
Developers often provide support to users after purchase as users cannot make changes to the software.
User does not buy the software but a licence to use it.
Open source software
Software for which the source code is freely available to download.
Code can be inspected and modified by the user, so they can contribute to fixing errors and vulnerabilities in the code.
Usually free but the quality of the finished product can vary.
High level language
Used to write programs that are independent of the computer architecture they will run on.
Eg C++, Python
Easier for users to read and understand.
Must be translated before execution by a compiler or interpreter.
Low level language
Eg assembly language programs
Must be translated by assemblers.
Closer to machine code than high level so more difficult to read.
Compiler
Translates code into a form that can be executed but cannot be read by a human. Does not execute the code.
Most commercial applications are distributed as compiled code to protect the source code.
Stages: Lexical, syntax, semantic, code generation, optimisation
Errors are reported at the end of the compilation process and the program will need to be corrected then compiled again.
Once compiled, the executable file will not need to be translated again unless code is changed. Result is faster running time and does not need a translator to be installed to run the program.
Interpreter
Translate and execute each line of source code one by one.
When program is run, each line is syntax checked then converted into machine code. If a syntax error is found the program halts and it is reported. If a runtime error occurs the system crashes.
Errors are quick to identify and correct without having to translate the entire program every time.
Runs more slowly and the user must have an interpreter installed to run the program. Can be advantageous if the developer doesn’t know what platform will be used as translation is handled by the browser.
Assembler
Translate assembly code programs into executable code.
One-to-one relationship between assembly code and machine code so assembling is a relatively simple process.
Comments get removed and symbolic references are replaced with actual addresses.
Lexical analysis
The first stage of the compilation process.
Compiler removes white space and comments.
Code is tokenised and a symbol table is produced.
Identifiers are checked against a set of rules eg cannot start with a number or contain certain characters.
Reserved words such as print can only be used as keyword tokens.
Syntax analysis
Second stage of the compilation process.
Compiler checks that the tokens are in the correct order and that they follow the rules of the language.
Syntax rules differ between languages.
Abstract syntax tree
During the syntax analysis stage, an abstract syntax tree is created.
Maps the structure of the program, first dropping the brackets, semicolons etc that were used by the programmer.
If required tokens are missing from the tree or in the wrong place the compiler will report an error.
Every language produces a different AST depending on its syntax.
Semantic analysis
Third stage of compiling
Used to highlight logic errors
Code generation
A separate program is created that is distinct from the original source code. This is a binary representation of the source code, known as object code - the executable version of the code.
Interpreters do not produce a separate executable file.
Code optimisation
Occurs throughout the compilation process in particular as part of the code generation stage. It may identify redundant or repeated code and remove or rearrange it as necessary.
Libraries
Banks of pre-written code for high-level languages.
Gives access to specialist functions eg printing and maths equations.
Saves time writing a new program, and has normally been thoroughly tested therefore is efficient and reliable.
Linker
Compilation of high-level languages often results in several object code files. The linker resolves all of the cross-references between the files and creates a single executable program.
Loader
Part of the operating system - copies the executable code into RAM as part of the execution process.
Also carries out other tasks to prepare a program for execution.
Boot Strap Loader
Loads itself by using instructions at the beginning to load the rest of itself. This is how operating systems on PCs boot themselves up.
Absolute loader
Loads a program into a single fixed area of memory. All memory addresses are fixed at translation.
Linking loader
Can link together programs that have been compiled separately.