Computer science no longer imtimidate me.

I just finished reading the book, Structure and Interpretation of Computer Programs, aka SICP, 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 way better to read. The JS edition is almost the same but replacing Scheme with JavaScript and using modern terms.

So what did I learn? Can’t say there’s a lot to be honest, because I didn’t remember much about the examples from the book, but truly got something. I’m being more familiar with recursion, and programming language is no longer mystery black box to me after finishing the first three chapters, these various operations are just syntactic sugars in some way. 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.

Most important, it told me that computer systems are all about abstractions, layer by layer. Don’t intimidate yourself with some kind of fancy imagination because of that “fear of the unknown” kind of feeling, if something make you feel like magic and complicated, just remind yourself it must be derived from some very basic machanisms. I wish I could learn this fact more earlier.

I’ve heared about SICP for 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, searched for books, but with no luck. Once I read about this advice “Learn at least one new language every year” from the book “The Pragmatic Programmer”, not helpful, for me, I could only scratch on the surface from a new language, repeat with similar operations and functions with little variations again and again without deeper understanding.

Then 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 things went well.

The next book is CSAPP, to be contined.