Created by Malachy Moran-Tun
over 1 year ago
|
||
Question | Answer |
computing | revision |
What is Application Software? (terrible name, i know.) | > Category of software that allows end users to accomplish tasks i really don't know what else to say here |
What are some Examples of Application Software? | > Spreadsheets > Presentation software > Video games > Word processors > Web browsers etc. |
What is Utility Software? | > Designed to keep your computer running smoothly and safe from threats > Usually serves one specific purpose, rather than trying to be an all-in-one solution |
What are some Examples of Utility Software? | > Anti-virus > Firewalls > Disk clean-up > Compression > Defragmentation |
What is Encryption? | > "Scrambling" of data > Applies a special encryption algorithm to the data > Strong algorithms require long mathematical research > Special key is required to decrypt the data > Usually within the OS to encrypt and decrypt files in real time |
What is Fragmentation? | > Files in secondary storage are not always written in one continuous block (i.e., they may be split up) > Fragmented files - those that are not contiguous - take longer to load |
What is Defragmentation? | > Software that reorganises the data on the storage device so that all files are stored in adjacent blocks > Defragmented disks increase the performance of the computer |
How does Fragmentation affect SSDs? | > Fragmented data does not take any longer to load, since SSDs provide random acces > SSDs should not be defragmented, since the reorganisation can shorten its lifetime as it pushes it towards the read/write cycle limit |
What is Compression? | > Reduction of a file size (and therefore disk space taken up) by applying a certain algorithm > Algorithm is either lossy (not all original data can be recovered) or lossless (no data is lost) > Files must be decompressed before they are read again |
What are some Examples of the Uses of Compression? | > Archived files, i.e., those that won't be accessed regularly > Files that are to be transferred on a network, to speed up network transfer |
What is Backup Software? | > Software that creates a copy of important data, and stores it in an external location > Ensures that if one copy becomes lost or corrupted, the file can be restored using another |
What is a Full Backup? | > A backup that makes a copy of everything on the system onto backup media > Extremely slow process that takes up a lot of space > Very easy to restore a system from |
What is an Incremental Backup? | > Only the files that have changed since the last backup are copied > Faster and use less space > More difficult to restore a system from since the most recent full backup must be applied first, then each incremental backup in the correct order |
What is Open Source Software? | > Projects where the source code is publicly available > Anyone can legally view, modify, and distribute the code |
What are the Advantages of Open Source Software? | > Usually free (depending on the license) > Maintained by a large community of contributors > Encourages collaboration > Encourages rapid development |
What are the Disadvantages of Open Source Software? | > Usually provides no warranty > Small projects may not receive regular updates > Small projects may be abandoned > Official customer support may not be available |
What is Proprietary Software? | > Also known as closed source software > Source code is not available to people outside the organisation > Often paid for > A license is bought to use the software, but you do not own it > Modifying, copying, or redistributing the software (piracy) is illegal |
What are the Advantages of Proprietary Software? | > Comes with a warranty or guarantee > Often has customer support > Should be thoroughly tested, and therefore reliable (although this has become sloppy in the past few years, e.g., Cyberpunk 2077) > Can be easier to install and use compared to some open source software |
What are the Disadvantages of Proprietary Software? | > Source code cannot be fixed or modified by users > Older versions may not be maintained > Can be expensive - even for no reason (thanks Adobe!) > Tends to be less niche than open source (in order to gain more sales) |
What is a License? | > Set of rules which tells a customer what they can and can't do with a piece of software > Usually related to reselling and distributing software without authorisation |
What are some Problems with Open Source Licensing? | > If the open source software is used in a separate project, often that separate project must also be open source > If multiple components are used, with different licenses, there can be potential legal issues |
What is a Compiler? | > Translator that converts source code into an executable binary file > Translates the whole program in one go > Provides a list of errors once it has attempted the compilation process, making debugging easier > C, C++, Visual Basic, Swift etc. are all compiled languages |
What are the Advantages of Compilers? | > There is no need to repeat the process every time the program is run > Compilers hide the source code from the end user, protecting developers' intellectual property |
What are the Disadvantages of Compilers? | > Process can be very slow > This can slow development if many small changes need to be made |
What is an Interpreter? | > Translator that converts high-level source code into executable binary line-by-line > Python, JavaScript etc. are interpreted languages |
What are the Advantages of Interpreters? | > Stop as soon as an error is encountered - this is useful for debugging > Interpreted languages are portable, meaning the high-level code can be run on many different architectures, as long as the interpreter has been written for it |
What are the Disadvantages of Interpreters? | > Running an interpreted program is slower because each line must be translated every time > Interpreted programs do not produce one final, compiled executable file |
What is an Assembler? | > Translate each line of low-level assembly code into a binary sequence > Both the opcode and the operand are replaced with the relevant binary, since each instruction directly corresponds to a binary sequence |
What are the Advantages of Assemblers? | > Provides control over the hardware, meaning the code can take up little space and be quick to execute > Can be used on low-spec machines |
What are the Disadvantages of Assemblers? | > Unlike high-level languages, assembly (and therefore assemblers) are difficult to use, and require deep knowledge of the specific CPU and memory > Assembly code is not portable, and cannot be run on different machines |
What are the 4 Stages of Compilation? | 1. Lexical analysis 2. Syntax analysis 3. Code generation 4. Code optimisation |
What happens during Lexical Analysis? | > White space is removed from the code, since it it not necessary for a compiler > Illegal identifiers / values are flagged as errors > Tokens, i.e., strings that are recognised by the computer, are created for the keywords and operators (lexemes) in the code - comments are ignored > Tokens are assembled into a symbol table ready for the next step |
What happens during Syntax Analysis? | > Tokenised code is compared to the rules of the programming language > If a section is found not to fit these rules, an error is generated > This process continues until all the code is checked > A full error report is sent to the programmer at the end of compilation |
What happens during Code Generation? | > Stage where machine code is generated > This code may initially be inefficient due to contain unnecessary instructions, or groups of instructions that can be replaced by simpler ones |
What happens during Code Optimisation? | > The machine code is made to have the smallest binary footprint as possible > This is done by removing procedures, variables etc. that aren't used > Unnecessary instructions are removed, or groups are instructions are replaced by simpler ones |
What is a Library? | > Small pieces of pre-written, compiled, tested, and checked pieces of code > Developers can rely upon libraries to help shorten code > Exist in most programming languages to offer shorthand ways to achieve a common task > Programmers do not have to repeat code whenever they want a common task |
What is a Linker? | > Software responsible for linking libraries to code that uses them > Libraries can be statically or dynamically linked > Statically linked libraries are included in the compiled machine code, which increases the binary footprint of the code > Dynamically linked libraries are not included in the machine code, but must be installed for the program to run (this is helpful for OS functions, such as showing a window) |
What is a Loader? | > Type of program that loads the program you're trying to run (not confusing at all!) > Part of the OS that finds a good place for object or machine code to sit in memory > When using statically linked libraries, all of the library and code is loaded into memory > When using dynamically linked libraries, the loaded will load the library into memory when necessary |
Want to create your own Flashcards for free with GoConqr? Learn more.