About how to read a book, or a program

I am reading the classical book "How to Read a Book" by Mortimer J. Adler and Charles Van Doren. This is the second time I read this book. Still very much I enjoyed the reading. This time, I slowed down the reading on analytical reading part. I am trying to find the correlation between reading a book and reading a program. I have considered the possibility to apply the method of reading a book to the procedure to read a program. For people who are interested in studying program by reading existing programs, they may see the benefit to use the following rules. Please note that the following italicized text is quoted from Adler's book titled "How to Read a Book".

I. Analysis: Rules for Finding What a Book is About
1. Classify the book according to kind and subject matter.
2. State what the whole book is about with the utmost brevity.
3. Enumerate its major parts in their order and relation, and analyze these parts as you have analyzed the whole.
4. Define the problem or problems the author is trying to solve.

The author of a program should have his readers in mind. Informative comments and well-structured, organized program components should be helpful for readers to understand what a program is about.
If a reader is able to understand the program, he should be able to use his own words to briefly describe the program, enumerate the major components (classes, objects, methods, etc.) It also should be clear to the reader what is the problem the program is targeting to solve.

II. Interpretation: Rules for Interpreting a Book's Content
5. Come to terms with the author by interpreting his key words.
6. Grasp the author's leading propositions by dealing with his most important sentences.
7. Know the author's arguments, by finding them in, or constructing them out of, sequences of sentences.
8. Determine which of his problems the author has solved, and which he has not; and of the latter, decide which the author knew he had failed to solve.

The second part is like the a further analysis following part I. For a program, the semantic meaning, which fortunately is unambiguous (it is more challenging to understand book terms, propositions, and arguments interpreted from book keywords,phrases, sentences, and paragraphs in contrast), is derived from program variables, methods, objects, messages, and so on.

III. Criticism: Rules for Criticizing a Book as a Communication of Knowledge
A. General Maxims of Intellectual Etiquette
9. Do not begin criticism until you have completed your outline and your interpretation of the book. (Do not say you agree, disagree, or suspend judgment, until you can say "I understand.")
10. Do not disagree disputatiously or contentiously.
11. Demonstrate that you recognize the difference between knowledge and mere personal opinion by presenting good reasons for any critical judgment you make.
B. Special Criteria for Points of Criticism
12. Show wherein the author is uninformed.
13. Show wherein the author is misinformed.
14. Show wherein the author is illogical.
15. Show wherein the author's analysis or account is incomplete.
Note: Of these last four, the first three are criteria for disagreement. Failing in all of these, you must agree at least in part, although you may suspend judgment on the whole, in light of the last point.


When a reader of a program is at the third stage, he is a critic based on his understanding obtained based on his study at the previous two stages. And also the reader's pragmatic experiences and computing knowledge are essential to avoid inane agreement or imprudent disagreement on the subject. At this stage, to agree or disagree, the reader should criticize by presenting good reasons. For example, the reader may provide alternative architectures or algorithms that could provide better results in terms of performance or reliability or cost with supporting arguments.

Still I am continuing my reading. Wish I have more to report soon.

Comments

Popular posts from this blog

25 Google Interview Questions

Convert LaTeX to HTML

Art of Software Development