Technopedia

The technologist’s encyclopedia

Programming

Programming studies how to specify computations precisely, how to transform specifications into executable programs, and how to structure programs for correctness, efficiency, and maintainability. It is relevant whenever a computation must be written, compiled, tested, or maintained.

Utility

Details

Programming sits between algorithmics and hardware: it takes the abstract procedure chosen by algorithmics and gives it a precise, machine-checkable form. The language specification defines what programs mean; the compiler transforms source into executable form; the runtime (OS, memory manager) executes the program on hardware. The boundary with algorithmics is: algorithmics asks “what is the procedure and what does it cost?”; programming asks “how do I write it so a machine can execute it, and how do I know it is correct?”. The boundary with hardware is: programming specifies the computation; hardware provides the substrate.

History

Classes

PageCore objectKey metricBoundary
Control flow and semanticsStatements, expressions, scope, closures, recursionExpressiveness, type safety, predictabilityWhat a program means; does not model how it is compiled or executed
Memory managementStack, heap, allocators, garbage collectorsAllocation cost, GC pause, memory overheadHow memory is allocated and reclaimed; does not model the physical memory hierarchy
Language theoryTokenizers, parsers, type systems, grammarsParse time, type inference power, expressivenessHow source code is structured and checked; does not model the target architecture
CompilationCompilers, linkers, AOT/JIT, bytecodeCompile time, code size, runtime performanceHow source is transformed into executable form; does not model the OS or the network
Design patternsArchitectural and structural patternsCoupling, cohesion, testability, maintainabilityHow to structure a program for long-term maintenance; does not model the algorithm or the hardware
SecurityMemory safety, injection, authentication, authorizationAttack surface, exploitability, privilege levelHow to protect a program from malicious input and misuse; does not model the cryptographic primitives themselves
Software engineeringVersion control, testing, CI/CD, observabilityDefect rate, deployment frequency, mean time to recoveryHow to build, test, deploy, and monitor software at scale; does not model the algorithm or the hardware

Authoritative sources