Alan Kay: “What books would you recommend reading to someone who studies Computer Science?”

Original author: Alan Kay
  • Transfer
In short, I would advise you to read many books that are not related to computer science.


It is important to understand the place that the concept of “science” occupies in “Computer Science” and what “engineering” means in “Software Engineering”.

The modern concept of "science" can be formulated as follows: it is an attempt to translate phenomena into models that can be more or less easily explained and predicted. On this subject, you can read "Sciences of the Artificial" (one of the important books of Herbert Simon). You can look at it from this point of view: if people (especially developers) build bridges, then scientists can explain these phenomena by creating models. The most interesting thing about this is that science will almost always find new, better ways to build bridges, so that friendly relations between scientists and developers may well improve every year.

An example of this from Computer Scienceis John McCarthy thinking about computers in the late 50s, that is, about an incredibly large range of what they can do (maybe AI?), and creating a computation model, which is a language, and can serve as your own meta-language (Lisp). My favorite book on this topic is The Lisp 1.5 Manual by MIT Press (author McCarthy et al.). The first part of this book is still a classic of how to think in general and about information technology in particular.

(Later, the book “Smalltalk: the language and its implementation” was published, the authors of which (Adel Goldberg and Dave Robson) were inspired by all of this. Also contains a complete description of the practical application of the project, written in the Smalltalk language, etc.).

I really like the book “The Art of the Metaobject Protocol,” authored by Kikzalez, Bobrow and Rivera, published even later than the previous ones. She is one of those books that can be called "serious computer science." The first part is especially good.

Another 1970 scientific work that can be considered a serious Computer Science - “A Control Definition Language” by Dave Fisher (Carnegie Mellon University).

It may seem that my favorite book on computer computing (computing) is far from the IT sphere, but it is wonderful and it is nice to read: “Computation: Finite and Infinite Machines” by Marvia Minsky (circa 1967). Just a great book.

If you need help with “science” (“science”), I usually recommend a lot of books: Newton's Principia (the basic scientific book and constituent document), Bruce Alberts’s The Molecular Biology and the Cell, etc. Or, for example, with Maxwell records, etc.

You need to realize that “Computer Science” is still a striving to achieve, not what has been achieved.

"Development" ("Engineering") means "designing and constructing things in a principled expert manner." The required level of this skill is very high for all areas: civil, mechanical, electrical, biological, etc. Development.

This aspect should be carefully studied to better understand what it means to engage in “development” (“engineering”).

If you need help with "engineering" ("engineering"), try to read about the creation of the Empire State Building , Hoover Dam , the Golden Gate Bridgeetc. I like the book "Now It Can Be Told", written by Major General Leslie Groves (honorary title of the Manhattan Project). He is an engineer, and this story is definitely not about the Los Alamos POV project (which he also supervised), but about Oak Ridge, Hanford, etc., as well as the amazing attraction of more than 600,000 people and huge amounts of money to carry out the design needed to create the right materials.

In addition, think about the area in which there is no “software engineering” part - again, you need to understand that “software development” in any “developmental” sense remains, at best, a desire to achieve, and not an achievement.

Computers are also a kind of "media" and "intermediaries", so you need to understand what they do for us and how they affect us. Read Marshall McLuhan, Neil Postman, Innis, Havelock, etc. Mark Miller (comment below) just reminded me to recommend the book Technics and Human Development, vol. 1 of the series “The Myth of the Machine” by Lewis Mumford, the great predecessor of both media ideas and an important aspect of anthropology.

It is difficult for me to advise a good book on anthropology (maybe someone else will do it), but understanding people as living beings is the most important aspect of education and should be thoroughly studied. In one of the comments below, Matt Gabury recommended the Human Universals (I think he means Donald Brown's book). This book should certainly be read and understood - it is not from the same shelf as books about a particular area, such as Molecular Biology of the Cell.

I like the books of Edward Tufti from the Envisioning Information series: read them all.

The books of Bertrand Russell are still very useful, at least in order to reflect more deeply on “that and this” (“A History of Western Philosophy” is still amazing).

Many points of view are the only way to fight the human desire to believe and create religions, so Tamima Ansari's Destiny Disrupted is my favorite history book. He grew up in Afghanistan, moved to the United States at the age of 16, and is able to write a clear, enlightening history of the world from the time of Muhammad from the perspective of this world and without unnecessary appeals to believe.

* POV (propagation of variance) - the spread of inconsistencies in the testimony.

The translation was made with the support of the company EDISON Software , which professionally writes software for IoT on an urban scale , as well as develops software for new scanners .

Also popular now: