Professional Documents
Culture Documents
History
An 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.[3] She
created proofs to show how the engine would calculate Bernoulli numbers.[3]
Because of the proofs and the algorithm, she is considered the first computer
programmer.[4][5]
The first theory about software, prior to the creation of computers as we know
them today, was proposed by Alan Turing in his 1936 essay, On Computable
Numbers, with an Application to the Entscheidungsproblem (decision
problem).[6] This eventually led to the creation of the academic fields of
computer science and software engineering; both fields study software and its
creation.[citation needed] 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 principles to development
of software.[7]
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"[8][9] 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.[10] This led many to credit Tukey with coining the term, particularly
in obituaries published that same year,[11] 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.[12] 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.[13]
Types
On virtually all computer platforms, software can be grouped into a few broad
categories.
Programming tools
Programming tools are also software in the form of programs or applications
that developers use to create, debug, maintain, or otherwise support software.
[17][better source needed]
Topics
Architecture
People who use modern general purpose computers (as opposed to embedded
systems, analog computers and supercomputers) usually see three layers of
software performing a variety of tasks: platform, application, and user software.
[citation needed]
Many bugs are discovered and fixed through software testing. However, software
testing rarely—if ever—eliminates every bug; some programmers say that "every
program has at least one more bug" (Lubarsky's Law).[18] In the waterfall
method of software development, separate testing teams are typically employed,
but in newer approaches, collectively termed agile software development,
developers often do all their own testing, and demonstrate the software to
users/clients regularly to obtain feedback.[citation needed] Software can be tested
through unit testing, regression testing and other methods, which are done
manually, or most commonly, automatically, since the amount of code to be
tested can be large.[citation needed] Programs containing command software
enable hardware engineering and system operations to function much easier
together.[citation needed]
License
The software's license gives the user the right to use the software in the licensed
environment, and in the case of free software licenses, also grants other rights
such as the right to make copies.[citation needed]
Open-source software comes with a free software license, granting the recipient
the rights to modify and redistribute the software.[21]
Patents
Software patents, like other types of patents, are theoretically supposed to give
an inventor an exclusive, time-limited license for a detailed idea (e.g. an
algorithm) on how to implement a piece of software, or a component of a piece
of software. Ideas for useful things that software could do, and user
requirements, are not supposed to be patentable, and concrete implementations
(i.e. the actual software packages implementing the patent) are not supposed to
be patentable either—the latter are already covered by copyright, generally
automatically. So software patents are supposed to cover the middle area,
between requirements and concrete implementation. In some countries, a
requirement for the claimed invention to have an effect on the physical world
may also be part of the requirements for a software patent to be held valid—
although since all useful software has effects on the physical world, this
requirement may be open to debate. Meanwhile, American copyright law was
applied to various aspects of the writing of the software code.[22]
Software patents are controversial in the software industry with many people
holding different views about them. One of the sources of controversy is that the
aforementioned split between initial ideas and patent does not seem to be
honored in practice by patent lawyers—for example the patent for aspect-
oriented programming (AOP), which purported to claim rights over any
programming tool implementing the idea of AOP, howsoever implemented.
[citation needed] Another source of controversy is the effect on innovation, with
many distinguished experts and companies arguing that software is such a fast-
moving field that software patents merely create vast additional litigation costs
and risks, and actually retard innovation.[citation needed] In the case of debates
about software patents outside the United States, the argument has been made
that large American corporations and patent lawyers are likely to be the primary
beneficiaries of allowing or continue to allow software patents.[citation needed]
Data structures such as hash tables, arrays, and binary trees, and algorithms
such as quicksort, can be useful for creating software.
Computer software has special economic characteristics that make its design,
creation, and distribution different from most other economic goods.[specify]
[24][25]
See also
• Computer program
• Independent software vendor
• Open-source software
• Outline of software
• Software asset management
• Software release life cycle
References
1. ^ "ISO/IEC 2382:2015". ISO. 3 September 2020. Retrieved 26 May 2022.
“[Software includes] all or part of the programs, procedures, rules, and
associated documentation of an information processing system.”
2. ^ "Compiler construction". Archived from the original on 2 November
2013.
3. ^ Jump up to: a b Evans 2018, p. 21.
4. ^ Fuegi, J.; Francis, J. (2003). "Lovelace & Babbage and the creation of
the 1843 'notes'" (PDF). Annals of the History of Computing. 25 (4):
16–26. doi:10.1109/MAHC.2003.1253887. S2CID 40077111. Archived
from the original (PDF) on 15 February 2020.
5. ^ Staf, Guardian (10 December 2012). "Ada Lovelace honoured by Google
doodle". The Guardian. Retrieved 25 November 2018.{{cite news}}: CS1
maint: url-status (link)
6. ^ Turing, Alan Mathison (1936). "On Computable Numbers, with an
Application to the Entscheidungsproblem" (PDF). Journal of
Mathematics. 58: 230–265. Archived (PDF) from the original on 9
October 2022. Retrieved 28 August 2022.
7. ^ Lorge Parnas, David (1 November 1984). "Software Engineering
Principles". INFOR: Information Systems and Operational Research. 22
(4): 303–316. doi:10.1080/03155986.1984.11731932. ISSN 0315-5986.
8. ^ Tukey, John Wilder (January 1958). "The Teaching of Concrete
Mathematics". American Mathematical Monthly. Taylor & Francis, Ltd. /
Mathematical Association of America. 65 (1): 1–9, 2.
doi:10.2307/2310294. ISSN 0002-9890. JSTOR 2310294.
CODEN AMMYAE. “[…] Today the "software" comprising the carefully
planned interpretive routines, compilers, and other aspects of automative
programming are at least as important to the modern electronic
calculator as its "hardware" of tubes, transistors, wires, tapes, and the
like. […]”
9. ^ Beebe, Nelson H. F. (22 August 2017). "Chapter I - Integer arithmetic".
The Mathematical-Function Computation Handbook - Programming
Using the MathCW Portable Software Library (1 ed.). Salt Lake City, UT,
USA: Springer International Publishing AG. pp. 969, 1035.
doi:10.1007/978-3-319-64110-2. ISBN 978-3-319-64109-6.
LCCN 2017947446. S2CID 30244721.
10. ^ Shapiro, Fred (2000). "Origin of the Term Software: Evidence from the
JSTOR Electronic Journal Archive" (PDF). IEEE Annals of the History of
Computing. 22 (2): 69–71. doi:10.1109/mahc.2000.887997. Archived
from the original (PDF) on 5 June 2003. Retrieved 25 June 2013.
11. ^ Leonhardt, David (28 July 2000). "John Tukey, 85, Statistician; Coined
the Word 'Software'". The New York Times. Retrieved 24 September 2012.
12. ^ Niquette, R. Paul (2006), Softword: Provenance for the Word
'Software, ISBN 1-58922-233-4, archived from the original on 8 August
2019, retrieved 18 August 2019
13. ^ Carhart, Richard (1953). A survey of the current status of the electronic
reliability problem (PDF). Santa Monica, CA: Rand Corporation. p. 69.
Archived (PDF) from the original on 9 October 2022. “[…] It will be
recalled from Sec. 1.6 that the term personnel was defined to include
people who come into direct contact with the hardware, from production
to field use, i.e., people who assemble, inspect, pack, ship, handle, install,
operate, and maintain electronic equipment. In any of these phases
personnel failures may result in unoperational gear. As with the
hardware factors, there is almost no quantitative data concerning these
software or human factors in reliability: How many faults are caused by
personnel, why they occur, and what can be done to remove the errors.
[…]”
14. ^ "System Software". The University of Mississippi. Archived from the
original on 30 May 2001.
15. ^ Hope, Computer. "What is a Plugin?". www.computerhope.com.
Retrieved 26 January 2022.{{cite web}}: CS1 maint: url-status (link)
16. ^ "Embedded Software—Technologies and Trends". IEEE Computer
Society. May–June 2009. Archived from the original on 28 October 2013.
Retrieved 6 November 2013.
17. ^ "What is a Programming Tool? - Definition from Techopedia".
Techopedia.com. Retrieved 26 January 2022.{{cite web}}: CS1 maint: url-
status (link)
18. ^ "scripting intelligence book examples". GitHub. 9 May 2018. Archived
from the original on 6 November 2015. Retrieved 6 November 2015.
19. ^ "Freeware vs Shareware - Difference and Comparison | Diffen".
www.diffen.com. Retrieved 26 January 2022.{{cite web}}: CS1 maint:
url-status (link)
20. ^ Morin, Andrew; Urban, Jennifer; Sliz, Piotr (26 July 2012). "A Quick
Guide to Software Licensing for the Scientist-Programmer". PLOS
Computational Biology. 8 (7): e1002598.
Bibcode:2012PLSCB...8E2598M. doi:10.1371/journal.pcbi.1002598.
ISSN 1553-7358. PMC 3406002. PMID 22844236.
21. ^ "Open source software explained". IONOS Digitalguide. Retrieved 26
January 2022.{{cite web}}: CS1 maint: url-status (link)
22. ^ Gerardo Con Díaz, "The Text in the Machine: American Copyright Law
and the Many Natures of Software, 1974–1978," Technology and Culture
57 (October 2016), 753–79.
23. ^ "MSDN Library". microsoft.com. Archived from the original on 11 June
2010. Retrieved 14 June 2010.
24. ^ v. Engelhardt, Sebastian (2008). "The Economic Properties of
Software". Jena Economic Research Papers. 2 (2008–045). Archived
from the original on 5 January 2016.
25. ^ Kaminsky, Dan (2 March 1999). "Why Open Source Is The Optimum
Economic Paradigm for Software". dankaminsky.com. Archived from the
original on 22 May 2012. Retrieved 19 November 2021.{{cite web}}: CS1
maint: date and year (link)
Sources
• Evans, Claire L. (2018). Broad Band: The Untold Story of the Women
Who Made the Internet. New York: Portfolio/Penguin.
ISBN 9780735211759.
External links
• Software at Curlie