Software and Mind: The Mechanistic Myth and Its Consequences
softwareandmind.com
softwareandmind.com
> while we can easily recognize a familiar face, we cannot describe that face precisely enough to enable someone unfamiliar with it to recognize it as easily as we do (see pp. 110–111). Thus, when we know a face, we possess a type of knowledge that cannot be expressed as methods or rules. We can readily use this knowledge, but we cannot explain how we do it. What this means is that the only way to acquire this knowledge is by allowing it to develop in our mind; we cannot acquire it by learning some facts. [...]
> [...]
> For a phenomenon that is a complex structure, the only exact representation is the phenomenon itself.
Here the human inability to directly introspect on how we recognize faces is explained as an underlying facet of reality. A fact about faces, instead of a fact about the limitations of our mental architecture. That's why no one has ever been able to write facial recognition software that works even a little bit /s.
It would be wrong for me to say the book is not worth your time, because I haven't read enough of it to make that judgement, but I can honestly say I expect it to not be worth my time.
(Also I want to complain about a minor error the author keeps making again and again: stating that scientific explanations form hierarchies. This is simply wrong. The graph of we-use-X-to-explain-Y isn't a tree, it's a directed acyclic graph. For example, consider jet airplanes, chemistry, aerodynamics, and physics.)
It seems like the author realizes that behavior of complex and chaotic systems is really hard to reason about and model accurately (he calls out sociological systems, which also are lovely and heterogenous), and I guess reasoning about complex software is similar. Sure. But he tries to parlay that into a quasi-spiritual characteristic of the systems rendering them immune to simulation, instead of a limitation of our current capacity to efficiently construct models.
To pick out three things:
> Mechanism holds that every aspect of the world can be represented as a simple hierarchical structure of entities. But, while useful in fields like mathematics and manufacturing, this idea is generally worthless, because most aspects of the world are too complex to be reduced to simple structures.
Without trying to manage complexity, it becomes impossible to build real systems.
> Software, the book argues, is a non-mechanistic phenomenon. So it is akin to language, not to manufactured objects.
Well, yes, to a degree. But if you arbitrarily change a word in a 1000 page book, the book will not fall apart. If you do the same in software, most likely it will stop working. This is because there is much less dependence between sentences in natural language and the dependence is redundantly spread over many pages.
> The software elites have turned software into a weapon, a means to dominate and control society.
Sounds like a conspiracy theory too me.
Judging from the description, I also think the book lacks perspective. It's what a software engineer might expect the world to be, if he lives under a rock. Most of the world is doing just fine, and is just somewhat affected by software here and there.
>Without trying to manage complexity, it becomes impossible to build real systems.
Both of you are correct. The real world is too complex to be modeled, and without trying, you can't build a real system. The answer to the conundrum that real systems include humans, which can handle the hard-to-model parts.
The author appears to be using bombastic language to communicate what is actually a simple point. I see the technique used often. There's a method to the madness. It's the long-form version of "to get someone to give you a correct answer on the Internet, post a wrong answer rather than just ask." Spiritual books are often written like this. Without a blend of the overly pedantic and the utterly simple, the reader won't be compelled to dissect what the author has written and won't have the intended epiphany where the reader discovers it wasn't as simple as he thought.
Managing complexity is necessary for human designers and the limitations of their brains. Nature appears to be able to evolve more and more complex mechanisms by random mutation + Darwinian selection. It remains an open problem if there is an upper bound for the level of complexity that such a mechanism is able to generate.
> Well, yes, to a degree.
Any computation is equivalent to the operation of a machine (as Turing and Church demonstrated). A computer program is a representation of the configuration of a machine.
The problem is that people underestimate how deep the concept of machine is (for example, by not being aware of Gödel's work).
> But if you arbitrarily change a word in a 1000 page book, the book will not fall apart.
This is a property of a type of program (the typical type that humans create). Many algorithms are known that can be much more tolerant to random perturbations (e.g neural networks). It just so happens humans are better at designing linear, synchronous mechanisms.
Skimming through the book, personally I'm sympathetic to its approach and would probably learn much from it. (I happen to disagree with very many conclusions, but fine.) The discussion of irrationality and mana in dev seems useful... and morbidly hilarious.
I fully agree that this book is lacking in rational arguments. But I IMHO you are not using the phrase "conspiracy theory" correctly. There are a lot of conspiracies out there. E.g. the wage fixing between Google, Oracle and Microsoft is on the YHN front page today.
This guy is obsessed with hierarchies and taxonomies.
His rant on Software Irresponsibility, starting at page 828, has some good points. He starts out with "Partial or total software failures are such a common spectacle that they are now taken for granted. ... In most cases we know the actual individuals involved in its development, purchase, or installation; but we don’t feel that these individuals must be reprimanded, that they are accountable for their work in the same way that physicians, pilots, or engineers are for theirs. In other professions we have the notions of incompetence, negligence, and malpractice to describe performance levels that fall below expectations. In software-related matters, and particularly in programming activities, these notions do not exist."[1]
He has a point. Compare, say, the NTSB report on an aircraft accident with a DHS US-CERT report on a blatant software security hole. The NTSB will name names and assign blame. Careers can be ended and licenses pulled by those reports, even though the NTSB has no law enforcement power. Now look at a US-CERT report for a company which knowingly and willfully put a default password into millions of products. Was the responsible manager located and identified? Were there sanctions against the company?
A point I've made about security bugs in open source - who put them there? That should be made known, and it should be a significant career setback. Yet the identities of those at fault are seldom mentioned.
[1] http://softwareandmind.com/extracts/Software_and_Mind.pdf
http://www.ntsb.gov/investigations/AccidentReports/_layouts/...
http://www.iainmcgilchrist.com/The_Master_and_his_Emissary_b...
As far as philosophy, the philosophers most closely associated with science and the 'New Atheists', e.g. philosophers Dennett, Churchlands, adopt more sophisticated versions of these philosophies but I'd still call them a variety of reductionist/logical positivist.
http://www.scientificamerican.com/article/a-meta-law-to-rule...
What I essentially see in this is a reminder -- that it is easy to conflate how we look at something with what something actually is.
This is why it is important to be able to step back and understand how you are thinking about a phenomenon, and to generally cultivate an internal library of different methods of thinking.
https://www.kirkusreviews.com/book-reviews/andrei-sorin/soft...