Tuesday, October 7, 2014

The Pattern on the Stone - by W.Daniel Hillis Brief Comments

The Pattern on the Stone is a very interesting book.  It accomplishes its purpose of describing “the simple concepts that make computers work”.   It carries the reader from the fundamental concepts of computing, explained in a simple, interesting and clear way, to the threshold of the future, when computers could build themselves, learn, think and – maybe – feel as a living being!
Let me highlight some strong points and also some opportunities for improvement I think I saw.


Universal Computer, Building Blocks, Boolean Logic, Finite State Machines
I found these initial chapters one of the best parts of the book.  In the Preface, the author already introduces the idea that a computer can be built of several materials, not necessarily electronic, since their essential nature transcends technology. 
I had heard about “biological computers”, for example, but did not really understand how it could work until I read the book and its explanations about the Universal Computer.  The examples the author provides with pipes and valves and with strings and sticks are simple and provide a complete understanding of the basic concept.

Programming
I think the programming classes our teacher Russel Feldhausen gives us are better than the book's explanations about programming.  The explanations are not bad, but are outdated, and does not cover all programming language paradigms.  Being a basic book, it could not mention Functional Programming, Logic Programming or Symbolic Programming (see http://en.wikipedia.org/wiki/Programming_paradigm ;  see also http://people.cs.aau.dk/~normark/prog3-03/html/notes/paradigms_themes-paradigm-overview-section.html ).  But I think it could describe a simple Declarative Language as, for example, SQL.  And I felt that this part of the book lacks examples as good as the initial chapters.  I’m not sure if somebody can actually understand how a procedural program works just based on the book.

Algorithms and Heuristics
Again, a series of chapters that I enjoyed the most!  The book explains how heuristics makes  possible dealing with “un-computable” problems, using search spaces and hill climbing method.    
I found remarkable how heuristics moves computing out of the “true or false” terrain, into the land of “educated and well-considered guesses”.  That brings computers operation a lot closer to human being’s reasoning – and, thanks to Daniel Hillis, now I know how this is done!

Parallel Computing, Machine Learning, Neural Networks, Simulated Evolution
These chapters are not so easy to read – and understand – as the initial ones.  These difficulties would be expected, since the subjects are more complex.  But the author did a good job explaining the fundamental concepts and providing examples.  The description of the creation of “sorting programs” thru “evolution” amazed me!   “Simulated Evolution” producing programs more efficient than the author could write, and, furthermore, programs that he cannot understand how they work?!  That’s something to think about!  I’m not sure if I’m amazed, scary, or both!

  
A final remark over Analogic Computers
I felt the fact that difference between analogic and digital computers is not just of precision could have been emphasized.  The difference in precision can even be irrelevant, as the author points out.  What he does not highlight is that an analogic computer is comparing actual objects, is measuring the real world, and a digital computer will always work with symbols.  I’m not saying that one is better than another, I’m just saying that they are different in this fundamental way.  Since the focus of the book is digital computers, it’s understandable.  But I like to highlight that everything inside digital computers is virtual.  Abstractions, symbols, not the real world.  And due to the high importance digital computers affect our lives in real word, it could be wise to keep this in mind!




No comments:

Post a Comment