Habitability can be limited by various things; abstraction being one of them. Many of my comments about abstraction also apply to encapsulation, which is a. One bad eff ect of abstraction on programs occurs when it is taken too far. One bad eff ect of abstraction on programs occurs when abstraction is taken. This results in code that is structured like a big web, in which groups of. In such large tangles lies one of the problems.
|Published (Last):||16 September 2017|
|PDF File Size:||20.36 Mb|
|ePub File Size:||12.61 Mb|
|Price:||Free* [*Free Regsitration Required]|
Buy at amazon. I was strongly attracted to the author because of his fame in the Lisp community, and because I usually highly value ideas from the Lisp community. Reading this book is one big disappointment. In two sentence summary: the book appears to be an old crank's rambling on software issues and personal bearings. Nothing of technical value, and the insights are of dubious or trivial value. A bit about the content: First of all, this book does not teach the least bit of science or programing.
It is rather an incoherent commentary on several aspects related to software, and the author's life stories. The whole book is written in prose style, containing 0 lines of actual code. If you thought this book is a non-technical book that one might learn something about the latest programing methodologies as the title might suggest , you are wrong. Rather a fit title given the author's fame. The book is written completed around , as hinted in chapter 5. The book is divided into 5 chapters, about pages: Introduction by Christopher Alexander Preface 1.
Patterns of software. What we do. What We Do Writing Broadside 4. Life of the critic. Into the ground. Following that is a review of the book as a whole. Chapter 1 Patterns of software is the most relevant to programing of the whole book. Basically, it is a series of commentaries on issues related to programing methodologies.
In particular, a non-critical criticism on object orientated technologies. Although this is the largest part of the book, but I think it is also the most worthless. I did not read the book in order. I started at chapter 2 because it seems most interesting , then 3, 4, parts of 5, then back to 1. By the time I'm reading chapter 1, my enthusiasm for the book has fallen from fanatic to almost uninterested. Thus, the last 3 sections in chapter 1 I have only scanned in order to write this review with a moral sense of completeness.
The unintelligibleness of chapter 1 feels like reading Taoism, except that the truism isn't there. Chapter 2 Languages is a 30 pages haphazard comments on some aspects of languages. Again, it is not a report of some scientific study.
It is only the author's thoughts, outlooks, and predictions. I'll give an example of the chapter's theme, so readers not familiar with the term may get some idea. The author lists four elements for a language to flourish.
I'll briefly go over each. By the author's first criterion, for example, Java or Perl would be more popular than, say, Dylan or Python. The previous two are based on widely popular C or Unix tools, making them much easier to accept than the latter, even if the latter two are technically superior. By the second criterion, for example, C is good because it requires little resource, while Lisp is bad because it requires large resource relatively.
By criterion 3, it means that the mathematical model the language is based must be simple. For example, C is the simplest because it is close to assembly, while Prolog, Lisp, or Java have complex performance models. By criterion 4, for example, Lisp is very bad because it requires some mathematical sophistication For example, lambda functions, recursions, and so on. C is good because it's as simple as manipulating beads on an abacus.
I think if we look at the facts, any well-read person will agree that these are good criterions on judging whether a language would be popular at present time. However, will they be the characteristics of language popularity in the future? The author believe so, and the chapter's climax predicts that C will be the last programing language. Chapter 3 What we Do are divided into two sections.
In particular, he emphasized studying poetry and engaging in writing workshops. This chapter failed to convince or persuade me in any way.
The story of Paul Zimmer seems laughable and unrelated. Chapter 4 Life of the Critic is a short autobiography of author's life in academy from teens to up to about age This and next chapters seems to be the most valuable of the whole book.
Chapter 4 candidly tells how the author grew up in an unimportant town as a poor nobody, missed the chance of going to Havard through an incident with a lousy and nasty high school teacher, and how he by hard work and some luck, went to MIT, UIUC, and lastly obtained a Ph. Chapter 5 Into the Ground is the continuation of author's biography, where he narrates the start and fall of his Lisp company Lucid Inc.
Throughout chapters 4 and 5, the author gives hindsight along the narration. In particular in chapter 5, the section Money Through Innovation Reconsidered 13 pages is a detailed explanation of why worth-is-better is better. The author uses classic examples like Macintosh vs PC, success of Microsoft, Japanese vs American car industries… and analogy to theory of evolution to persuade the reader that worth-is-better is not just better in practice, but also in theory.
The Right Thing philosophy is categorically condemned as being unfit for survival. This is in fact the main theme of the whole book. We may divide the book into two parts. One is the author's views on software engineering issues, the other is his biography. The value of the second is intrinsic, thus it needs not be assessed.
I'll focus on his views, and the overall quality of the book. First, about his writing quality. We learned from chapters 4 and 5 that the author has strong interest in writing since teens, and has seriously engaged in writing and poetry writing starting on Clearly, he is infatuated with poetry. His writing style is illogical and imprecise, yet failed to be clear.
There are illogical literary writing styles with exemplary clarity and excellence, but I judge the book's writings to be very low quality. Sentences' grammatical structures are very complex without being artful.
Sentences are often much longer than normal. The structure of content is not well-organized by paragraphs. Ideas and passages are sometimes repeated in sections or in chapters. The arguments are not convincing. One gets the feeling that the author kicked in too much flavor of poetry haplessly. The physical aspect of reading of this book has not been a pleasant experience.
With respect to the author's views on software methodologies, it appears that he has succumbed to fashionable mediocrity. Instead of pushing for austere mathematics, he talks about what pleases people. Instead of encourage people to study more math and science, he goes the other way around, saying that languages and methodologies should not be based on math but to suit average programer's intellects. It is not clear to me which goal he has in mind: 1 To enrich and improve people's lives for both programer and user in the general sense as a contribution to human kind.
If the goal is latter, then much of what he said is sensible, at least at present. That is, language and software should be based on the worse-is-better philosophy, which will result in speed, ease of porting, smallness, virus-modeled popularity, and will get people hooked on for perpetual improvements and mutation. Even then, I doubt that worse-is-better philosophy's survivability will beat The Right Thing in the next 10 years.
If his goals is 1 , then his views are muddled. There is a saying, that Computer Science CS is as much science as fluid dynamics in plumbing. Today we have so much confusion in computer science is partly due to the infancy of the field, and partly due to the ease for laymen to entry.
Open a college student's science textbook, it is amazing that the most abstruse facts of nature are explained in perfect detail.
Particles smaller than visible light wavelength are measured and classified, the age of universe is estimated, and abstract ideas in math so advanced that it takes years of training just to be able to imagine it.
It is worth noting that each chapter represents years of knowledge. If we ignore the hardware part of computer science, then it reduces to mathematics. The math for CS is only 50 years old.
The confusion is understandable. In analogy, the state of physics of ancient times is as much a science as plumbing in their time. On the other hand, it is very likely that CS 50 years from today will be so advanced to be barely recognizable. The author's comments are mainly about human psychology towards software. He discusses or summarizes people's habits in programing, language productivity statistics, preference of syntax, small vs large languages, pitfalls of object oriented programing…etc.
These issues are of superficial nature in CS. The only real progress in CS in the long run is by solving math problems. The short term solution is to educate programers. Teach them algorithms, algebra, symbolic logic, discrete math, or even scientific philosophy. Teach them to think independently and logically, so the quality of the corporate programer as a whole can be improved, and the worse-is-better pest can decrease. In the subject of human psychology to software technology, there are nobler approaches, in either scientific direction or observational.
The author's comments read like crackpot's.
Patterns of Software - Dreamsongs
Book Review: Patterns of Software