Application Generation

Cards (43)

  • Application generation
    The nature of applications and justifying suitable applications for a specific purpose
  • Hardware
    All physical parts of a computer system and its related devices, both internal or external – e.g., motherboards, hard drives, RAM, monitors, keyboards, mice, printers, etc.
  • Software
    General term covering all computer programs. Most software falls into broad categories such as application, system and utility software.
  • Operating systems
    • Windows
    • Linux
    • macOS
    • iOS
  • Utility software
    • Antivirus
    • Defragmentation
    • Backup
    • Compression
    • Firewalls
  • Specific applications
    Highly specific and bespoke to a set purpose. Beyond creating, managing and using a database, it has little use for anything else.
  • Specific applications
    • Database software
  • Generic applications
    Do not have a specific or narrow purpose. You can use it to carry out different tasks and meet multiple needs.
  • Generic applications
    • Word processors
    • Spreadsheets
    • Presentation software
  • Text and voice communication
    • Skype
    • WhatsApp
    • Messenger
    • ICQ
    • Discord
  • Social networking
    • Facebook
    • Twitter
    • Instagram
    • Pinterest
    • Snapchat
  • Utility software
    Software designed to keep your computer safe, running efficiently, and provide you with useful tools to manage your files and applications.
  • Utility software
    • File repair
    • Backup
    • Compression
    • Defragmentation
    • Anti-malware
    • File management
    • Device drivers
  • Backup
    With so much critical data now stored in a digital format, backing up your important files is essential. Backups can be set up to be manual, automatic or scheduled. You can perform full backups or incremental backups. You can backup to different media or an off-site cloud system. Backup software often comes with your operating system but can also be purchased separately.
  • Anti-malware
    Anti-malware software helps keep your computer and files safe from many types of malware including viruses, trojans, worms, and spyware. Virtually all operating systems come with malware protection already built in, configured and turned on.
  • Defragmentation
    Defragmentation reorganises files on a hard disk, putting fragments of files and free space back together. This process 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, as they have no moving parts. It is unnecessary and also reduces the drive's lifespan.
  • 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. Depending on the algorithm used, data is either lost, reducing the quality of an image or audio file (e.g., JPEG, MP3), or represented in a different way using binary, retaining the original data in a new, compressed format (e.g., ZIP).
  • File repair
    Files can become corrupt or damaged for a number of reasons. File repair software attempts to correct these issues and restore the file to its original working state. A file repair facility is often built into certain applications, as well as being a separate, dedicated software tool found in most operating systems.
  • 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
  • Closed-source software
    Protected by the Copyright 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 developer prior to release, although it may run beta programs
  • Source code
    Descriptive and easy for humans to understand, read, maintain and debug
  • Machine code

    Pure binary form of source code that machines can understand and execute
  • Translation
    Converting source code to machine code
  • High-level language

    Designed to be easily understood by humans, closer to natural language
  • Low-level language
    Closer to the hardware and to machine instructions, more difficult for humans to read and write compared to high-level languages
  • 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.
  • 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.
  • 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.
  • Advantages of Assemblers:
    • 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
    • No need for translation at run-time
  • Advantages of compilers
    • Speed of execution is faster
    • Code is usually optimised
    • Original source code is kept secret
  • Advantages of interpreters
    • 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
  • Compiled languages
    • 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
    • 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
    • Translation software is required at run-time
    • Speed of execution is slower
    • Code is not optimised
    • Source code is required
  • Stages of compilation
    1. Lexical analysis
    2. Syntax analysis
    3. Code generation
    4. Code optimisation
  • Lexical analysis

    • Symbols and white space removed
    • Remaining code turned into a series of tokens
  • Syntax analysis

    • Abstract syntax tree is built from tokens produced in the previous stages
    • Errors generated if any tokens break the rules of the original language
  • Code generation
    • Abstract code tree converted to object code
    • Object code is the machine code produced before the final step (linker) is run
  • Code optimisation
    • Tweaks the code so it will run as quickly and use as little memory as possible
  • Libraries are ready-compiled and tested programs that can be run when needed, typically grouped together into software libraries. Eg. ”math” library in python.
  • Benefits of using library routines

    • Quick and easy to use and hook into your own code
    • Pre-tested, so you can be relatively sure they are already free from errors
    • Pre-compiled, so they are typically optimised to run quickly
  • Drawbacks of using library routines

    • Adding functionality or making specific tweaks can be difficult - or impossible
    • Sometimes you are "black-boxed" from the actual implementation
    • You have to trust that the developers will continue to maintain the library