Unit 1 Overview of Computer Software & Programming Languages 1.1. System software 1.2. Application software 1.3. General software features and recent trends 1.4. Generation of programming languages 1:5. Categorization of high-level languages Overview of Computer software ▪ Computer software refers to a set of instructions or programs that tell a computer what to do. ▪ It is a collection of code, data, and documentation that performs various tasks on a computer system. There are two main types of computer software ▪ System software: This type of software manages the computer's hardware resources, such as the operating system (e.g., Windows, MacOS, Linux), device drivers, and utilities. ▪ System software provides a platform for other software to run on, and it controls and manages the computer's hardware resources. Some examples of system software include: o o o o Operating systems Device drivers: Firmware: Virtualization software: Overall, system software is essential for the proper functioning of a computer system, and it is responsible for managing and controlling the computer's hardware resources Application software: ▪ This type of software is designed to perform specific tasks or applications, such as word processing, email, web browsing, and gaming. ▪ Application software is created for end-users and typically requires an operating system to function properly. Some examples of application software include: o o o o o Word processors: Spreadsheet software Graphics and multimedia software Web browsers Gaming software ▪ Overall, application software provides end-users with the tools and capabilities they need to perform specific tasks or applications efficiently and effectively on a computer system. ▪ It typically requires an operating system and hardware resources to function properly Some other categories of software include ▪ Programming languages: These are software tools used to create other software applications ▪ Middleware: This is software that connects different software applications and allows them to communicate with each other. ▪ Utility software: This software includes tools such as antivirus software, backup software, and disk cleanup utilities. ▪ Database software: This software allows users to store and manage data in an organized and structured way. General software feature Software features refer to the capabilities and functionalities of a software application. Some general software features that are commonly found in both system and application software include: > User interface > Compatibility > Performance > Customization > Data management > Help and support > Security Overall, these software features are essential for ensuring a user-friendly and functional software application that meets the needs and requirements of its users. Some recent trends in software include >Artificial Intelligence (AI) > Cloud Computing > Agile Development > Internet of Things (IoT) > Low-code and no-code development > Cybersecurity: Overall, these trends are shaping the future of software development and are likely to continue to have a significant impact on the industry in the coming years Generation of programming languages Programming languages can be classified into several generations based on the features and capabilities they offer. Here are the four main generations of programming languages First-generation languages (1GL): o First-generation languages are low-level languages that directly interact with the hardware, using machine language or assembly language. o These languages are difficult to use and require a deep understanding of the hardware architecture Second-generation languages (2GL): o Second-generation languages are low-level languages that are closer to humanreadable syntax than machine code. o Examples include FORTRAN, COBOL, and C. o These languages are easier to use than 1GL, but still require an understanding of hardware architecture and system-level programming. Generation of programming languages Third-generation languages (3GL): o Third-generation languages are high-level languages designed to provide an abstraction from the hardware, making programming easier and more accessible to non-experts. o Examples include Java, Python, C++, and C#. o These languages offer a wide range of features and libraries, making them more versatile and powerful than 2GL. Fourth-generation languages (4GL): o Fourth-generation languages are higher-level languages designed to provide an even higher level of abstraction, focusing on specific tasks such as database management, reporting, and business applications. o Examples include SQL, ABAP, and PowerBuilder. o 4GLs require less coding and are easier to use than 3GLs, but they are less flexible and may not offer the same level of control. Overall, these generations of programming languages represent the evolution of programming languages over time, with each generation building upon the previous one to provide greater abstraction, ease of use, and functionality. Categorization of high-level languages High-level programming languages can be categorized into several types based on their primary purpose and programming paradigm. Here are some of the most common categories of high-level programming languages o Procedural languages: Procedural languages are designed to follow a sequence of steps or procedures to solve a problem. Examples of procedural languages include C, Pascal, and Fortran. o Object-oriented languages: Object-oriented languages are designed around the concept of objects, which encapsulate data and behavior. Examples of objectoriented languages include Java, Python, and C++. o Functional languages: Functional languages are designed to treat computation as the evaluation of mathematical functions. Examples of functional languages include Haskell, Lisp, and ML. Categorization of high-level languages o Scripting languages: Scripting languages are designed to automate tasks or to control other software applications. Examples of scripting languages include JavaScript, Python, and Ruby. o Markup languages: Markup languages are used to define and present text-based data, such as HTML and XML. o Domain-specific languages: Domain-specific languages (DSLs) are designed for specific tasks or domains, such as SQL for database management, MATLAB for numerical analysis, or R for statistical computing. Overall, the categorization of high-level programming languages provides a way to group programming languages based on their primary purpose and programming paradigm, which can help developers choose the right language for a given task. Assignment I 1. How did the first-generation programming languages evolve into the second generation? 2. What are some of the key features of modern programming languages that were not available in earlier generations? 3. How has the development of higher-level programming languages impacted the field of computer science? 4. How do the different generations of programming languages reflect changes in hardware technology/ 5. What is the role of programming languages in the development of modern software systems? 6. How do the different generations of programming languages impact the productivity and efficiency of software developers? 7. How do programming paradigms affect the categorization of high-level programming languages? 8. What is the difference between a procedural language and an object-oriented language? 9. How do functional programming languages differ from procedural or object-oriented programming languages? 10.How do programming languages adapt to changes in hardware and software technology? 11. What is the role of high-level programming languages in machine learning and artificial intelligence? 12. How do programming languages affect software development practices, such as testing, debugging, and maintenance? 13. How is the rise of cloud computing changing the software development landscape? 14.What are some of the emerging trends in artificial intelligence and machine learning, and how are they being integrated into software systems? 15.What role do open-source software and community-driven development models play in the software industry today? 16.How are software development practices evolving to address security and privacy concerns? 17. What impact is the Internet of Things (IoT) having on software development, and what new challenges does it present? 18.How is the shift towards agile development methodologies impacting the software industry, and what benefits does it offer? 19. What are the main functions of system software, and how do they differ from those of application software? 20.How does system software interact with hardware components to manage system resources and provide a platform for running application software? 21.What is the relationship between the operating system and other system software components such as device drivers and firmware? 22What are some of the challenges involved in developing and maintaining both system software and application software, and how are these challenges addressed in industry?