1.2.2 Applications Generation Flashcards
What is software?
general term which covers all computer programs
what is a generic application?
it does not have a specific or narrow purpose
can use it to carry out different tasks and meet multiple needs
What are some examples of generic applications?
- wordprocessor
- presentation software
What is a specific application?
has highly specific and bespoke uses
installed on systems where there is a direct need
What are the common categories of application software?
- word processor
- database
- web browser
- graphics manipulation
- communication software
- DTP
- Presentation
- video editing
- email clients
- games
What is utility software designed to do?
- keep your computer safe
- keep it running efficiently
- provide tools to manage files + applications
What does file repair software do?
software that attempts to correct corrupted or damaged files and restore the to a working state
what is back up software?
- creates copies of data/files to protect them in case they are lost/corrupted ect.
- can be manual, automatic or scheduled
- can be full or incremental
- can back up to different media or cloud
what is compression?
reduction of the size of files so it takes up less space and downloads faster over the internet
can be lossy or lossless
what must happen to compressed files before read?
must be extracted
what is defragmentation?
software which reorganises files on a hard disk, putting fragments of files and free space back together
why does defragmentation speed up file access?
reduces the movement of the read/write head across the surface of the disk
what does anti-malware software do?
keep computer and files safe from malware eg:
- viruses
- trojans
- worms
- spyware
what are the features of open source software?
- users can modify + distribute software
- can be installed on any number of computers
- support provided by community
- users have access to source code
- may not be fully tested
what are benefits and drawbacks of open source software for USERS?
Benefits:
- free
- wide community modification
Drawbacks:
- Can be poorly supported
- Somme features not well tested
What are the benefits and drawbacks of open source software for CREATORS?
Benefits:
- gets software out to wider community
Drawbacks:
- little-to-no financial gain
What are some features of closed source software?
- protected by copyright, design and patent act
- cannot modify
- paid for + licensed per computer
- supported by developers
- tested prior to release
what are the benefits and drawbacks of closed source software for USERS?
Benefits:
- Well supported, tested + professional built product
Drawback:
- cost or ongoing subscription
What are the benefits and drawbacks of closed source software for CREATORS?
Benefits:
- receive income for product
Drawbacks:
- constant demand from community for more features + improvements
- piracy issues
what is source code?
what humans write programs in
- descriptive and easy for us to understand, read, maintain and debug
what is machine code?
the pure binary form of source code
what is translation?
the process of converting source code to machine code
how is assembly code translated?
- by an assembler
- translates the mnemonics of the assembly code into their binary codes
- typically a 1 to 1 relationship between each line of mnemonics and their binary equivalents
what can be used to translate high level languages?
- interpreter
- compiler
how does an interpreter translate source code?
- line by line into the machine code
how does a compiler translate source code?
- compiler turns source code into object code
- linker links any libraries used in the code
- either converted into machine code
- or, converted to intermediate code and then translated into machine code using an interpreter
what happens if there is an error in the code and it is being translated by a compiler?
it will not run unless all errors have been corrected
what happens if there is an error in the code and it is being translated by an interpreter?
it will run until it encounters an error and then stop
what are the advantages of an assembler?
- uses mnemonics - easier to remember
- memory efficient
- speed of execution is faster
- hardware oriented
- requires fewer instructions for same result
what are the disadvantages of an assembler?
- long programs cannot be executed on small computers
- takes a lot of time to write a program as its is more complicated
- difficult to remember syntax
- lack of portability between computers
what are the advantages of a compiler?
- no need for translation at run time
- speed of execution is faster
- code is usually optimised
- original source code secret
what are some disadvantages of compilers?
- source code is easier to write in a high level language but program will not run with errors which can make it hard
- code needs to be recompiled when changed
- designed for specific processor
what are the advantages of interpreters?
- easy to write source code + stops when finds an error
- code does not need to be recompiled when changed
- easy to try out commands when program has paused after finding an error
what are the disadvantages of interpreters?
- translator required at run-time
- speed of execution is slower
- code not optimised
- source code required
what is a parse when compiling code?
a series of runs through the code by the compiler to perform different actions on the source code
what are the four stages of compilation?
lexical analysis
syntax analysis
code generation
code optimisation
what is the first part of lexical analysis?
- lexer converts lexemes (words) into a series of tokens
- it scans it letter by letter and when it encounters a white space, operator symbol or special symbol, it decides the lexeme is complete
how does the lexer check is a lexeme is valid?
checks it using a predefined set of rules
what is a side effect of lexical analysis?
white space and comments are removed as they are passed over by the lexer
what happens after a token stream has been created from source code during compilation?
the tokens from the token stream are added to a symbol table
what does syntax analysis do?
analyses the syntactical structure of the input (from the lexical analysis), checking if it is the correct syntax
how does syntax analysis check the syntax of code?
analyses the token stream against production rules to detect any errors in the code
what does syntax analysis accomplish?
- checks for errors and reporting them
- building an abstract syntax tree (parse tree)
how do syntax diagrams work and how do they validate code?
after each token, it shows what should be after it.
this means a line of code can be checked against it and if the line can travel through the diagram, it is valid
what is an abstract syntax tree?
a diagram created from the input token stream using the syntax diagrams of a particular language
what happens in an identifier is added to an abstract syntax tree?
- the symbol table is checked to see it exists
- the information from the abstract syntax tree can be used to update the data type of the identifiers
how does code optimisation attempt to reduce execution time of a program?
- spotting redundant instructions and producing object code which achieves the sake effect as the source program - not necessarily in the same way
- removing subroutines that are never called
- removing variables and constant which are never referenced
what is a disadvantage of code optimisation?
increases compilation time
what is unreachable code?
a part of the program code which is never accessed because of programming constructs
what happens during code generation?
abstract code tree converted to object code
what is object code when referring to compilation?
the machine code produced before the final step (linker) is run
what is a library?
ready-compiled and tested programs that can be run when needed
what are the benefits of libraries?
- quick and easy to use in code
- pre tested so relatively free from errors
- pre compiled so optimised to run quickly
what are the drawbacks of using libraries?
- adding functionality or making specific tweaks is difficult of impossible
- sometimes ‘black boxed’ from actual implementation
- have to trust developers to maintain the library
what does a linker do?
responsible for putting appropriate machine addresses in all the external call and return instructions so all modules and external library routines are linked together correctly
what is static linking?
all required code from the libraries is included directly in the finished machine code
what is the issue with static linking?
- large executable program files
what is dynamic linking?
- compiled versions of the required libraries are stored on the host computer
- os links the required code from the library as the program is running
what is the disadvantage of dynamic linking?
if the dynamic libraries change, the program may stop because it tries to call the subroutine in the wrong way
what is the loader?
part of the os which loads the executable program file (machine code) into memory, ready to run
when using dynamic linking, it also loads the required libraries into memory