application stuff Flashcards
software categories
systems, applications
systems software
needed to control hardware and run applications
system software - types
operating systems, utilities, libraries, translators
operating system
provide a user interface, manage hardware, handle interrupts, schedule processor
utility programs
optimise computer performance and perform useful background tasks
utility programs - examples
disk defragmenter, automatic backup, automatic updating, virus checker, compression software
disk defragmenter
reorganises the hard drive so parts of the same file are next to each other in sequential blocks to reduce read times
automatic backup
accounts for users forgetting to backup files by automatically doing it if where, when, how (compressed or not) and what (data) is to be backed up are specified
automatic updates
runs in the background detecting and automatically installing software update releases
virus checker
scans permanent storage by comparing files to know virus definitions and/or using heuristics to guess which files may contain a virus based on their behaviour
compression
reduces file size to increase transmission speeds or increase the number of files that can be stored in a given storage capacity
application software
software that performs a task to benefit the user
off the shelf software
ready made software that is available for anyone to purchase
bespoke software
custom software created for a specific user
off the shelf software - advantages
cheaper, consumer can try/read reviews
bespoke software - advantages
allows specific features to be included for the user
open source software
software is open source licensed but free to use, source code is free to view, modify, distribute and sell as long as the software produced is also open source
freeware
software is free to use but software ins’t available
closed source/proprietary
source code is not freely available, user must pay copyright owner for a license to use the software which may restrict how the software can be used
selecting application
functionality, hardware, cost, availability, reliability
assembly code
three letter acronyms are used to represent instructions which are equivalent to binary instructions but easier for humans to work with (hardware specific)
assembler
translates assembly to machine code
compiler
translates high level languages to machine code in one go
interpreter
translates high level languages to machine code line by line, stopping if there’s an error
compiler - advantages
programs can be rerun without needing to be recompiled, faster to execute, executable file doesn’t require interpreter to run
interpreter - advantages
source code can be run on any machine with the interpreter, the entire program doesn’t need to be recompiled if a small error occurs
compiler - disadvantages
code must be recompiled if a small error occurs
interpreter - disadvantages
must be reinterpreted each time the program is run
stages of compilation
lexical analysis, symbol table, syntax analysis, semantic analysis, code generation
lexical analysis
white space and comments are removed. keywords, constants, identifiers and operators are replaced with tokens
symbol table
the lexer will create a symbol table for every keyword and identifier in the program which helps keep track of the runtime memory address of each identifier
syntax analysis
tokenized code is compared to syntax rules of the language, if a section violates any rules an error is generated with details of what and where it is, a full error report is given back to the user of all errors found
semantic analysis
checks for errors where valid syntax doesnt produce a valid program
code generation
machine code is generated
code optimsiation
aims to improve efficiency by removing redundant instructions, replacing inefficient code
libraries
pre-written, compiled, tested and checked pieces of code that gives developers shortcuts to achieve what they need without repeating code
linkers
software responsible for linking libraries to code that uses them, put the appropriate memory
addresses in place so that the program can call and
return from a library function
loaders
copy the program and any linked subroutines into main memory to run
bytecode
an intermediate step between high level languages and machine code
bytecode how
the high level language may be compiled or interpreted into byte code which is then executed by a bytecode interpreter
bytecode advantages
platform independence, acts as an extra security layer