Software is a collection of computer programs and related documentation and data. It is different from the hardware that makes up the system and actually works.
At the lowest programming level, executable code consists of machine language instructions supported by a separate processor — usually a central processing unit (CPU) or graphics processing unit (GPU).
Machine language consists of a collection of binary values that represent instructions to the processor that change the state of the computer from its previous state. For example, an instruction can change a value stored in a specific memory location on the computer—an effect that is not directly observable by the user.
A statement can also invoke one of many input or output operations, such as: B. displaying text on a computer screen; Causes a state change that should be visible to the user. The processor executes instructions in the given order, unless instructed to “jump” to another instruction, or is interrupted by the operating system.
As of 2015, most PCs, smartphones, and servers have processors with multiple execution units or multiple processors performing shared computing, and computing has become a much more common concurrent activity than in the past.
Most software is written in high-level programming languages. They are easier and more efficient for programmers because they are closer to natural language than machine language.
High-level languages are translated into machine language using a compiler or interpreter or a combination of both. Software can also be written in simple assembly language, which is very similar to computer machine language instructions, and translated into machine language using assembly.
History Of Software
An algorithm for what would become software was first written by Ada Lovelace in the 19th century for the proposed Analytical Engine. He presented evidence to show how machines would calculate Bernoulli numbers. Due to her proofs and algorithms, she is considered the first female computer programmer.
The first software theory, before the development of computers as we know them today, was put forward by Alan Turing in his 1936 essay On Computable Numbers with Application to the Decision Problem.  This eventually led to the creation of the academic fields of computer science and software engineering; Both fields study software and its creation.
Computer science is the theoretical study of computers and software (Turing’s essay is an example of computer science), whereas software engineering is the application of engineering principles to software development. Prior to 1946, software was not a program stored in the digitally stored memory of a computer as we understand it today; The first electronic computing devices were instead reconfigured to be “reprogrammed”.
In 2000, Fred Shapiro, a librarian at Yale Law School, published a letter revealing that the earliest known use of the term “software” was used in JSTOR’s electronic archive searches two years before the OED citation.
This led to many crediting Tukey with coining the term, especially in obituaries published that year, although Tukey never claimed credit for the coin. In 1995, Paul Niket claimed to have originally coined the term in October 1953, although he could not find any documentation to support his claim.
The earliest known publication of the term “software” in a technical context was in August 1953 by Richard R. Carhart in a Rand Corporation research memorandum
Types Of Software
Application software uses a computer system to perform specialized functions beyond the basic operations of the computer itself. Because the range of tasks that can be performed with modern computers is so wide, there are many different types of application software – see list of software.
System software manages hardware behavior to provide the basic functionality users need or to make other software work properly if any. System software is also designed to provide a platform for running application software and includes the following:
- An operating system is a core collection of software that manages resources and provides common services to other software running “on it”. Program monitoring, boot loader, shell and system windowing are important parts of the operating system. In practice, operating systems come with additional software, so users may be able to do some work with computers that only have an operating system.
- Device drivers operate or control certain types of devices attached to the computer. Each device requires at least one appropriate device driver; Because computers typically have at least one input device and at least one output device, computers usually require more than one driver per device.
- Utilities are computer programs designed to assist users in the maintenance and care of their computers.
Malware, or malicious software, is software designed to damage or disrupt computers. Malware is closely related to computer crime, although some malicious programs may be created as a joke.
Computer Software Types
People who use modern general-purpose computers usually see three layers of software performing a variety of tasks: platform, application, and user software
A platform includes firmware, device drivers, operating systems, and usually a graphical user interface that generally allows the user to interact with the computer and its peripherals. Platform software is often bundled with computers. On a PC, you usually have the ability to change the platform software.
Application software is what most people think of when they think of software. Common examples are office suites and video games. Application software is often purchased separately from computer hardware.
Sometimes applications are bundled with the computer, but that doesn’t change the fact that they work as independent applications. Applications are generally operating system-independent programs, although they are often platform-specific. Most users think of compilers, databases, and other “system software” as applications.
End-user development adapts the system to the specific needs of the user. User software includes spreadsheet templates and word processing templates. Even email filters are a type of consumer software.
Users create this software themselves and often overlook how important it is. Depending on how proficiently user-written software has been integrated into standard application packages, many users may not be aware of the difference between the original package and what colleagues have added.
Software quality is very important, especially when it comes to commercial software and systems. If the software is buggy, it can wipe out someone’s work, crash the computer, and do other unexpected things. Glitches and bugs are called “bugs” and are often found during alpha and beta testing.
Software is also often the victim of what is known as software aging, progressive degradation in performance that results from a combination of unseen bugs. required]
Many bugs are found and fixed through software testing. However, software testing rarely, if ever, eliminates every bug; some programmers say that “every program has at least one other bug”.
Waterfall software development methods typically employ separate test teams, but with newer approaches, collectively known as agile software development, developers often do all their own testing and regularly demonstrate software to users/customers for feedback.
The software can be tested using unit testing, regression testing, and other methods that are done manually or most often automatically, because the amount of code to be tested can be both large and lighter together.
Software Design and implementation
Software design and implementation varies depending on the complexity of the software. For example, Microsoft Word took longer to design and develop than Microsoft Notepad, because the former had much more basic functionality.
Software is typically developed in integrated development environments (IDEs) such as Eclipse, IntelliJ, and Microsoft Visual Studio, which can simplify the process and compile software. As mentioned elsewhere, software is usually built on top of existing software and an interface is an application programming interface (API) that exposes the underlying software, such as GTK+, JavaBeans, or Swing.
Libraries (APIs) can be categorized according to their purpose. For example, the Spring Framework is used to implement enterprise applications, the Windows Forms library is used to design graphical user interface (GUI) applications such as Microsoft Word, and the Windows Communication Foundation is used to design web service programs that are developed, depending on an API. For example, Microsoft Windows desktop applications can call API functions in the .
NET Windows Forms library such as Form1.Close and Form1.Show to close or open the application. Without this API, programmers would have to write this functionality entirely on their own. Companies like Oracle and Microsoft provide their own APIs, so many applications are written using their software libraries, which usually contain multiple APIs.
Data structures such as hash tables, arrays, and binary trees, and algorithms such as quicksort can be useful when building software. Computer software has special economic characteristics that distinguish its design, manufacture, and distribution from most other economic goods.
A person who makes software is known as a programmer, software engineer, or software developer, terms which all have the same meaning. There are also more informal terms for a programmer such as “coder” and “hacker” – although the use of the latter word can cause confusion as it is more often used to refer to someone who illegally breaks into a computer system.