Sunteți pe pagina 1din 5

At the lowest programming level,[clarification needed] executable code consists of machine language

instructions supported by an individual processor—typically a central processing unit (CPU) or a


graphics processing unit (GPU). A machine language consists of groups of binary values signifying
processor instructions that change the state of the computer from its preceding state. For example, an
instruction may change the value stored in a particular storage location in the computer—an effect
that is not directly observable to the user. An instruction may also invoke one of many input or output
operations, for example displaying some text on a computer screen; causing state changes which
should be visible to the user. The processor executes the instructions in the order they are provided,
unless it is instructed to "jump" to a different instruction, or is interrupted by the operating system. As
of 2015, most personal computers, smartphone devices and servers have processors with multiple
execution units or multiple processors performing computation together, and computing has become a
much more concurrent activity than in the past.

The majority of software is written in high-level programming languages. They are easier and more
efficient for programmers because they are closer to natural languages than machine languages.[1]
High-level languages are translated into machine language using a compiler or an interpreter or a
combination of the two. Software may also be written in a low-level assembly language, which has
strong correspondence to the computer's machine language instructions and is translated into machine
language using an assembler.

Contents

• 1History
• 2Types
o 2.1Purpose, or domain of use
o 2.2Nature or domain of execution
o 2.3Programming tools
• 3Topics
o 3.1Architecture
o 3.2Execution
o 3.3Quality and reliability
o 3.4License
o 3.5Patents
• 4Design and implementation
• 5Industry and organizations
• 6See also
• 7References
o 7.1Sources
• 8External links

History

Main article: History of software

An outline (algorithm) for what would have been the first piece of software was written by Ada
Lovelace in the 19th century, for the planned Analytical Engine.[2] She created proofs to show how the
engine would calculate Bernoulli Numbers.[2] Because of the proofs and the algorithm, she is
considered the first computer programmer.[3][4]
The first theory about software—prior to creation of computers as we know them today—was
proposed by Alan Turing in his 1935 essay On Computable Numbers, with an Application to the
Entscheidungsproblem (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
computer and software (Turing's essay is an example of computer science), whereas software
engineering is the application of engineering and development of software.

However, prior to 1946, software was not yet the programs stored in the memory of stored-program
digital computers, as we now understand it. The first electronic computing devices were instead
rewired in order to "reprogram" them.

In 2000, Fred Shapiro, a librarian at the Yale Law School, published a letter revealing that John
Wilder Tukey's 1958 paper "The Teaching of Concrete Mathematics"[5][6] contained the earliest known
usage of the term "software" found in a search of JSTOR's electronic archives, predating the OED's
citation by two years.[7] This led many to credit Tukey with coining the term, particularly in obituaries
published that same year,[8] although Tukey never claimed credit for any such coinage. In 1995, Paul
Niquette claimed he had originally coined the term in October 1953, although he could not find any
documents supporting his claim.[9] The earliest known publication of the term "software" in an
engineering context was in August 1953 by Richard R. Carhart, in a Rand Corporation Research
Memorandum.[10]

Types

See also: List of software categories

Blender Game Engine, a free software.

On virtually all computer platforms, software can be grouped into a few broad categories.

Purpose, or domain of use

series on

E-commerce
Online goods and services

• Digital distribution
• E-books
• Software
• Streaming media

Retail services
• Banking
• DVD-by-mail
• Flower delivery
• Food ordering
• Grocery
• Pharmacy
• Travel

Marketplace services
• Advertising
• Auctions
• Comparison shopping
• Social commerce
• Trading communities
• Wallet

Mobile commerce
• Payment
• Ticketing

Customer service
• Call centre
• Help desk
• Live support software

E-procurement
Purchase-to-pay
• v
• t
• e

Based on the goal, computer software can be divided into:

• Application software
which is software that uses the computer system to perform special functions or provide
entertainment functions beyond the basic operation of the computer itself. There are many
different types of application software, because the range of tasks that can be performed with
a modern computer is so large—see list of software.
• System software
which is software for managing computer hardware behaviour, as to provide basic
functionalities that are required by users, or for other software to run properly, if at all.
System software is also designed for providing a platform for running application software, [11]
and it includes the following:
o Operating systems
which are essential collections of software that manage resources and provides
common services for other software that runs "on top" of them. Supervisory
programs, boot loaders, shells and window systems are core parts of operating
systems. In practice, an operating system comes bundled with additional software
(including application software) so that a user can potentially do some work with a
computer that only has one operating system.
o Device drivers
which operate or control a particular type of device that is attached to a computer.
Each device needs at least one corresponding device driver; because a computer
typically has at minimum at least one input device and at least one output device, a
computer typically needs more than one device driver.
o Utilities
which are computer programs designed to assist users in the maintenance and care of
their computers.
• Malicious software or malware
which is software that is developed to harm and disrupt computers. As such, malware is
undesirable. Malware is closely associated with computer-related crimes, though some
malicious programs may have been designed as practical jokes.

Nature or domain of execution

• Desktop applications such as web browsers and Microsoft Office, as well as smartphone and
tablet applications (called "apps"). (There is a push in some parts of the software industry to
merge desktop applications with mobile apps, to some extent. Windows 8, and later Ubuntu
Touch, tried to allow the same style of application user interface to be used on desktops,
laptops and mobiles.)
• JavaScript scripts are pieces of software traditionally embedded in web pages that are run
directly inside the web browser when a web page is loaded without the need for a web
browser plugin. Software written in other programming languages can also be run within the
web browser if the software is either translated into JavaScript, or if a web browser plugin
that supports that language is installed; the most common example of the latter is
ActionScript scripts, which are supported by the Adobe Flash plugin.
• Server software, including:
o Web applications, which usually run on the web server and output dynamically
generated web pages to web browsers, using e.g. PHP, Java, ASP.NET, or even
JavaScript that runs on the server. In modern times these commonly include some
JavaScript to be run in the web browser as well, in which case they typically run
partly on the server, partly in the web browser.
• Plugins and extensions are software that extends or modifies the functionality of another piece
of software, and require that software be used in order to function;
• Embedded software resides as firmware within embedded systems, devices dedicated to a
single use or a few uses such as cars and televisions (although some embedded devices such
as wireless chipsets can themselves be part of an ordinary, non-embedded computer system
such as a PC or smartphone).[12] In the embedded system context

S-ar putea să vă placă și