Naive implementation is easy, but there are many ways to improve performance.
Naive implementation is easy, but there are many ways to improve performance.
Reading SICP it's the 'easy way' and the Joy docs plus trying to code even simple as a quadratic eqn solver it's a deep, hard task which requires lots of knowledge on cathegory theory.
Systems software has to deal with a lot of physics and engineering stuff (speed of light, power, heat, mean time to component failure, etc, etc.)
The biggest issue is that a lot of "Computer Science" is really applied software engineering; much like confusing physics and mechanical engineering.
Or, a different way to say it: Most students studying "Computer Science" really should be studying "Software Engineering."
More practically, I have a degree in Computer Science. When I was in school, it was clear that most of my professors couldn't program their way out of a paper bag, nor did they understand how to structure a large software program. It was the blind leading the blind.
I had ONE class that was about Software engineering.
Meanwhile I had an entire years worth of curriculum that was just "Go take various unrelated science and math classes so you have a strong understanding of the fundamentals in both science and math"
People so often generalize their very specific college experience to the entire world. Meanwhile you'd be lucky to find a consistent college experience just from crossing state lines.