Software
Software
Tanatswa Mutsvunguma
SOFTWARE TYPES
◦ Software refers to a set of instructions that tell the computer what to do and how to do it.
◦ There different categories of software that is system and application software.
◦ System software:
i)Graphical User Interface (GUI) which has windows, icons, menus and pointers(WIMP) an example is
windows
ii)Command line interface which requires the user to enter text as a commands. An example is LinuIt
is used for exact commands
iii)Natural language interface which allows the user to enter any text commands or speak the
commands.
Additional information
◦ After the user creates files using the Application software the OS creates directories to that file. It also allows a
lot of other functions for example moving, copying, deleting, renaming and sorting files.
◦ MANAGING PERIPHERALS AND DRIVERS
◦ Input and output devices are peripherals. Peripherals are usually made by third parties and may not be
compatible with the OS thus it is important to install drivers which translates data from computer to
peripheral. Note that installation of drivers and it’s work are directed by the OS.
◦ MANAGING MULTITASKING
◦ The processor executes one instruction at a time however it does this rapidly executing multiple tasks in little
time to a point where you can think it is multitasking. This change between task is controlled by the OS it also
allocates how much time is spent on each task.
◦ MANAGING INTERRUPTS
◦ An interrupt is a signal that the OS uses to direct the processor on what to do
◦ PROVIDING A PLATFORM FOR RUNNING APPLICATIONS
◦ The OS fetches instructions from Application software and executes them
◦ MANAGES USER ACCOUNTS
◦ The OS allows creation of multiple accounts with different data on the same device.
INTERRUPTS
◦ Interrupt Generation: An event occurs (e.g., a key is pressed).
◦ Interrupt Signal: The hardware or software sends a signal to the CPU.
◦ Interrupt Handling:
◦ The CPU stops executing the current program.
◦ It saves the state of the current program (context saving) so it can resume later.
◦ The CPU then loads the address of the interrupt handler (a specific routine for handling the
interrupt).
◦ Executing the Interrupt Handler: The CPU executes the interrupt handler to process the event.
◦ Restoring State: After the interrupt has been handled, the CPU restores the saved state of the
original program.
◦ Resuming Execution: The CPU resumes operations of the interrupted program.
◦ *in essence it stops current fetch decode execute cycle to attend to another
Types of programming languages
◦ Programming languages are categorized as high-level and low-level.
◦ High-level
◦ Definition: High-level programming languages are designed to be easy for humans to read and write.
They are abstracted from the machine code (binary) that computers understand.
◦ Examples: Common high-level languages include Python, Java, C++, and JavaScript.
◦ Abstraction: They provide a level of abstraction from hardware, allowing programmers to focus on logic
rather than hardware specifics.
◦ Readability: Code is written in a syntax that is closer to human languages, making it easier to understand
and maintain.
◦ Portability: Programs written in high-level languages can often run on different types of computer
systems with minimal modification.
◦ Rich Libraries: They come with extensive libraries and frameworks that simplify complex tasks (e.g., data
manipulation, graphics, web development).
High level continuation
◦ Ease of Learning: More intuitive for beginners compared to low-level languages.
◦ Faster Development: Allows for quicker coding and prototyping.
◦ Error Reduction: Higher-level constructs help minimize errors by managing memory and data types.
LOW-LEVEL LANGUAGE (1)
◦ What is a Low-Level Language? and memory management.
◦ Definition: Low-level languages are closer to ◦ More Control: Programmers have fine-grained
machine code and hardware, providing less control over system resources and hardware.
abstraction compared to high-level languages.
◦ Efficiency: Programs written in low-level
◦ Examples: The primary types of low-level languages can be more efficient in terms of
languages are machine language and assembly speed and memory usage.
language.
◦ Types of Low-Level Languages
◦ Characteristics of Low-Level Languages
◦ Machine Language:
◦ Hardware Specific: These languages are closely
◦ Consists of binary code (0s and 1s) that the
tied to the architecture of the computer's
computer's CPU can directly execute.
hardware.
◦ Specific to each type of CPU architecture, making
◦ Less Abstraction: They provide minimal
it non-portable.
abstraction from the computer's instruction set
LOW-LEVEL LANGUAGE (2)
◦ Assembly Language: hardware resources, which is critical for system-
level programming (like operating systems or
◦ A symbolic representation of machine language
embedded systems).
that uses mnemonics (e.g., MOV, ADD, SUB).
◦ Direct Hardware Manipulation: Ability to interact
◦ Easier to read and write than machine language
directly with hardware components.
but still requires knowledge of the underlying
architecture. ◦ Disadvantages of Low-Level Languages
◦ Needs an assembler to convert the assembly code ◦ Complexity: More complex to write, read, and
into machine code. maintain compared to high-level languages.
◦ Advantages of Low-Level Languages ◦ Portability Issues: Programs are often not portable
across different hardware platforms due to
◦ Performance: Programs can run faster due to
architecture-specific code.
minimal overhead.
◦ Longer Development Time: Writing and debugging
◦ Resource Management: Greater control over
low-level code can take significantly longer.
High level language vs low level
(diagram)
TRANSLATORS
◦ Tools that convert code from one language to compilation needed.
another. High-level language and assembly
◦ Disadvantages: Slower execution; requires the
language are converted to machine code by
source code each time.
translators.
◦ Examples: Python, Ruby, JavaScript.
◦ Compiler
◦ Assembler
◦ Function: Translates the entire high-level code
into machine code before execution. ◦ Function: Converts assembly language into
machine code.
◦ Advantages: Faster execution after compilation;
optimizations possible. ◦ Advantages: More understandable syntax for
hardware manipulation.
◦ Disadvantages: Longer compilation time; errors
reported after the entire code is compiled. ◦ Disadvantages: Architecture-specific, hence not
portable.
◦ Examples: C, C++, Java.
◦ Interpreter
◦ Function: Translates and executes high-level code
line-by-line at runtime.
◦ Advantages: Easier debugging; no separate
Integrated Development Environment
◦ An IDE is a software application that provides accessible, especially for beginners.
tools for software development in a single
◦ Build Automation: Automates tasks like compiling
interface.
and packaging applications.
◦ Key Features
◦ Help Features: Offers documentation and tooltips
◦ Code Editor: Includes syntax highlighting, auto- to assist with code writing.
completion, and auto-correction to enhance code
◦ Advantages
writing.
◦ Efficiency: Combines multiple tools, reducing the
◦ Debugger: Allows setting breakpoints and
need to switch applications.
stepping through code to test and troubleshoot.
◦ Error Detection: Real-time feedback and error
◦ Compiler/Interpreter: Enables direct compilation
highlighting make debugging easier.
or interpretation of code for immediate testing.
◦ Productivity: Features like code snippets and
◦ User-Friendly: Intuitive interfaces make it
templates speed up development.
CONCLUSION
◦ System Software: Manages hardware and includes operating systems and utilities.
◦ Application Software: Serves specific user needs, such as productivity and multimedia applications.
◦ Key points include:
◦ Programming Languages: Differences between high-level (user-friendly) and low-level (hardware-
specific) languages.
◦ Translators: Compilers and interpreters convert code into executable forms.
◦ Integrated Development Environments (IDEs): Streamline development with features like code
editing, debugging, and automation.