Software

coding

Software – a program or set of programs used to control a computer.

Software is a type of computer system support, along with technical (hardware), mathematical, informational, linguistic, organizational, methodological and legal support.

The academic fields that study software are computer science and software engineering.

History

Prehistory. The beginnings of programming

Ada Lovelace wrote the first program for Charles Babbage’s difference machine, but since that machine was never completed, Lady Lovelace’s developments remained purely theoretical.

The first theory concerning software was proposed by the English mathematician Alan Turing in his 1936 essay On computable numbers with an application to the Entscheidungsproblem. He created the so-called Turing machine, a mathematical model of an abstract machine capable of performing sequences of rudimentary operations that move the machine from one fixed state to another. The main idea was to prove mathematically the fact that any pre-determined state of a system can always be achieved by sequentially executing a finite set of elementary commands (a program) from a fixed set of commands.

The first electronic computers of the 1940s and 1950s were reprogrammable by switching toggle switches and reconnecting cables, which required a thorough understanding of their inner workings. Such machines included the ENIAC (which was later modified so that it could, at least in part, be programmed with punch cards).

An important step towards modern computers was the transition to John von Neumann architecture, first embodied in Britain, in the computer developed under the direction of J. R. Womersley and with the participation of Alan Turing, known as the Mark I. The first program stored in the computer’s memory was run on it on June 21, 1941. To facilitate the programming of this machine, Turing devised a reduced coding system in which a sequence of teletype characters printed on punch card was used to represent the binary machine code.

One of Turing’s collaborators, John Mauchly, later became (along with John Presper Eckert) the manager and founder of Eckert-Mauchly Computer Corporation, which developed such computers as BINAC and UNIVAC, commissioned his staff to create an algebraic formula translator. Although this ambitious goal was not achieved in the 1940s, a so-called “Short Code” was developed under Mauchly’s direction, in which operations and variables were encoded in two-character combinations. The Brief Code was implemented using an interpreter. Grace Hopper, working from the early 1950s on a set of mathematical subroutines for UNIVAC I, invented the “A-0” linker program, which by a given identifier selected the desired subroutine from a library stored on magnetic tape and wrote it into the allocated location of RAM.

In the 1950s the first high-level programming languages appeared, John Backus developed FORTRAN, and Grace Hopper developed COBOL. Such developments greatly simplified the writing of application software, which was then written by every firm that bought a computing machine.

In the early 1950s, the concept of software was not yet established. It was not mentioned in the January 1952 Fortune article “Office Robots,” which described the Univac computers. Although the article already described the computer as a universal device, the programming process in that article was anachronistically described as “toggling a toggle switch”. By the mid-50s, however, custom software development was well established, although the term “software” itself was not yet in use, at the time they simply spoke of “custom programming” or “programming services.” The first software firm was the System Development Corporation, established in 1956 on the basis of the U.S. government-owned RAND Corporation. At this stage, the customers for software (unique and non-replicable) were large corporations and government agencies, and the cost of one million dollars per program was not unusual.

Early history. Corporate software

The term “software” itself came into general use from the early 1960s, when it became important to distinguish between the commands that control the computer and its physical components – the hardware. It was then that the software industry began to establish itself as an independent industry. The first software development company was the Computer Sciences Corporation founded in 1959 by Roy Nutt and Fletcher Jones with an initial capital of $100. The first customers of CSC and subsequent software companies were very large corporations and government agencies like NASA, and the firm continued to operate in the custom software market, as did other early programming private start-ups like the Computer Usage Company (CUC).

The first independently produced software products not bundled with computer hardware were Applied Data Research’s 1965 computer documentation generator AUTOFLOW, which automatically drew block diagrams, and the MARK-IV programming language translator, developed in 1960-1967 at Informatics, Inc. The emergence of the corporate software market was closely linked with the IBM System/360 family of computers. Sufficiently massive, relatively inexpensive computers, compatible with each other at the level of the program code, opened the way to replicable software.

Gradually, the circle of software customers expanded, which stimulated the development of new types of software. Thus the first firms specializing in the development of computer-aided design systems appeared.

In November 1966, Business Week magazine first addressed the subject of the software industry. The article was called “Software Gap – A Growing Crisis for Computers” and told of both the promise of the business and the crisis associated with the shortage of programmers. Typical software products of the time served to automate common business tasks, such as payroll or business process automation for medium-sized businesses such as a manufacturing plant or a commercial bank. The cost of such software was usually between five and one hundred thousand dollars.

Personal computers and software for the mass consumer

The emergence of the first personal computers (such as the Altair 8800) in the 1970s also set the stage for the birth of the mass market for software. Initially, programs for personal computers were distributed in “boxed” form through shopping centers or by mail and had a price of 100-500 U.S. dollars.

Landmarks in the nascent mass-market software market were such products as VisiCalc spreadsheet, whose idea came to Daniel Bricklin when, as an MIT graduate and software engineer at DEC, he attended courses at Harvard Business School and wanted to ease his tedious financial calculations, and WordStar word processor, which Seymour Rubinstein began developing after carefully studying market needs. VisiCalc was first mentioned as a killer application, that is, a computer application that by its very existence proves the necessity (and often the need to buy) the platform for which such program is implemented. For VisiCalc and WordStar, that platform was the personal computer, which, thanks to them, went from being a rich geek toy to becoming a working tool. With them began the microcomputer revolution, and these programs had competitors: spreadsheets, SuperCalc, Lotus 1-2-3, the database management system dBase II, the word processor WordPerfect, and others. Word processors, spreadsheets, database management systems, and graphic editors soon became the main products of the software market for personal computers.

Mass replication allowed the cost of software for personal computers to fall to one hundred to five hundred dollars by the mid-1990s, and the business of software producers became somewhat similar to the business of record companies.

License

The user receives the software along with a license that gives him the right to use the software product subject to the terms of the license. Generally, these conditions limit the user’s ability to transfer the software product to other users, to modify the code.

Some software comes with a free license. Such licenses allow you to distribute the software as well as to modify it.

Some of the software is distributed as free software. There is also conditionally free software. In this case, the user usually gets a free demo version of a software product with somewhat limited features for a certain trial period, and after its completion is obliged to either purchase the product or uninstall it.