Computer science no longer imtimidate me.

I just finished reading the book, Structure and Interpretation of Computer Programs, not the original one, but the JavaScript Edition, took me about 4 months. I started from the original version, but kept feeling frustrated about the syntax of Scheme and those outdated jargons, so I switched to the JS Edition since the middle part of chapter two, it’s much easier to read, although I don’t kinda like JavaScript.

So what did I learn? Can’t say there’s a lot tbh, because I didn’t remember much about the examples from the book, but truly get something. I’m being more familiar with recursion, and programming language is no longer a mystery black box to me after finishing the first three chapters. In the last two chapters, it give me a chance to glance at inside of interpreter and compiler, even hardware. I did not fully understand, however, it opened my eyes, way more than I thought.

Most important, it tells me that computer systems are all about abstractions, layer by layer. If you can’t understand something, just ignore it for a moment, treat it as a magic black box, and focus on the higher level above it, then go back when you feel more confident. Don’t intimidate your self with some kind fancy imagination because of that “fear of the unknown” kind of feeling. I think this should be the first thing learned by a novice, so to speak, every programmer should read this book. However, it’s not much friendly to beginners, especially for self learners like myself. Then when is the right time to read it? Let me tell you my experience.

I’ve heared about SICP for like seven years, tried several times but got intimidated during the time until these days. Why did it work this time? Because I felt hitting a plateau, and want to change. More specific, as a programmer, I can handle my daily job, but can’t understand the low level details. Tried to find a way to improve, search for books, once read about this advice “Learn at least one new language every year” from the book “The Pragmatic Programmer”, not helpful. I’m sure it won’t work on me, even I do as it says, I could only scratch on the surface of those languages, learning similar syntax with little variation over and over again.

I realized my problem is lacking of some kind of fundamental systematic knowledge, so I searched for resources about self learning computer science, led me to this website teachyourselfcs.com, the subjects they suggest are convincible, and SICP is the first book they suggest to read. Then, finally, I decided to follow this guide, seriously, with patience, and I was doing well.

The next book is CSAPP, to be contined.