how to speed-read the book EOPL

/ racket, 教程

Cast my mind back to the first time I learn programming, around that time I was struggling to figure out all the ingredients about programming through reading books, back then I remember the boring feeling so clearly. Eventally I was obliged to give up the reading and tried to learn programming through directly writing code to resovle tiny problems I’d confronted.

Feeling hard to go on reading

At the moment I’m reading the book EOPL and as a matter of fact I treasure my time so much, I don’t want to waste my time just sitting in front of my desk with staring at the charaters of this book in one hour but absorb nothing back to my brain.

This is a comparable feeling just as striking as the time I was learning programming like I mentioned, and which feeling I have to tackle with it now.

How to speed-read it

I notice that a large part of the reason I can’t go on reading is originated from the boring feelings of the formulas throughout the book especially the first two chapters.

I don’t know others, but the formulas are always my drawbacks, it frustrates me, I’m not capable to adapt that, I do it terribly and actually I never do very well in the formula stakes, it’s toxic for me.

Another thing rapidly declining immense amount of my passion and impetus is the perpetual vague feeling of the wordy content of this book.

As a concession to my drawbacks of formulas and also to alleviate my vague feeling, I decide to resort to jumping into its source code and do the coding directly to counteract it. With taking advantage of my Racket coding experience, it is possible for me to combine the reading of this book with the reading of it’s source code.

As a result, this turns out to be tremendously useful to me. But it is premature to say I succeed because I haven’t finish it yet.

Take chapter3 as an example

Take a look at chapter3 of the EOPL book, it has three portions: LET PROC and LETRC. And the source codes of which are in: https://github.com/mwand/eopl3/tree/master/chapter3.

Dive in the let-lang directory, the top.scm is the main file:

  1. Run racket here to start up racket repl, and then type in (require (file 'top.scm')), and then type in (test-all) to run all the test suites.
  2. Also we can manually run the tests code in filetest.scm separatively such as run (run "-11") and -(-(44,33),22) in order todeliberate over the implement code of run.
  3. As long as we are trying to dive the code deeper and deeper, we would have to use trace-define provided by racket/trace and report/file provided by sugar/debug to conveniently observe behaviour the of code. Like using (trace-define value-of ...) and (run "1") (run -1) (run -(1, 3)) to check value-of function.

In this way, we roughly read the code and make ourself understand the code first, and then we read the corresponding book content of it, by this time we would notice we can read the book 10 lines one time just with a glance.