Cloud Parts

Programming

How code is organized, and how it runs on many cores at once.

23 concepts · 42 technologies · 3 comparisons · 1 real stack

  1. Programming languages15 technologiesWhat actually separates one language from another in practice: how the code runs, when types are checked, who frees memory, and which styles of program and concurrency it makes easy.
  2. Static dispatchThe compiler decides which function each call runs, so the program jumps straight to it, or skips the call by inlining it.
  3. Dynamic dispatchThe function a call runs is chosen at run time from the object it’s called on, usually through a table of function pointers.
  4. Runtime virtual machines3 technologiesA program that runs other programs: compilers emit portable bytecode, and the runtime loads it, compiles the busy parts to machine code, collects garbage and schedules work on whatever machine it lands on.
  5. Foreign function interfaces2 technologiesHow code in one language calls functions compiled from another: both sides meet at the platform’s C calling convention, and glue code converts values and settles who frees what.
  6. Data structuresWays to lay data out in memory so the operations a program runs most are fast; you choose one by the operations you need and what each one costs.
  7. Purely functional data structures6 technologiesCollections that are never changed in place: every update returns a new version that shares most of its memory with the old one, and every old version stays valid.
  8. Object-oriented programming3 technologiesBundle data with the code allowed to change it into objects, and let callers ask an object to do something without knowing how it does it.
  9. Functional programming5 technologiesBuild programs from functions that take values and return new values, without changing anything else along the way.
  10. MonadsA wrapper type plus one rule for chaining steps, so the plumbing (missing values, errors, waiting, state) is written once instead of after every step.
  11. DRY: Don’t Repeat YourselfEvery fact a system knows should live in one place, so changing a rule is one edit; it is about duplicated knowledge, not about code that happens to look alike.
  12. Service layerPut business logic in stateless services, like `OrderService.placeOrder`, that load plain data objects, apply the rules, and save the result.
  13. Data transfer objects1 technologyA plain object that only carries data across a boundary (a network call, an API, a message), shaped for that trip rather than for the business logic behind it.
  14. Object-relational mapping9 technologiesA library that turns rows in relational tables into objects in your program and back, so ordinary code can read and save data without hand-writing every SQL statement.
  15. Errors and exceptionsHow a function reports that it couldn’t do its job, either as a value the caller has to check or as an exception that jumps up the call stack to whoever catches it, and why expected failures and bugs deserve different treatment.
  16. Optional valuesA type that says a value may be missing, so the compiler makes you handle “nothing” before you use it, instead of a null that crashes at run time.
  17. Base Class Library patternsThe few recurring shapes the .NET Base Class Library uses everywhere (`IDisposable` and `using`, `TryParse`, `Task`-returning `Async` methods, `EventHandler<T>` events, `yield` iterators), so every .NET type behaves the way callers already expect.
  18. MultithreadingSeveral threads of one program run at once, on separate cores or taking turns, all sharing the same memory.
  19. Amdahl’s lawThe part of a job that can’t run in parallel caps how much faster more workers can make it.
  20. Synchronous and asynchronous executionWhether a call makes its caller wait for the result (synchronous) or hands control back at once and delivers the result later (asynchronous), and the ways languages let code wait without holding a thread.
  21. Event loopOne thread waits on thousands of sockets at once and runs a short callback whenever one of them is ready.
  22. Binary parsing and encoding5 technologiesReading and writing bytes laid out in a fixed format, such as packet headers, file headers and firmware messages, without trusting what those bytes claim about themselves.
  23. UI libraries2 technologiesReusable interface parts: styled components you drop in and theme, or headless ones that handle state, keyboard and accessibility while you write the markup and styles.

Technologies

Grouped by the concept each one mainly implements

Commonly confused

See it in a real stack

Architectures that use programming concepts