A computer program is a collection of instructions that describe a task to be performed by a computer. The term may be a reference to the source code, written in any programming language, or the file containing the executable form of the source code used by Computer Customer Support.
The first practical application of the program came with the devices based on punched cards, which were used since the eighteenth century in the industry. The U.S. businessman Hermann Hollerith used the concept in the processing of census data in the United States in 1890.
The first electronic computers were programmed only through low-level languages. These languages did not provide a level of abstraction over the hardware, and commands were interpreted directly by electronic circuits.
In the ENIAC, one of the most iconic in the history of computing equipment, the programming was done through manual connections that united the computer processing units, forming a sequence of execution.
The high-level languages emerged around the 1940s, as Plankalkül and Short Code, and were largely influenced by the development of compilers that made programming a possible activity for a large number of people. In the 1950s came the first language that was widely accepted, the Fortran.
A computer program is the formalization of an algorithm in any language capable of being transformed into instructions to be executed by a computer generating the expected results.
The term software can be used when you want to designate a set of programs or, more often, when a reference is made to non-physical part of the computer system, as opposed to the term hardware, which means the set of electronic components constitute a computer.
Computer programs used directly by ordinary people, such as text editors, are called application software, or applications. The programs aimed at give functional support to computers, such as operating systems are called system software handled by Computer Customer Support.
These software, as well as those embedded in other systems (firmware) can broadly be called programs.
Implementation of the program
A computer program is first loaded into the computer (usually the operating system) memory. The operating system organizes three blocks of memory, also called segments. The first is the code segment, which is static in size and content.
It gets all the machine code that defines subroutines of the program, and an address of each subroutine is defined as the lowest of the addresses of the memory cells that define it.
The second memory block is the data segment, which receives global variables. Just like in the code segment, the address of each variable is defined as the lowest of the addresses of the memory cells that define it.