March 16, 2026
Method war, code scars
Methods in Languages for Systems Programming (2023)
Programmers are feuding: Should code have “buttons” or stay bare
TLDR: A messy-but-relatable blog about “methods” in new low-level languages sparked a split: convenience fans love clickable, easy-to-find functions on data, while purists and hardware-minded folks say keep procedures separate. It matters because the next-gen systems languages are choosing sides, and developer ergonomics vs. bare-metal clarity is on the line.
A frazzled blogger hit publish on a messy, meme-y post about “methods” — the little functions attached to a piece of data — and the dev world lit up. With new low-level languages popping up, some like Odin and Hare skip methods, while Zig leans in. Cue the comments cage match.
Team No-Methods came in swinging. User cv5005 grumped, “Why is the first thing so special?” — translation: why should one part of the data get VIP treatment? Others echoed that in systems work (think hardware and operating systems), the data’s exact layout is king, so bolting on cute buttons is a distraction. As stmw put it, the bits are “primal,” so use plain functions. Team Methods fired back with pure practicality. 12_throw_away called it grug-brained “this makes my life easier”: methods make autocomplete pop, docs simpler to scan, and code read like a sentence instead of a math problem. Meanwhile, miguel_martin poked the “data and code must be separate” mantra as more mindset than law.
The mood? Spicy but fun. Jokes about “10 levels of parentheses yoga,” cries of “just give my data buttons,” and a few classic “keep it simple, C-people” barbs. Even Redis legend antirez is team “give C methods,” stirring the pot. It’s a vibe: convenience vs. purity, designer ergonomics vs. hardware reality — and nobody’s backing down.
Key Points
- •C commonly organizes data and related operations by pairing a struct with functions and prefixing names to emulate methods.
- •The article demonstrates this with a dynamic array example and namespaced function names (e.g., array_init, array_push).
- •This struct-plus-prefixed-functions pattern is observed in major C projects such as Redis, XNU, Neovim, Curl, and Nuklear.
- •Among newer systems languages, Odin and Hare omit methods (Odin’s FAQ argues for separating data and code and using procedures).
- •Zig and C3 include methods; antirez (Redis) argues C should support simple struct methods with an implicit self pointer.