5: Application Generation Flashcards
What is hardware?
All physical parts of a computer system and its related devices, both internal and external
What is software?
General term covering all computer programs. Often falls into broad categories such as application, system and utility software
Examples of common categories of application software?
- Word processor
- database
- Web browser
- Graphics manipulation
Examples of common categories of application software?
- Word processor
- database
- Web browser
- Graphics manipulation
Examples of common categories of application software?
- Word processor
- database
- Web browser
- Graphics manipulation
Examples of common categories of application software?
- Word processor
- database
- Web browser
- Graphics manipulation
- Spreadsheets
- email clients
Give an example of a generic application
- a word processor is a generic application
- It does not have a specific or narrow purpose
- You can use it to carry out different tasks and meet multiple needs (eg writing a letter, essay, report, guest list, invite)
Give an example of a specific application
- Database software is an example of a specific application
- beyond creating, managing and using a database, it has little use
- As a result of being so specific, it is almost essential for creating a serious database application
What is the purpose of utility software?
Utility software is designed to:
- Keep your computer safe
- Keep it running efficiently
- Provide you with useful tools to manage your files and applications
What are some different types of utility software?
- file repair
- backup
- compression
- defragmentation
- anti-malware
- file management
- device drivers
What are some different types of utility software?
- file repair
- backup
- compression
- defragmentation
- anti-malware
- file management
- device drivers
What does file repair software do?
- Files can become corrupt or damaged for a number reasons
- File repair software attempts to correct these issues and restore the file to its original working state
- A file repair facility can be built into applications as well as being a separate dedicated software tool in the operating system
What does backup software do?
- Backups can be set up to be manual, automatic or scheduled
- You can perform full backups or incremental backups
- You can back up to different media or an off-site cloud system
- Comes with operating system but can be purchased separately
What does data compression software do?
- Reduces the size of a file so it takes up less space and downloads faster over the internet
What does defragmentation software do?
- reorganises files on a hard disk, putting fragments of files and free space back together
- This reduces the movement of the read/write head across the surface of the disk, which speeds up file access
What does anti-malware software do?
helps keep your computer and files safe from many types of malware including viruses, trojans, woms and spyware
What is open source software?
- users can modify and distribute the software
- can be installed on any number of computers
- support provided by the community
- users have access to the source code
- may not be fully tested
What are the pros of open source software for the user?
- software is free
- wide community modification
What are the cons of open source software for the user?
- can be poorly supported
- some features might not be well tested
What are the pros of open source software for the creator?
Gets their software out there to a wider community
What are the cons of open source software for the creator?
Little to no financial gain
What is closed source software?
- Protected by the Copyrights, Design and Patents Act
- Users cannot modify the software
- Usually paid for and licensed per user or per computer
- Supported by developers who do not release source code
- tested by developers prior to release although it may run beta programs
What are pros of closed source software for the user?
Well supported, tested and professional built product
What are the cons of closed source software for the user?
Cost or ongoing subscription fee
What are the pros of closed source software for the creator?
They receive an income for their product
What are the cons of closed source software for the creator?
- Constant demand from community for more features and improvements
- Piracy issues
What is source code?
- Programming language humans use
- Descriptive and easy to use for us to understand, read, maintain and debug
What is machine code?
- Pure binary form of source code
- Machines need to convert source code into machine code to be able to understand and execute it
What is translation?
The process of converting source code into machine code
What does an assembler do?
- Translates assembly language into machine code
- takes basic commands and operations from assembly code and converts them into binary code that can be recognised by a specific type of processor
- the translation process is typically a one-to-one process from assembly code to machine code
What are the advantages of using an assembler?
- Programs written in machine language can be replaced with mneumonics, which are easier to remember
- memory efficient
- speed of execution is faster
- hardware-oriented
- requires fewer instructions to accomplish the same result
What are the disadvantages of using an assembler?
- Long programs cannot be executed on small computers
- It takes a lot of time to code or write the program, as it more complex in nature
- Difficult to remember the syntax
What is a compiler?
- translates source code from high-level languages into object code and then machine code to be processed by the CPU.
- The whole program is translated into machine code before it is run.
What are the advantages of using a compiler?
- no need for translation at runtime
- speed of execution is faster
- code is usually optimised
- original source code is kept secret
What are the disadvantages of using a compiler?
- program will not run with syntax errors, which will make it more difficult to write the code
- needs to be recompiled when code is changed
- designed for a specific type of processor
What is an interpreter?
- translates source code from high-level languages into machine code, ready to be processed by the CPU
- the program is translated line-by-line as the program is running
What are the advantages of using an interpreter?
- Easy to write source code, as the program will always run, stopping when it finds a syntax error
- Code does not need to be recompiled when code is changed
- It is easy to try out commands when the program has paused after finding an error - this makes interpreted languages very easy for beginner programmers to learn to write code
What are the disadvantages of using an interpreter?
- Translation software is required at runtime
- Speed of execution is slower
- Code is not optimised
- Source code is required
What are the 4 stages of compilation?
- Lexical analysis
- Syntax analysis
- Code generation
- Code optimisation
What happens during lexical analysis?
- Comments and whitespace are removed
- Remaining code turned into a series of tokens
- Symbol table is created to keep track of variables and subroutines
What happens during syntax analysis?
- abstract syntax tree is built from tokens produced in the previous stages
- errors generated if any tokens break the rules of the language
What happens during code generation?
- abstract code is converted to object code
- object code is the machine code produced before the linker is run
What happens during code optimisation?
- Tweaks the code so it will run as quickly as possible and use as little memory as possible
What is a library?
- ready-compiled and tested that can be run when needed
What are the benefits of using libraries?
- pre-compiled: so they are typically optimised to run quickly
- pre-tested: so you can be relatively sure they are already free from errors
- Quick and easy to use and hook into your code
What are drawbacks of using libraries?
- Adding functionality can be difficult
- You have to trust that the developers will continue to maintain the library
What is the linker responsible for?
- Putting the appropriate machine addresses in all the external call and return instructions so all modules and external library routines are linked together correctly
- links any separately compiled subroutines into the object code
What is static linking?
- All the required code from the libraries is included directly in the finished machine code - this can result in large executable program files
What is dynamic linking?
- Compiled versions of the required libraries are stored on the host computer
- The operating system links the required code from the library as the program is running
- This cuts down on the size of the compiled machine code, but if the dynamic libraries change, the program may stop because it tries to call a subroutine in the wrong way
What is the loader?
- part of the operating system that loads the executable program file into memory, ready to be run
- when using dynamic linking, it will also be responsible for loading the required libraries into memory.