Procedural programming is a programming paradigm based upon the concept of the modularity and scope of program code (i.e., the data viewing range of an executable code statement). A main procedural program is composed of one or more modules (also called packages or units), either coded by the same programmer or pre-coded by someone else and provided in a code library.
Each module is composed of one or more subprograms (which may consist of procedures, functions, subroutines or methods, depending on programming language). It is possible for a procedural program to have multiple levels or scopes, with subprograms defined inside other subprograms. Each scope can contain names which cannot be seen in outer scopes.
Procedural programming offers many benefits over simple sequential programming since procedural code:
Procedural programming should not be confused with the orthogonal concept of imperative programming. An example of a non-imperative yet procedural programming language is Logo, which specifies sequences of steps to perform but does not have an internal state.
The canonical example of a procedural programming language is ALGOL. Others include Fortran, PL/I, Modula-2, and Ada.
Proceduralprogramming is a programming paradigm based upon the concept of the procedure call.
Procedures, also known as routines, subroutines, methods, or functions (not to be confused with mathematical functions, but similar to those used in functional programming) simply contain a series of computational steps to be carried out.
Proceduralprogramming is often a better choice than simple sequential or unstructured programming in many situations which involve moderate complexity or which require significant ease of maintainability.
Most languages that are widely used, or have been used for a considerable period of time, have standardization bodies that meet regularly to create and publish formal definitions of the language, and discuss extending or supplementing the already extant definitions.
Type-inferred languages superficially treat all data as not having a type, but actually do sophisticated analysis of the way the program uses the data to determine which elementary operations are performed on the data, and therefore deduce what type the variables have at compile-time.
Programminglanguages are not error tolerant; however, the burden of recognising and using the special vocabulary is reduced by help messages generated by the programminglanguage implementation.