Unit 1.2.2 Applications Generation Flashcards
What is hardware?
The physical components of a computer system and its related devices, both internal and external (e.g., motherboards, RAM, keyboards etc).
What is software?
A set of instructions, data or programs used to operate a computer and execute specific tasks.
What are examples of application software?
- Word processors
- DTP
- Spreadsheet
- Database management
- Graphics manipulation
- Text/voice communication
- Gamers
- Email clients
- Web browsers
- Multimedia/video editing
What is application software?
- Perform specific tasks for end-user (e.g., word processing, media playback).
- Application software is intended to be used by people to accomplish their goals.
What is utility software?
- Designed to help manage and tune system or application software.
- It is used to support the computer infrastructure and operating system.
What is utility software designed to do?
- Keep your computer safe
- Keep it running efficiently
- Provide you with useful tools to manage your files and applications
What are the 5 types of utility software?
- File repair
- Backup
- Anti malware
- Degragmentation
- Compression
What is file repair?
- Files can become corrupt or damaged for a number of reasons.
- This software attempts to correct these issues and restore the file to its original state.
- They are often built into certain applications, as well as being a separate, dedicated software tool found in most Operating Systems.
What is backup?
- It is essential to back up important files.
- Backups can be set manual, automatic or scheduled and they can be performed as a full or incremental backup.
- Can be done to different media or an off-site cloud system.
- Backup software often comes with your OS but can also be purchased separately.
What is compression?
- Compression reduces the size of a file, so it takes up less space and downloads faster over the Internet.
- Compressed files must be extracted before they can be read.
- Data is either lost, reducing the quality of an image or audio file (lossy)
- Or data is represented in a different way using binary, retaining the original data in a new, compressed format. (lossless).
What is defragmentation?
- Reorganises files on a hard disk, putting fragments or 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.
- Solid-state drives should not be defragmented (no moving parts) - it’s unnecessary and reduces the driver’s lifespan.
What is anti malware?
- Helps keep the computer and files safe from many types of malware (viruses, trojans, worms and spyware.).
- All OS come with malware protection already built in, configured and turned on.
- Companies also specialise in dedicated anti-malware programs.
What is open-source software?
- Users have access to the source code
- Users can modify and distribute the software
- Can be installed on any number of computers
What is closed-source (proprietary) software?
- Protected by Copyright Design and Patents Act
- Supported by developers who don’t release source code
- Usually paid for and licensed per user/computer
- Tested by developers prior to release, although it may run beta programs
What are the advantages of open-source software (for users)?
- Software is free
- Wide community modification
- Bugs are quickly resolved
- Users can add functionality to suit their own needs
What are the disadvantages of open-source software (for users)?
- Poorly supported
- Some features may no be well tested
- Lack of single point of contact for support
- Interfaces may not be user-friendly
What are the advantages of open-source software (for creators)?
- Gets software put to a wider community
- No pressure for updating software as the users can do that
What are the disadvantages of open-source software (for creators)?
- Little to no financial gain
- Others can copy or distribute software
- Licenses have limited warranty
- No liability/copyright protection
- Costs money to run
What are the advantages of proprietary software (for users)?
- Well supported, tested and professional built product
- Designed with a user-friendly interface
- A point of contact for customer service and support
What are the disadvantages of proprietary software (for users)?
- Cost or ongoing subscription fee
- Limited support if specific issue is unaddressed by vender or they are unresponsive
- Limited functionality which don’t tailor to user’s needs
What are the advantages of proprietary software (for creators)?
- Receive an income from their product
- Protected by copyright law
- Tailored support
What are the disadvantages of proprietary software (for creators)?
- Constant demand from community for more features and improvements
- Piracy issues
Why is translation required in computers?
Source code is used by humans as it is easier to understand, read, debug and maintain.
But for machines, the code needs to be in binary to understand and execute it.
What is the process of translation?
Converting the source code into pure binary machine code.
What are the three types of translators?
- Assembler
- Compiler
- Interpreter
What is an assembler?
- 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 an assembler?
- Programs written in machine language can be replaced with mnemonics, 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 an assembler?
- Long programs written in such languages cannot be executed on small computers.
- It takes lot of time to code or write the program, as it is more complex in nature.
- Difficult to remember the syntax.
- Lack of portability between computers of different makes.
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 a compiler?
- No need for translation at run-time.
- Speed of execution is faster.
- Code is usually optimised.
- Original source code is kept secret.
What are the disadvantages of a compiler?
- Source code is easier to write in a high-level language, but the program will not run with syntax errors, which can make it more difficult to write the code.
- Code needs to be recompiled when the 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 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.
- Easy to try out commands when the program has paused after finding an error – making interpreted languages easy for beginner programmers to learn to write code.
What are the disadvantages of an interpreter?
- Translation software is required at run-time.
- Speed of execution is slower.
- Code is not optimised.
- Source code is required.
Why does source code need to be compiled?
As programmers we write source code to be close to English and easily read, modified and interpreted by humans.
A processor cannot run source code as it needs to be turned in machine code.
What are the 4 stages of the Compilation process?
- Lexical Analysis
- Syntax Analysis
- Code Generation
- Code Optimisation
What happens in Lexical Analysis?
- Comments and white space removed
- Remaining code turned into a series of tokens.
- Symbol table is created to keep track of variables and subroutines.
What happens in 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 in Code Generation?
- Abstract code tree converted to object code.
- Object code is the machine code produced before the final step (linker) is run.
What happens in Code Optimisation?
Tweaks the code by:
- Spotting redundant instruction and producing object code that achieves the same effect as the source program (but not necessarily by the same means)
- Removing subroutines that are never called
- Removing variables and constants that are never referenced
Why does code need to be optimised?
- Reduces the execution time of the program
- Ensure it operates with less memory / power
What is a library?
A suite of useful subroutines written by other authors and already tested.
They can be used in GUI routines, database access routines, encryption and graphics.
What are the advantages of using libraries?
+ Quick and easy to use and hook into your own code
+ Pre-tested so likely to be error-free
+ Pre-compiled, so are typically optimised to run quickly
What are the disadvantages of using libraries?
- Adding functionality or making specific tweaks can be difficult or impossible
- Could be ‘black-boxed’ from the actual implementation
- Must trust that developers will continue maintaining the library
What is the purpose of the linker?
- 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 are the two methods that linkers can use?
- Static Linking
- Dynamic Linking
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 OS links the required code from the library as the program is running.
- While this cuts down on the size of compiled machine code, if the dynamic libraries change, the program may stop because it tries to call a subroutine in the wrong way.
What is the purpose of the loader?
The part of the operating system that loads the executable program file (machine code) into memory, ready to be run.
When using dynamic linking, it will also be responsible for loading the required libraries into memory.