Programming

On this page

Programming is the craft of writing instructions a computer can execute reliably. Good code is correct first, readable second, and clever last — in that order.

Overview

Every program comes down to three primitives: sequence, selection, iteration — and a way to package them (functions, classes, modules). Most of what makes a codebase maintainable is naming, structure, and tests, not language choice.

Paradigms

  • Imperative — step-by-step state changes (C).
  • Object-oriented — encapsulation, inheritance, polymorphism (Java, C#).
  • Functional — pure functions, immutability (Haskell, Elixir, F#).
  • Procedural / structured — functions over data (Go, classic C).
  • Declarative — describe the result, not the steps (SQL, HTML).
  • Concurrent / async — threads, coroutines, actors, channels.

Common Languages

  • Systems: C, C++, Rust, Go, Zig.
  • Application: Python, Java, C#, Kotlin, Swift.
  • Web: JavaScript, TypeScript, PHP, Ruby.
  • Data & scientific: Python, R, Julia, MATLAB.
  • Industrial: IEC 61131-3 (Ladder, ST, FBD), G-code, RAPID, KRL.

Fundamentals

  • Types — primitive, composite, generics.
  • Control flow — if/else, loops, recursion, exceptions.
  • Memory — stack vs heap, pointers vs references, GC vs manual.
  • I/O — files, sockets, stdin/stdout, async vs blocking.
  • Concurrency — threads, locks, channels, atomics.

Tooling

  • Editors / IDEs: VS Code, JetBrains, Vim/Neovim, Emacs.
  • Version control: Git (+ GitHub, GitLab, Bitbucket).
  • Build / package: npm, pip, cargo, Maven, Gradle, Make, CMake, Bazel.
  • Test: pytest, JUnit, Jest, Go test, RSpec.
  • Lint / format: ESLint, Prettier, Black, Ruff, gofmt, clang-format.

Good Practice

  • Small functions; single responsibility.
  • Explicit over implicit; name things for what they mean.
  • Fail fast — validate inputs at the boundary.
  • Test the contract, not the implementation.
  • Code review is the highest-ROI quality activity.
  • Commit small, commit often, with clear messages.
reference page