how to speed-read the book EOPL
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:
- 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. - Also we can manually run the tests code in file
test.scm
separatively such as run(run "-11")
and-(-(44,33),22)
in order todeliberate over the implement code ofrun
. - As long as we are trying to dive the code deeper and deeper, we would have to use
trace-define
provided byracket/trace
andreport/file
provided bysugar/debug
to conveniently observe behaviour the of code. Like using(trace-define value-of ...)
and(run "1")
(run -1)
(run -(1, 3))
to checkvalue-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.