# procedural programming

> programming paradigm

**Wikidata**: [Q1418502](https://www.wikidata.org/wiki/Q1418502)  
**Wikipedia**: [English](https://en.wikipedia.org/wiki/Procedural_programming)  
**Source**: https://4ort.xyz/entity/procedural-programming

## Summary
Procedural programming is a programming paradigm that organizes code into procedures or subroutines, focusing on the sequence of operations to achieve a specific goal. It emphasizes a top-down approach, breaking tasks into reusable functions. This paradigm is a subset of imperative programming and contrasts with object-oriented or functional methods.

## Key Facts
- Procedural programming is a subclass of **imperative programming** and **structured programming**.
- It is distinct from **functional programming**, which avoids changing state and emphasizes mathematical computation.
- Related technologies include **PowerBASIC** (first released in 1989) and **Object Pascal** (emerged in 1986 as an object-oriented extension of Pascal).
- The paradigm is also known as *programación por procedimientos* (Spanish) and *процедурно-ориентированное программирование* (Russian).
- Procedural programming is described in academic and technical sources such as *DeepSource*, *GeeksforGeeks*, and *BBC Bitesize*.

## FAQs
### Q: How does procedural programming differ from object-oriented programming?
A: Procedural programming focuses on procedures and the order of operations, while object-oriented programming organizes code around objects and their interactions.

### Q: What are examples of languages that use procedural programming?
A: Early languages like **BASIC** (e.g., PowerBASIC) and **Pascal** rely heavily on procedural principles. Modern languages such as **C** also support procedural paradigms.

### Q: Why is procedural programming still relevant today?
A: It provides a straightforward, modular approach to problem-solving, which is essential for systems programming and resource-constrained environments.

## Why It Matters
Procedural programming laid the foundation for modern software development by introducing structured code organization through subroutines. Its emphasis on step-by-step execution made early software manageable and maintainable, influencing later paradigms like object-oriented programming. It remains critical in applications requiring efficiency and direct hardware manipulation, such as embedded systems and operating kernels. Understanding procedural programming helps developers grasp fundamental logic flows and modular design principles.

## Notable For
- **Modular Code Structure**: Organizes logic into reusable procedures, reducing redundancy.
- **Contrast with Functional Programming**: Relies on state changes and sequence, unlike declarative functional approaches.
- **Historical Significance**: Dominated early programming through languages like BASIC and Pascal.
- **Efficiency Focus**: Enables direct control over execution flow, crucial for systems programming.

## Body
### Definition & Characteristics
Procedural programming is defined by its use of **subroutines** (functions, procedures) to structure code. It follows a linear, top-down execution model, where tasks are decomposed into smaller, manageable units.

### Key Features
- **Imperative Nature**: Specifies *how* to perform tasks using statements that change program state.
- **Modularity**: Encourages code reuse through functions with clear input/output behavior.
- **Sequence Dependency**: Relies on the order of procedure calls to achieve results.

### Relationships to Other Paradigms
- **Imperative & Structured Programming**: Inherits their focus on control structures (loops, conditionals) and data flow.
- **Object-Oriented Programming (OOP)**: Differs by prioritizing actions over objects; OOP encapsulates data and behavior into objects.
- **Functional Programming**: Avoids shared state and mutable data, unlike procedural methods.

### Associated Languages & Tools
- **PowerBASIC** (1989): A commercial compiler for procedural BASIC dialects.
- **Pascal** (1970): A foundational language for procedural design, later extended into Object Pascal (1986).
- **C**: A low-level language emphasizing procedural principles for systems programming.

### Historical Context
Procedural programming emerged as a refinement of early imperative languages, addressing spaghetti code issues through structured techniques. Its peak popularity in the 1970s–1980s established norms for software development, though it has since been complemented (not replaced) by OOP and functional paradigms.

## References

1. Freebase Data Dumps. 2013
2. Quora
3. [OpenAlex](https://docs.openalex.org/download-snapshot/snapshot-data-format)