4 ms·
Thanks for the article. Regarding the article which talks about multicore. Multicore and distributed systems are hard. Behaviour implementation, and transformi
by samsquire 3y ago
Thanks for the article.
Regarding the article which talks about multicore. Multicore and distributed systems are hard. Behaviour implementation, and transforming event sequences across multicore and multimachine consistently is the hard part of computing for me (distributed systems). And understanding large existing systems such as Chromium, Firefox or GCC. Any enterprise K8s cluster with operators everywhere. That's a lot of code.
This is just my thoughts, I find it easier to write code than read large code bases because like trying to understand a very large mathematical formulae in one go. You cannot even get the entire system into a screenful to understand it, like you could potentially a small formulae. I have to break it out into ordered steps to understand mathematics. They're like an object in the mind that you interact with intuitively. My mental model is the key driver to the act of programming. I sometimes get the mental model right and serialise it into code. Writing is an expression of thoughts and there is a thought that gets turned into notation. Do either of them (thought,notation) represent the other losslessly?
I once used OpenGrok, a web based sourcecode repository viewer to tell myself I would try reading and understanding a large code base.
The semantics of programming languages have an impedance mismatch to how my mental model works.... I have mental models about relational databases and what is fast on a computer. And then there is behaviour, state and IO to work with.
I could change my mental model to match the programming language semantics on the computer but I would probably be less happy that way.
I feel programming languages such as C++ and Rust and Haskell introduce abstractions that work with a certain mental model of solving problems, but not everyone has the same mental model. They work great for the compiler codegen writer, but not for implementing behaviours.
If you've ever worked in a enterprise Java codebase or a frontend software React codebase, from my perspective they're a mess because of the imposed semantics of the language and false problems of trying to get the computer to have the right sequence of actions or behaviour sequence.
- kjkjadksj 3y agoTrying to figure out someone elses code is usually like being told to go into a strangers house and find where the hammer is. And your boss expects you to know where exactly it is as if there’s any standard to how different people organize their lives or thoughts.