A Computer Program is a set of instructions that once executed will perform one or more tasks on a computer. Without programs, these machines can not work. The general set of programs is called software, which more generally refers to the logical equipment or software of a digital computer.
In computing, they are commonly referred to as binaries, (unix systems, where, because of the structure of the latter, files do not need to use extensions, and subsequently presented as executable files, with .exe extension, in operating systems of the Windows family) because once they have gone through the compilation process and have been created, the instructions that were written in a certain programming language, have been translated into the only language the machine understands, combinations of zeros and some called machine code. The same term can refer to both an executable program and its source code, which is transformed into a binary once it is compiled.
Generally the source code is written by professionals known as programmers. This code is written in a language that follows one of the following two paradigms: imperative or declarative, and that can later be converted into an executable image through a program-compiler. When the program is requested to be executed, the processor executes instruction by instruction.
According to their functions, computer programs are classified into system software and application software. In today's computers, the fact of running several programs simultaneously and efficiently, is known as multitasking.
Computer programming is the iterative process of writing or editing source code. This source code edition involves testing, analyzing and perfecting, and sometimes coordinating with other programmers, in the case of a jointly developed program. A person who practices this technique is known as a computer programmer, software developer, or coder. The process, sometimes long-term, of computer programming is often referred to as software development. The term software engineering is becoming very popular, as this activity is seen as an engineering discipline.
Computer Programs can be classified according to the programming language paradigm used to produce them. Two of the main paradigms are imperative and declarative.
Programs written in imperative language specify an algorithm using statements, expressions, and reports. A statement associates a variable name with a data type. For example: var x: integer; . An expression produces a value. For example: 2 + 2 produces 4. Finally, a declaration can assign an expression to a variable or use the value of a variable to alter the control structures of the program. For example: x: = 2 + 2; if x = 4 then do_something (); A critique of imperative languages is the side effect of an assignment statement in a class of variables called non-local variables.
Programs written in a declarative language specify the properties that have or must be fulfilled for the output. They do not specify details expressed in terms of control flow of the execution machine but of the mathematical relationships between the declared objects and their properties. Functional and logical languages are two broad categories of declarative languages. The principle behind functional languages (such as Haskell) is to not allow side effects, which makes it easier to reason about programs as if they were mathematical functions. The principle behind logical languages (like Prolog) is to define the problem to be solved - the goal - and leave the detailed solution to the Prolog system itself. The objective is defined by providing the list of sub-objectives. Then, each sub-goal is defined above, providing the list of its sub-objectives, etc. If the sub-goal path does not find a solution, then that sub-goal goes back and another path is systematically attempted.
The way the program is created can be textual or visual. In a visual language program, elements instead of being textually specified are manipulated graphically.
Once written, they can be executed in several ways:
Through a program that adapts the instructions as they are found. This process is called interpreting and the programs that do it are known as interpreters. Examples of this are bash, classic on Unix stations and was written for the GNU or Python project, whose peculiarity in addition to being multipurpose, is in its ease of use and productivity and in fact, is used in part of projects Google and YouTube .
Translating the written code of the program (what is denominated source code), to its equivalent in machine language. This process is called compiling and the translator program is called a compiler. Examples of this are: The C language, which combines medium and low level syntax in its syntax and the gcc compiler used in the GNU project.
Typically, the programs are stored in a non-volatile memory (for example a disk), so that the user of the computer, directly or indirectly, requests its execution. At the time of such request, the program is loaded into random access memory or RAM of the computer, under the control of software called operating system, which can directly access the processor. The processor executes (runs) the program, instruction by instruction until it terminates. A running program is also called a process. A program can finish its execution in normal form or because of an error, said error can be software or hardware.
Some programs are embedded in the hardware. A computer with stored program architecture requires an initial program stored in your ROM to boot. The boot process is to identify and initialize all aspects of the system, from the processor registers, device drivers to the contents of the RAM. Following the initialization process, this initial program loads the operating system and initializes the program counter to begin normal operations. Regardless of the computer, a hardware device might have built-in firmware to control its operations. The firmware is used when the program is expected to change rarely or never, or when the program should not be lost when there is no power.
Programs were historically loaded manually to the central processor via switches. An instruction was represented by an open or closed state configuration of the switches. After setting the configuration, a run button was executed. This process was repetitive. Historically, programs were manually loaded with paper tape or perforated cards. After the program was loaded, the start address was set via switches and the execute button was pressed.
Automatic programming is a programming style that creates source code using generic classes, prototypes, templates, aspects, and code generators to increase programmer productivity. The source code is generated with programming tools such as a template processor or an IDE. The simplest form of a source code generator is a macro processor, such as the C preprocessor, which replaces source code patterns according to relatively simple rules.
Many programs can run simultaneously on the same computer, which is known as multitasking and can be achieved through software or hardware mechanisms. Modern operating systems can run several programs through the process scheduler - a software mechanism to frequently switch the amount of processor processes so that users can interact with each program while they are running. Multitasking can also be achieved through hardware; modern computers using multiple processors or multi-core processors can run many programs at once.
Programs can be categorized according to functional lines. These functional categories are system software and application software. The system software includes the operating system which couples the hardware with the application software. The purpose of the operating system is to provide an environment in which the application software runs in a convenient and efficient manner. In addition to the operating system, the system software includes utility programs that help you to manage and configure the computer. If a program is not system software then it is application software. The middleware is also an application software that couples the system software with the user interface. Application programs are also utility programs that help users solve application problems, such as the need for sorting.