Reference page
Static vs Dynamic Typing
Static and dynamic typing describe when a language checks type rules: before a program runs, while it runs, or through a deliberately gradual mix of both.
Index
Cross-language ideas grouped by type systems, memory, runtime, concurrency, paradigms, and tooling.
Type Systems concepts
How languages describe values, generic code, absence, inference, and type relationships.
7 pages
Reference page
Static and dynamic typing describe when a language checks type rules: before a program runs, while it runs, or through a deliberately gradual mix of both.
Reference page
Strong and weak typing describe how readily a language lets operations cross type boundaries through implicit conversions, not whether type checks happen before or during execution.
Reference page
Type inference lets a compiler or checker determine types from expressions and context, reducing annotations while still preserving static feedback where the language supports it.
Reference page
Structural typing checks whether a value has the required shape, while nominal typing checks relationships through declared names such as classes, interfaces, traits, protocols, or aliases.
Reference page
Generics let one definition work over many types while preserving type information, but languages differ in constraints, variance, runtime representation, and code generation strategy.
Reference page
Algebraic data types model values as products and alternatives, while pattern matching lets code branch by the shape of those values and often check that all cases were handled.
Reference page
Null safety is the set of language, type-system, tooling, and library practices that make absence explicit instead of letting every reference silently be missing.
Memory concepts
Resource lifetime, allocation, reclamation, and safety models across native and managed runtimes.
7 pages
Reference page
Ownership is a memory-management and resource-management model where rules about who controls a value, who may borrow it, and when it is cleaned up are enforced by the language or by project discipline.
Reference page
Garbage collection is automatic memory reclamation where a runtime or implementation identifies objects that can no longer be reached and makes their storage available again.
Reference page
Reference counting tracks how many owners or strong references point at a value and reclaims the value when the count reaches zero.
Reference page
Manual memory management makes allocation, deallocation, and ownership transfer explicit in program code, API contracts, or allocator parameters.
Reference page
RAII ties resource acquisition to object lifetime so cleanup happens automatically when the owner leaves scope or is destroyed.
Reference page
Stack and heap allocation describe different storage strategies for values, with tradeoffs around lifetime, size, movement, sharing, and runtime management.
Reference page
Memory safety is the property that code cannot perform invalid memory access such as use-after-free, double-free, out-of-bounds access, or dereferencing invalid pointers.
Runtime And Execution concepts
Interpreters, bytecode, compilation targets, interop boundaries, ABIs, and standard libraries.
6 pages
Reference page
Interpreters, just-in-time compilers, and ahead-of-time compilers are execution strategies that trade startup time, portability, optimization opportunity, deployment shape, and runtime complexity differently.
Reference page
Virtual machines and bytecode let implementations run a portable intermediate program representation while adding runtime services such as verification, garbage collection, reflection, dynamic loading, or JIT compilation.
Reference page
Compilation targets describe the operating system, CPU architecture, ABI, runtime platform, or intermediate format a toolchain can produce code for.
Reference page
A foreign function interface lets code in one language call functions, load libraries, exchange data, or expose callable APIs across language and runtime boundaries.
Reference page
ABI stability is the ability for compiled components to keep calling each other correctly across compiler, library, language, or operating-system changes without recompilation.
Reference page
Standard library philosophy describes how much capability a language project expects to ship with the language instead of leaving to third-party packages, frameworks, or platform libraries.
Concurrency concepts
Threads, async runtimes, message passing, lightweight tasks, memory models, and scoped task lifetimes.
6 pages
Reference page
Threads and shared memory let concurrent execution contexts access the same address space, which makes communication direct but requires synchronization and clear ownership of mutable state.
Reference page
Async/await and event loops structure concurrent I/O by letting tasks suspend while a runtime waits for external events, timers, sockets, or other operations to become ready.
Reference page
Goroutines, green threads, fibers, virtual threads, and lightweight processes are runtime-managed concurrency units that can be cheaper to create than operating-system threads.
Reference page
Actor-style and message-passing systems organize concurrency around isolated units that communicate by sending messages rather than by freely sharing mutable state.
Reference page
Data races and memory models define when concurrent reads and writes are valid, when writes become visible, and which synchronization operations establish ordering between tasks or threads.
Reference page
Structured concurrency treats concurrent work as a scoped tree so child tasks have clear lifetimes, cancellation, error propagation, and joining behavior.
Paradigms And Language Design concepts
Programming styles and design mechanisms that shape APIs, state, errors, code generation, and boundaries.
7 pages
Reference page
Functional programming is a family of language and design practices centered on functions as values, expression-oriented code, composition, immutable data, explicit effects, and modeling behavior through transformations rather than shared mutable state.
Reference page
Object-oriented programming organizes programs around objects, methods, interfaces, classes, prototypes, or message dispatch, depending on the language.
Reference page
Immutability keeps values from changing after creation, while persistent data structures preserve previous versions through structural sharing instead of destructive updates.
Reference page
First-class functions can be passed, returned, and stored like other values, while closures capture variables from their surrounding scope.
Reference page
Error-handling designs vary between explicit error values, exception mechanisms, result types, panics, status codes, and mixed models that reserve different paths for different failure classes.
Reference page
Metaprogramming lets programs generate, transform, inspect, or execute code or program structure, while macro systems provide language-supported code transformation at compile time or expansion time.
Reference page
Modules and namespaces organize code into named boundaries for visibility, reuse, dependency management, documentation, and collision avoidance.
Tooling concepts
Ecosystem machinery for packages, builds, editors, formatting, tests, docs, and interactive work.
7 pages
Reference page
Package managers resolve, fetch, verify, build, install, publish, and version reusable code, shaping how a language ecosystem handles dependency risk and reuse.
Reference page
Build systems transform source into checked, tested, packaged, documented, or deployable artifacts while encoding dependency graphs and platform-specific build steps.
Reference page
Formatters standardize source layout, while linters and static analyzers flag likely bugs, style drift, portability issues, or project-specific policy violations.
Reference page
Language servers and editor tooling expose parsing, diagnostics, completion, navigation, refactoring, formatting, and semantic understanding across editors.
Reference page
REPL and interactive development workflows let programmers evaluate code incrementally, inspect results, explore APIs, and shorten feedback loops.
Reference page
Testing culture is the set of language tools, defaults, libraries, conventions, and community expectations around verifying behavior before release.
Reference page
Documentation culture is how a language ecosystem writes, generates, tests, publishes, versions, and maintains reference material for users and contributors.