Programming
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.