Other meanings of Computer programming
COMPUTING
Computer programming is the process of writing instructions for computers to execute. Programmers express algorithms and data-processing rules in programming languages, then translate, test, maintain, and adapt those instructions into software.
Computer programming turns a desired computation into precise, executable instructions. A programmer first describes the problem through an algorithm, chooses representations for data, and expresses the solution in a programming language. The resulting source code may be translated into machine code by a compiler, executed through an interpreter, or processed by a mixture of both approaches.1
Programming includes more than typing commands. It involves decomposing a task, selecting control structures such as loops and conditionals, managing state, handling input and output, and anticipating invalid or unexpected inputs. The same source code can produce different behavior when libraries, operating systems, hardware, or compiler settings differ. Programmers therefore document assumptions and interfaces as well as instructions. Small scripts, embedded controllers, databases, scientific simulations, mobile applications, and operating systems all rely on the same fundamental activity: specifying operations so a computer can carry them out reliably.
Programming languages provide different ways to express computation, and no single language is best for every task. Low-level languages such as assembly expose processor operations, while higher-level languages such as Python, Java, C, and Rust provide abstractions for data structures, memory, concurrency, or objects. A compiler commonly converts source code into an executable or an intermediate representation; an interpreter or virtual machine can instead execute or further translate that representation.2
The programming environment includes editors, build systems, package managers, libraries, debuggers, profilers, and version-control systems. These tools coordinate files and dependencies, locate faults, measure performance, and preserve earlier versions of a project. Python illustrates the high-level approach: its standard tutorial introduces expressions, control flow, functions, data structures, modules, exceptions, classes, and input/output as connected elements of a language rather than isolated commands.3 The choice of language and toolchain affects portability, safety, speed, maintainability, and access to specialized libraries.
Reliable programming depends on verification throughout development, not only on whether a program runs once. Programmers inspect code, write unit and integration tests, use static analysis, reproduce failures, and apply debugging techniques to compare actual behavior with a specification. Testing can reveal defects, but it cannot prove that a complex program has no defects; requirements, assumptions, and edge cases must also be examined.
For larger systems, programming is one activity within software engineering. Requirements, architecture, interfaces, configuration management, review, deployment, monitoring, and maintenance shape the final result. NASA’s software-engineering guidance treats planning, assurance, risk management, and lifecycle evidence as essential to dependable software, especially in safety-critical work. Security is similarly part of programming rather than an afterthought: input validation, authentication, authorization, dependency management, secure defaults, and careful handling of secrets reduce weaknesses that attackers could exploit. The NIST Secure Software Development Framework organizes such practices across the software lifecycle.4
Programming has important dimensions that are less visible than the finished application. A program’s behavior can depend on compiler optimizations, numeric precision, character encoding, clock behavior, scheduling, and undefined or implementation-defined language rules. These edge cases matter in financial calculations, scientific computing, telecommunications, and embedded devices, where a tiny assumption can produce a large operational error.
Programming also has a social and ethical dimension. Shared libraries and open-source software let programmers reuse and inspect code, but licenses impose conditions and dependencies can introduce maintenance or security risks. The ACM Code of Ethics connects computing practice with avoiding harm, respecting privacy, being honest about system limitations, and ensuring that the public interest is considered.5 Historically, programmers have worked with punched cards, paper tape, command-line tools, visual environments, and collaborative repositories; newer interfaces change the workflow without removing the need for precise reasoning, testing, and accountability.
Sources are numbered in order of appearance; linked superscripts identify the supporting reference for each cited claim.
Help improve the encyclopedia. Reports go straight to the site manager.