It’s funny reading this, I can tell he’s struggled to solve a problem I used to explain on the first day to my Intro to Computers students: a lot of this technical information is interrelated in a web, rather than one concept leading to the next. Yet we are forced to learn it linearly. It took a lot of effort and experience teaching to resolve that conflict.
I think you can generalize this problem to just about any subject, or any kind of story telling. e.g. Herodotus' Histories has these digressions (I've sometimes seen them called 'pendants', which I really like), which can also be nested. i.e. time is not mapped linearly to the text, the text jumps around in time (and space) to provide context to the main narrative (and sometimes to provide context to the context). Digressions also appear in Homer.
So you can think of the story elements as a kind of graph that have to be flattened into a linear structure, and to perform this flattening well is the art of good story-telling.
I think I accidentally got a good order because of the ad hoc learning I did as a child. I first encountered Commodore/Apple II/IBM through text-mode games/Wordperfect/typing programs in from magazines, then > learned C which gave me an idea of how they worked > learned microcontrollers then understood how the keyboard and monitor worked and how to drive things like that > then logic, electronics and transistors to figure out how microcontrollers worked (and how to make sense of digital voltages) > finally the D-latch.
I do have to admit I had a multiuser OS sized hole for a while. The computers in my head were Harvard architecture RISC, generally programmed in assembly, and were driving pin voltages. But it was close enough.
So an accidental process of being introduced to things as black boxes, then opening the black boxes. Still linear, but backwards. Needless to say, I loved Code when it came out and gave away at least four copies. I would tell people who thought I knew a lot about computers "this book contains pretty much everything I know about computers."
I actually think computing lends itself well to that because it is built in layers. You can talk about how a layer behaves before talking about how it was made to behave that way. The problem I think people run into is that some come to think lower levels of abstraction are a waste of time from a combination of pragmatism ("I don't care how it works") and sour-grapesism ("I don't know how it works so it doesn't matter.")
Very true. One of the most effective approaches for learning math is reviewing the same material multiple times, at different levels of depth. This is what is usually done for math competition training and it's night and day compared to the usual "multiplication tables => polynomials => precalc => calc..."
A similar approach to teaching CS isn't too far fetched.
Yes, aka "progressive encoding." Like a JPEG file that gets clearer and clearer as each chunk is transferred.
Start with a introduction and summary of each related discipline. Go back to the beginning and build another layer on top, with as many iterations are necessary.
Charles Petzold is a God of technical documentation. His "Programming Windows" is a masterpiece of clarity and exposition. Also was the foundation of my 27-year old company.
I wish he would write a book on TCP/IP and Internet Protocols.
Is "Code" a good Christmas present for a technically/scientifically minded friend who is novice in computing or are there other better books that are more in pop-science style?
"Code" should be made mandatory reading for every "educated" individual.
It is often frustrating to meet otherwise intelligent people who have the most outlandish ideas of "What a Computer IS" and "How it Works". The invention of the Computer was truly a Quantum leap in Human Civilization. Today the World literally is run by Computers and it is most important that everybody gets the proper idea of what this "Machine" is with its Capabilities/Limits.
I think it'd be great. It a great way of building knowledge until someone is able to understand how a computer works. It's very approachable and requires next to no preexisting knowledge.
Yes. This is one of the greates book and overview for computer science. It's well written and deep enough not to be trivial, but not too deep to be boring or homeworkesq.
From someone who's read the 1st edition, what age would this be suitable for? From CP's description it didn't sound like it needed any advanced knowledge to read. I'm wondering if I could get my kids interested in it
I'm reading it to my nine year-old, a chapter at a time. He is likely technically capable of reading it himself but he doesn't have the focus to get through more than a page or two on his own. But he likes spending time with me no matter what we're doing and he is having no problem understanding the concepts in the first few chapters so far. He particularly loves (re-)inventing practical applications for the concepts being introduced, like the flashlight telegraph.
Some parts of this book could be read/shown to a 5-year-old. We're talking simple battery-to-switch-to-lightbulb wiring diagrams, colored in red when the wires/bulbs have power (quite a nice touch when showing this to those new to the subject). This methodology continues in the sections on logic gates so you can clearly tell what line has a logic one for instance, causing a bulb to light up. The book is awash in plentiful diagrams that range from very simple to fairly complex. The complexity seems to be hinged carefully on relevent predecessor diagrams, so nothing out-of-the-blue is thrown at the reader.
> I don’t know if this chapter will satisfy anyone, but one of my big hopes is that someday someone will write a book much like Code but about the Internet. I’m not going to do it. But if you do a good job, I will certainly buy a copy.
Does anybody know if there is anything that comes close to this right now?
1) Internet System Handbook by Daniel Lynch and Marshall Rose - Classic oldie laying out the protocol foundations of the Internet.
2) Internet Architectures by Daniel Minoli and Andrew Schmidt - Another oldie laying out the operational framework of the Internet.
3) The Intelligent Web: Search, smart algorithms, and big data by Gautam Shroff - This is the closest to what you are looking for. For most people the Internet has become synonymous with the Applications (explicit or implicit) running on the Web and hence this book focuses on its current state and future possibilities.
Chapter 6 forward corresponds well to nand2tetris, but, yes, at a higher level (it doesn't offer a project or homework). The first 5 chapters are probably the lightest portions in Code and offer historical and motivational reasons to explore code (as a general concept). 6 is where binary logic really starts, and then the later chapters build out a CPU.
If the goal were to use these two materials to develop an understanding of computers and digital logic, probably the most natural combination would be to read all of Code and then do nand2tetris, or to read the first few chapters of Code and then finish it while doing the first half of the nand2tetris course. Code's in depth material corresponds most strongly to the hardware portion of nand2tetris.
maybe, I read some discussion about it and someone suggested something like reading Code and seeing if it's interesting then partaking in nand2tetris. Also nand2tetris actually makes you implement everything yourself.
I used to work at a company that did a lot of security work, they're mentioned rather frequently on HN actually. We spent a lot of time dealing with our own binaries being caught in a variety of "security apps" as false positives.
There isn't any javascript on the page, inline or linked. None.
BrowserGuard is a pretty... Braindead... Application. It's blocking based on the social media cover link [0]. Based entirely on the filename containing something that "looks like hex".