Language · abstraction · runtime · interface · reliability

Software

Software organizes computation into programs that can be understood, translated, executed, tested, and changed. The discipline spans programming abstractions, language semantics, modular design, runtime systems, distributed execution, and evidence that behavior matches intent.

Program lifecycle

Programs are long-lived translations between intent and machine behavior.

Writing source code is one stage. Software also has to be translated, executed in an environment, observed, repaired, and evolved as requirements and dependencies change.

01

Specify

State what behavior, inputs, outputs, constraints, and failure conditions the software is responsible for.

02

Express

Encode that behavior using data, control flow, functions, modules, types, interfaces, and language constructs.

03

Translate

Interpret or compile source into forms the runtime and machine can execute, possibly through several intermediate representations.

04

Execute

Create processes, allocate memory, perform I/O, call services, update state, and interact with the operating environment.

05

Observe

Use tests, logs, traces, metrics, debugging, and user-visible outcomes to compare actual behavior with intended behavior.

06

Evolve

Change requirements, dependencies, architecture, performance, and implementation while preserving the properties that still matter.

Primary branches · navigation

Move from expressing small programs to organizing software systems.

Core abstractions

Software scales by hiding detail behind useful boundaries.

01

Value

A representation interpreted according to a type or protocol: number, string, object, handle, address, token, message, or another unit of information.

02

State

Information that persists across operations. Where state lives and who may change it strongly shapes program behavior and complexity.

03

Control flow

Rules that determine what executes next: sequence, branching, iteration, function calls, events, exceptions, scheduling, and concurrency.

04

Interface

A boundary that defines what one component promises to another while hiding implementation details that need not be shared.

Algorithms & DataStudy procedures, representations, correctness, and resource growth independently of a particular software system.Hardware ArchitectureSee the instruction, memory, and execution machinery beneath software abstractions.Security & CryptographyTreat software as an adversarial attack surface with explicit assets, trust assumptions, and security goals.