3 ms·
> the core challenge of programming is to write code that inexperienced people can understand quickly This is a pipe dream. For anything significantly non-triv
by parenthephobia 10y ago
> the core challenge of programming is to write code that inexperienced people can understand quickly
This is a pipe dream. For anything significantly non-trivial, programming is inherently complex. Designing the language so that code is forced to be "simple" at the lowest scale just pushes that complexity up to larger scale code structures.
Trying to make programs easier to understand by limiting the expressivity of the language is like trying to make quantum physics easier by reformulating it without using complex numbers. Whilst it may well make each individual step of a calculation easier to understand, it doesn't make the whole any easier to comprehend.
- erikpukinskis 10y agoI agree you can't force code to be simple with a language. Writing simple code is an art, and a cultural practice. I disagree strongly that code in non-trivial systems must be inherently complex. Complex code can be broken into simple pieces, but it takes time to find the abstractions. I spend at least as much time making my abstractions better as I do making things work. Many managers won't let you take that time. > Whilst it may well make each individual step of a calculation easier to understand, it doesn't make the whole any easier to comprehend You're used to the notion that programmers must keep entire codebases in their head because that's the norm: leaky abstractions where any part of the codebase could have implications for any other part. That how we in the tech world tend to build things in 2016. You need to understand the whole before you touch any part of it, or you'll likely break things. But when you find the right abstractions, you don't need to understand the whole codebase to get things done. In fact, that's how you know your abstraction is good. You stop seeing problems that span it.