It’s late Sunday night which means this week has already started. But I’m not too worried because so far I’m off to a pretty good start, work-wise. I’m really glad I took the time today to be as productive as possible; I know that this will make getting through the workload this week much easier. The more I read CS, the more interested I become in it.
I got through 100+ pages of the Bryant book (this one), which I’m pretty proud of, because that stuff is hard. It took me a while to really understand what was going on and I can’t say I understand it all, but I get the overarching concepts pretty well. It’s pretty incredible how much a computer does even when interpreting a simple input from the user or even just a routine OS exception that a program throws. Reading about all the different ways a computer maximizes its output while minimizing its time taken, the key optimizations necessary to let programs run at acceptable speeds; I can’t help but wonder how these ideas ever first occurred to someone decades ago. Just to understand what they’re saying, after several levels of simplification, is a challenge for me. I’ve wondered for a really long time how the lowest-level interactions between hardware and software are dealt with. We’ve cringed over how messy such simple C programs that involved calls to malloc() and free(), whereas even these are very high level compared to how things are actually done. Of course, reading about Knuth’s contributions to the development of efficient malloc() implementations (of first-fit as compared to best-fit) have only served to increase my admiration of him. It’s magic, what these guys do.