[HN Gopher] "Code" 2nd Edition
       ___________________________________________________________________
        
       "Code" 2nd Edition
        
       Author : emme
       Score  : 456 points
       Date   : 2022-06-10 17:14 UTC (5 hours ago)
        
 (HTM) web link (www.charlespetzold.com)
 (TXT) w3m dump (www.charlespetzold.com)
        
       | muh_gradle wrote:
       | I am beyond excited. I have my worn out copy of the first edition
       | perched near me. Petzold's Code is by far my favorite computer
       | science and programming related book.
        
       | wly_cdgr wrote:
       | Hell yeah. An absolute classic
        
       | animesh wrote:
       | I majored in electronics (more than a decade ago) but always
       | worked in software development. Does it still make sense to
       | purchase it? I am eager to buy it, just need the push. :)
        
         | fodmap wrote:
         | Yes, it does. Here's a little push for you. I think you'll find
         | fascinating how all the pieces of the 'puzzle' fit together
         | beautifully.
        
           | animesh wrote:
           | Thank you, I decided on it.
        
         | commandlinefan wrote:
         | (Assuming the second edition is as good as the first) yes. This
         | is the kind of book you can read on a plane ride from New York
         | to San Francisco without taking notes or opening up your
         | computer, and still get a lot out of. It's captivating but
         | conversational and well written.
        
         | anthomtb wrote:
         | Buy it.
         | 
         | I finished my Electrical and Computer Engineering undergrad in
         | 2008 and have been a software dev ever since.
         | 
         | You won't learn anything new if you had computer architecture
         | and digital logic classes. But it's an excellent refresher. And
         | so well written that it reads more like light fiction than a
         | technical deep dive.
        
         | gjstein wrote:
         | I have a similar background in Electrical Engineering and,
         | while I enjoyed the book, it did not change my perspective. I
         | think the book does a good job of opening up what many
         | programmers (and, of course, others) may see as a "black box"
         | that they interact with on a daily basis. I recommend it to
         | those who do not already have a fairly comprehensive of how a
         | computer works, but if you think you pretty much already
         | understand how transistors become ALUs and have touched
         | Assembly, you may find it a bit boring (as I did).
        
           | systemvoltage wrote:
           | I second this. I found it to be a little elementary for me
           | since I already know these concepts.
           | 
           | But it is useful for a _lot_ of people who don 't know how a
           | computer _really_ works.
        
           | animesh wrote:
           | Thanks for this solid comment. Assembly is the one that I am
           | most removed from at the moment. It is 15 years or more. So
           | it seems like I will enjoy it at the very least.
        
       | mypastself wrote:
       | Great book. It might be time to replace my first edition
       | hardcover. Looking forward to the follow-up blog post with the
       | more detailed info on the updated content.
        
       | systemvoltage wrote:
       | We need more people like Petzold in this world. The layers of
       | abstraction are stacked so high that we need to provide a
       | generalist view of what's going on. Some of these Jenga bricks
       | need realignment and people to maintain them, sometimes to re-
       | engineer those bricks to be stronger.
       | 
       | We can't just all sit at the top of the tower and wonder why is
       | it behaving irratically! Please support by purchasing the book.
        
       | stevoski wrote:
       | This book (1st edition, at least) is astonishing. Perhaps the
       | best book for coders that I've ever read. I recommend it to all
       | the HN crowd.
       | 
       | Reading it, I felt like I actually understood how computers
       | worked, right down to the "electricity going through wires" level
       | and lower, and how that builds up to if-then statements, etc, in
       | a high-level language.
        
         | begueradj wrote:
         | The content is something we learn in universities, even deeper.
         | I think it's good for self taught programmers
        
           | coldpie wrote:
           | This ~$40 book was way, way, way more valuable education
           | material than the many thousands of dollars I wasted on a
           | university program.
        
             | ThrowawayR2 wrote:
             | Don't oversell it. Speaking as someone who has done VLSI
             | layout of a 32-bit processor in my student days, Petzold's
             | book is a solid popularization but it doesn't cover a tenth
             | of what a computer engineering degree does.
        
               | coldpie wrote:
               | Fair point. I'm speaking about a computer science degree.
        
               | duped wrote:
               | Don't most CS students still have to take logic design,
               | microprocessors, operating systems, compilers, etc?
        
               | krallja wrote:
               | Depends on the school, for sure. My CS education included
               | a course on Computer Architecture, for which the final
               | project was to implement your unique architecture on an
               | FPGA and demonstrate it running a (simple) algorithm. I
               | liked that course so much, I went back for Computer
               | Architecture II and learned about pipelining, hazards,
               | etc.
        
           | LordDragonfang wrote:
           | I can't tell whether I had an unusually good CS education, or
           | if I'm missing something, but everything I see discussed in
           | this thread as crucial insights taken from this book are
           | things I recall being covered at least once in university,
           | yeah. Perhaps it's just especially effective in its
           | organization and ordering of fundamentals. Still, the praise
           | it's getting makes me want to pick up a copy just to see if
           | it can fill in any gaps I've missed in truly grokking those
           | concepts.
        
             | marai2 wrote:
             | I think the difference is that this book in about 200 pages
             | or so, starts from two boys using flashlights to attempt to
             | "communicate" with each and goes through simple circuits to
             | logic gates to CPU, ALU, volatile memory, rudiments of
             | assembly language to a high level language. That's the
             | difference, hand holding you through the explanations with
             | the emphasis on pedagogy rather than being a dry theory
             | book.
        
               | sixstringtheory wrote:
               | Yes, it consolidates a ton of information very well. I
               | think it can appeal both to the beginner/layperson as
               | introductory, or to those with more experience to put
               | lots of pieces together. I didn't learn much new
               | information but it tied together many things, and just
               | reviewing and recalling old theory felt like a good
               | exercise.
        
           | Barrin92 wrote:
           | As a computer science student ( _Informatik_ over here), I
           | have to say that my university program was heavy on
           | theoretical CS and maths, but there was extremely little in
           | terms of hardware or low level engineering. The one
           | networking class I took diving into the internet stack was
           | probably the closest to it.
           | 
           | Obviously everyone's experience will be different but I think
           | of a CS education more of treating computers like an abstract
           | machine, not a physical one.
        
       | halotrope wrote:
       | I got the first edition and it was transformative. Finally the
       | connection between electricity, computers and modern
       | communication was made. This all while being a fun-easy read. If
       | it was not for this book I would never have started going down
       | the rabbit hole of dabbling with ICs, Arduinos and (basic)
       | electric circuitry.
       | 
       | As Alan Kay famously said "People who are really serious about
       | software should make their own hardware". No need to develop a
       | whole computer, just getting your hands dirty with more basic
       | electronics than consumer hardware will make you a much more
       | complete technician.
        
       | jljljl wrote:
       | Love this book. Recommend pairing it with Nand2Tetris to get a
       | good understanding of how Computers work:
       | 
       | https://www.nand2tetris.org/
        
         | drivers99 wrote:
         | Nand2Tetris is great and I'd like to add "The Pattern on the
         | Stone" by Danny Hillis to the list. (I just noticed it was
         | revised in 2015.)
        
       | kristopolous wrote:
       | Great to see petzold still at it
        
       | planckscnst wrote:
       | I recommend this to anyone learning about programming or
       | computers. That's usually kids. Last year, I went back to ready
       | it again and it started with a story about trying to communicate
       | with your friend next door. I thought "oh, this story isn't
       | really relatable to kids today - they all have phones".
       | 
       | So I'm really glad there is a second edition and I'm wondering if
       | there is a new story.
        
       | eterm wrote:
       | This is by far the best book I've read that really made computers
       | click for me.
       | 
       | I think it's especially good for people like me who work in
       | software development but don't have a computer science degree or
       | background. Going from scratch and the very foundations of
       | telegraphy all the way through to what opcodes really are and how
       | code actually works in memory was an eye opener for better
       | understanding what coding really is.
        
       | peterkelly wrote:
       | One of the best computing books I've ever read. Looking forward
       | to checking out the new edition.
        
         | [deleted]
        
       | uwagar wrote:
       | the book that showed me what a pointer is.
       | 
       | there is a hair rising line in that book in italics! almost like
       | in a horror book like exorcist or dracula.
       | 
       | 'turn the book on its side. can you see it?, its counting'
       | 
       | hair raising stuff. thanks mr petzold.
        
       | bluedino wrote:
       | My favorite Petzold book is 'Programming Windows 95'
        
         | bena wrote:
         | I got the Fifth Edition. A book that's served me well. Learning
         | the Win32 API, holding open doors, improvised weapon, it does
         | it all.
        
           | formerly_proven wrote:
           | My sample has a gigantic splat on its back because I threw it
           | at some insect many years ago and it was positively crushed
           | by The Petzold's impact force. Never cleaned that off because
           | it added to the aesthetic of raggedness.
        
           | qbasic_forever wrote:
           | As doors got heavier it became necessary to add Petzold's
           | windows programming with MFC book to the stack too, another
           | massive (and great at the time) tome.
        
           | Dwedit wrote:
           | It is a very large book indeed.
        
         | matwood wrote:
         | Definitely a classic from back when books were sold by weight.
        
           | JJMcJ wrote:
           | It's a large book but has very little fluff or padding in it.
           | 
           | Covers a huge amount of ground.
           | 
           | I learned a lot from it back when I did some Windows work
           | back around 2000 to 2005.
           | 
           | Also MFC.
        
             | matwood wrote:
             | It was an awesome book, and was basically required for
             | win32 programming in the late 90s.
        
       | ultrasounder wrote:
       | Great. There goes my summer.:-) Essentially read this book with
       | my 14 old Aspie and help him understand and appreciate Software
       | and the hardware it runs on it. Thanks for posting this here.
        
       | mtoddsmith wrote:
       | I love the antiquated ordering process. Wish I could just click
       | buy from my iPhone or send crypto.
        
       | scop wrote:
       | This book was absolutely essential when I was first sinking my
       | teeth into software programming. Things that seemed either
       | arbitrary or completely mysterious suddenly made sense now that I
       | had a _contextual understanding of how computers worked_. Without
       | having that knowledge, I think my career would have been vastly
       | more difficult and frustrating.
       | 
       | While I understand many "get started programming" books/tutorials
       | put an emphasis on getting coding asap, I really had to stop and
       | learn about _computers_ before I could start coding in a well
       | rounded way (and that's coming from a WebDev, who doesn't even
       | have to deal with low-level stuff too often!).
       | 
       | Thank you Mr. Petzold!!!
        
         | coldpie wrote:
         | Wish I had something to say other than "me, too." I read it
         | sometime in high school, well after I'd learned C, and it
         | really made me understand what was actually happening to the
         | code I wrote. Very helpful later in my career and hobbies too,
         | when I have to do reverse-engineering.
        
         | SkyMarshal wrote:
         | Same. I think some of us learn best by having a map of the
         | territory and an understanding of how everything all fits
         | together first. Having that better helps us deep-dive into and
         | master specific areas. This one single book provides that map.
        
           | _jal wrote:
           | Absolutely. I tend to be mystified and lost without some way
           | to place what I'm doing in some larger context, even if that
           | context is super-vague or wrong in technical ways.
           | 
           | Had several teachers who utterly refused to provide that,
           | repeating "it'll all make sense eventually." Well, it did,
           | after I got better teachers.
        
             | scop wrote:
             | That's a great observation about teachers. I was fully
             | convinced in late middle school that I was an idiot who had
             | no hope to achieve good grades or a grasp of subjects. Then
             | suddenly I found myself getting As in high school without a
             | real change in effort/routines. I attribute that in large
             | part to learning the "why" behind various subjects via new
             | teachers.
        
         | unwind wrote:
         | Uh, as someone with too many years of programming behind me to
         | imagine that, can you mention some concrete things that you
         | found arbitrary or completely mysterious, and that the booked
         | cleared up for you? Thanks.
        
           | jrmg wrote:
           | I often wonder: for someone with no understanding of how
           | computers work; no idea about electricity and transistors, no
           | idea about CPUs executing instructions, no idea about
           | software and abstraction: what do they think about when they
           | click a 'play' button in a music player, and the interface
           | updates and music starts? Do they think about what is
           | happening 'inside' the box? I think I do.
           | 
           | I suspect I have a completely different mental model than
           | them - just a completely different casual understanding of
           | it. I find it hard to imagine how they must see the modern
           | world. It must seem like magic!
           | 
           | Note that I'm not at-all speaking about intelligence here.
           | Just knowledge.
           | 
           | Anyway: for that person, I think that if they read 'Code',
           | their entire understanding of the world would change, which
           | is sort of amazing.
        
             | thoms_a wrote:
             | I've asked very young students what they think a computer
             | is and how it works. There's always at least one student
             | who correctly replies: "It's a machine that does what
             | someone told it to do".
             | 
             | Of course modern computing devices are absurdly complex and
             | intricate machines all the way from silicon to software,
             | but the basic mechanism is easily grasped by children. For
             | all their complexity, computers are still just programmable
             | calculators.
        
               | CamperBob2 wrote:
               | _There 's always at least one student who correctly
               | replies: "It's a machine that does what someone told it
               | to do"._
               | 
               | That's correct, right up until someone tells a computer
               | to beat a 9-dan Go master, but not how to do it.
        
             | pbourke wrote:
             | > I find it hard to imagine how they must see the modern
             | world. It must seem like magic!
             | 
             | I think this is unnecessarily infantilizing. There are a
             | great many very complex things in the modern world, and
             | people must employ abstractions for most of it.
             | 
             | I think with the rise of multi form factor computing, there
             | is more basic literacy about the nature of computers these
             | days. People don't think that a phone god makes their phone
             | work and a laptop god lets them work on their document.
        
               | jrmg wrote:
               | I said 'like magic'. I know they know they're made by
               | humans and understandable with effort.
               | 
               | Complex chemistry and materials engineering feels 'like
               | magic' to me. I know I could understand it with enough
               | effort - but I don't understand it now. I'm sure my view
               | of everyday things would change if I did.
        
             | azov wrote:
             | What's your mental model of a dog?.. What's happening
             | inside when he barks or wags his tail? Why does he like
             | carrots more than cheese? How does his memory work?..
             | 
             | The way you think of dogs is probably not very different
             | from the way many people think of computers.
        
           | skripp wrote:
           | What makes this book great is that it more or less only
           | assumes you know how an on-off switch works. Then he goes on
           | to teach you how a (although rather primitive) CPU works and
           | how you would program it.
           | 
           | The teaching style in this book is so unbelievably good that
           | even if you know all the ins and outs of a computer you want
           | to read on because he explains everything in a way that you
           | wish that you would have come up with yourself.
        
             | jgwil2 wrote:
             | > assumes you know how an on-off switch works.
             | 
             | Really he explains how that works too. It's reasoning from
             | first principles at its finest. I wish school curricula
             | were so well-designed.
        
           | sixstringtheory wrote:
           | I didn't discover it until after coding for over 20 years and
           | getting a masters in cs, and I really enjoyed it for filling
           | in some gaps in my knowledge of the engineering side of
           | things and the historical treatment of how various things
           | came to be. And it was a great review of all the stuff I did
           | already know from formal training and experience. It was a
           | quick and easy read, even after tracing through every
           | schematic, so I found it very enjoyable.
        
           | scop wrote:
           | That's a great question. I started out as a programmer having
           | been a casual computer user through my childhood/teenage
           | years. I never took apart computers or ventured into how they
           | worked. Thus, when I decided to pursue this as a career, I
           | had a lot of catch up to do. Here's a couple of things off
           | the top of my head:
           | 
           | - The terminal was completely foreign to me. Why is it
           | structured so? How are permissions set? Octal?!?!?!
           | 
           | - Why do I have to specify a type in a programming language?
           | 
           | - What/why are all these special characters used in
           | programming?!
           | 
           | - Why is a program structured in the way it is? What are the
           | levels of abstraction working in a given program?
           | 
           | - What happens when I run/compile my program?
           | 
           | I would also say that learning a little bit of C also really
           | helped illuminate computers for me. Not only in the sense of
           | _how_ they work, but also why programs use their current
           | syntax. For example, for developers who look at Javascript
           | for the first time seeing parenthesis, colons, curly
           | brackets, etc all make an initial sense: they seem familiar.
           | However, to somebody first diving in all of these characters
           | seem totally arbitrary! Having gained a sense of how
           | computers worked and then a very basic introduction into low-
           | level programming, suddenly these high level languages seem
           | much less arbitrary.
        
             | unwind wrote:
             | Thanks for sharing! I can (of course) understand that many
             | of these things seem arbitrary, but would never have been
             | able to come up with the list on my own. :)
        
           | percentcer wrote:
           | I'm not the OP, but some personal examples:
           | 
           | - why is little-end / big-end a thing?
           | 
           | - why is volatile memory called volatile? and why can't we
           | just keep that data around?
           | 
           | - what can a 64-bit computer do that a 32-bit computer can't?
           | 
           | - what do people mean when they say "code is data"
           | 
           | - what's an instruction, really?
           | 
           | - how did people program computers before they had screens?
           | 
           | - how did people program computers before they had keyboards?
           | 
           | - why is it called 2's complement?
           | 
           | And others that I can't recall right now. It's a fantastic
           | book and I recommend it to everyone who is the slightest bit
           | interested in how computers work.
        
             | unwind wrote:
             | That's a great list anyway, thanks!
        
       | kerv wrote:
       | I took a course like 10 years from Charles. He was amazing and
       | I'm sure this book is just as amazing.
        
       | bloppe wrote:
       | Lol "the hidden language of computer hardware and software"
       | imagine calling Chinese a "hidden language" on an intro text book
       | just because it's not immediately obvious how to speak it.
        
         | SteveDR wrote:
         | I mean, if we somehow used Chinese every day without realizing
         | it, then yeah that would be a fair analogy. Code is literally
         | hidden from users.
        
       | scrollaway wrote:
       | Any suggestions on where to preorder this from Europe (Belgium)?
        
         | beezlebroxxxxxx wrote:
         | > If you'd like to pre-order the book from the publisher, don't
         | try to find the book on the Pearson website. Instead, order the
         | book from InformIT.com or MicrosoftPressStore.com or your
         | favorite online retailer.
         | 
         | So I imagine any online retailers where you might be able to
         | preorder technical books. If you are not adverse to doing so,
         | it can probably be pre-ordered in the coming months on Amazon,
         | as well.
        
           | rafaelhaseyes wrote:
           | In Europe you could for instance order at Blackwells[1], they
           | are an independent bookseller and fairly cheap for english
           | language books. Even better would be to use a local
           | independent bookseller in your own country of course
           | 
           | [1] blackwells.co.uk
        
       | ctur wrote:
       | The 1st edition of this book was very influential for a
       | generation (or more) of engineers. I can't wait to see how it's
       | evolved and what I learn reading a new edition through again.
        
       | no-dr-onboard wrote:
       | My wife bought me this book when I was in college and I never
       | found time to read it. The comments here make me want to crack it
       | open and give it another swing. Thank you all.
        
       | bmitc wrote:
       | I still need to get to the first edition copy I have, but now I
       | think I'll wait to read it with the expanded bits on CPU
       | architecture.
        
       | jmconfuzeus wrote:
       | This is the book I used to teach myself basic CS back in 2010.
        
       | user3939382 wrote:
       | This is a very respected book. Famous. I've had my copy for
       | several years. Never did read it.
        
       | RcouF1uZ4gsC wrote:
       | >The iconic graphic still displays the letters CODE in Braille,
       | Morse code, and ASCII.
       | 
       | All you have to do is add a '0' to the front of each ASCII
       | sequence to make them 8 bits instead of 7 bits, and then they
       | will be UTF-8 encoded.
        
       | localhost wrote:
       | Code is my favorite technical book of all time [1]. Charles does
       | an amazing job of building a computer up from basic principles
       | "two young boys who want to communicate after their parents tell
       | them to go to bed at night" all the way to modern (for 1999)
       | computers. He layers abstraction on top of abstraction all the
       | way to a working computer. My only (slight) disappointment in the
       | book is that he tries to cover operating systems -> object
       | oriented programming in a couple of chapters at the end. That
       | could have been a multi-volume series in its own right.
       | 
       | It goes really well with Elements of Computing Systems (2nd ed)
       | [2] which I kind of think of as a "lab manual" where you get to
       | build a computer from first principles.
       | 
       | [1] https://www.amazon.com/Code-Language-Computer-Hardware-
       | Softw...
       | 
       | [2] https://www.amazon.com/Elements-Computing-Systems-second-
       | Pri...
        
         | danielvaughn wrote:
         | I picked it up years ago, got through the first few chapters,
         | but then never finished it. I _loved_ the early buildup and
         | still want to go back and keep reading.
        
         | greymalik wrote:
         | When the book "builds" a computer, I'm assuming that's a
         | virtual computer? If so, what language does it use?
        
           | jagged-chisel wrote:
           | GP said "builds up to." It's more about the abstractions
           | adding up so that the reader understands how electrons can be
           | programmed. There is no implementation of any kind of virtual
           | or hardware machine in the book.
           | 
           | He goes: electricity, relays, logic gates, circuits (like
           | adders), CPU, RAM ...
           | 
           | It's been awhile so I might have missed a step or two. You'll
           | come away knowing how we used electricity to get from
           | lightning bolts, to pocket computers. You will not come away
           | with a programmable machine.
        
           | Jtsummers wrote:
           | If you're actually looking for something that _does_ build to
           | a virtual computer, Nand2Tetris (second edition of the book
           | _The Elements of Computing Systems_ that goes with it is now
           | out) is a great companion to _Code_ :
           | https://www.nand2tetris.org/.
           | 
           |  _Code_ is more high level, Nand2Tetris and _Elements_ is
           | project based but covers some similar territory.
        
       | toma_caliente wrote:
       | I have this book and have never read it. I may just wait for the
       | second edition to release at this point
        
       | dmitryminkovsky wrote:
       | Wow this is awesome. Code was an eye-opening book for me as a
       | child. I have a 2 year old, and have been wondering whether he
       | could possibly appreciate camera film ISO codes (an early example
       | of "a code" in the book), given that he'll likely never see a
       | roll of film, or other things like that. An updated edition is
       | great news.
        
       | WalterBright wrote:
       | I suppose I came to understanding programming in an unusual way.
       | I first knew a bit of BASIC and could write simple programs in
       | it, how the computer actually worked was a baffling mystery.
       | 
       | My first semester in college, I took a class in semiconductor
       | physics. That started with the PN junction, to diodes, to
       | transistors, to gates, to flip-flops, to clocking, to registers,
       | adders, etc.
       | 
       | Later on, this made learning microprocessors straightforward,
       | then assembler, then C, etc.
       | 
       | I suppose it would have been faster to go straight to
       | programming, but I am happier knowing how it works all the way
       | down.
        
         | ratww wrote:
         | I also learned electronics first, but in a much more amateurish
         | way. As a kid I loved electronics magazines and building
         | projects from them. My dream was a Z-80 kit, but even much
         | simpler kits were too expensive for me. I ended up making a
         | make-believe computer with a few logic gates, decade counters
         | and flip flops. That was my "computer", which taught me digital
         | logic. Not a lot of power, but for a 10-11 old it could compute
         | the stuff I wanted, and I eventually learned digital logic.
         | 
         | I never got the Z-80 kit but I eventually got a computer with
         | DOS, which had QBasic, where I learned to code by modding
         | GORILLA.BAS and NIBBLES.BAS. What a weird language, there was
         | AND and OR, but not NOR, XOR, NAND and others...
        
         | nurettin wrote:
         | I learned it the hard way as well. I think my book was
         | "computer architecture" by Morris & Mano you start from PN to
         | logic gates to truth tables to carnough diagrams to writing
         | your own adder to D transistors to memory to bus to clock to
         | cpu to write your own assembly to perform machine instructions.
        
       | endofreach wrote:
       | I have no idea how i ended up buying this book last year (haven't
       | heard of it from anyone)... the best book i have read in recent
       | years. Definitely the best tech book i have or will ever read
       | (haven't even finished ,,code" fully yet, lol).
       | 
       | Also: i found a book i always was too scared of starting to read
       | (because i didn't want to feel like the biggest idiot trying to
       | read it): ,,The Annotated Turing". When i looked at it again
       | after having read ,,Code", i saw it was also written by Petzold.
       | The way he wrote ,,code" i know, that this will be great. I am
       | very excited to read it when i have a few hours to fully block
       | for it.
        
       | jgwil2 wrote:
       | Haha I like how the cover shifted to dark mode...
        
       | Minor49er wrote:
       | This is great news. This book has been highly regarded for being
       | able to explain the magic behind what makes a computer actually
       | work. The new edition has about 70 pages of additional material.
       | 
       | There is also a companion website that is under construction that
       | already has a delightful amount of interactivity, showing how
       | binary switches, relays, and gates work:
       | 
       | https://www.codehiddenlanguage.com/
        
       | morninglight wrote:
       | "Programming Windows" exposed the simplicity behind the Windows
       | architecture. If you had even a smattering of C experience,
       | Petzold could get you writing Windows applications the same day
       | you opened his book. He triggered an explosion of software
       | development.
       | 
       | There are excellent books for novice Linux programmers, but
       | unfortunately, nothing compared to Petzold's clear and direct
       | presentation.
       | 
       | .
        
         | shadowfox wrote:
         | > There are excellent books for novice Linux programmers
         | 
         | Do you have any suggestions in this regard?
        
           | crispyalmond wrote:
           | Unsure of novice, but I have this book[0] which is pretty
           | great.
           | 
           | [0] https://man7.org/tlpi/
        
         | Stratoscope wrote:
         | This brings back fond memories. Charles thanked me in the
         | Acknowledgements section of the first edition of Programming
         | Windows as "the indefatigable Michael Geary."
         | 
         | I had spent many hours on BIX and CompuServe and maybe GEnie
         | helping other Windows programmers get their start.
         | 
         | So I like to think that in a small way I contributed to
         | Charles' success in educating a generation of Windows
         | programmers.
         | 
         | Remember, friends, always pass it forward.
        
         | pacaro wrote:
         | Absolutely! My first software job back in 94, on my first day I
         | was given a battered copy of Petzold and told to read and do
         | the exercises up to chapter 7. It was an extremely effective
         | boot camp for a novice windows programmer
        
       | antiverse wrote:
       | Looking back it's really strange that nowhere in our CS/Soft Eng.
       | curriculum is it covered exactly what is meant by the term
       | "abstraction" when it comes to how a computer works. That it's
       | all, after all, shuffling of electrons (underlying MOSFET
       | chemistry notwithstanding) and signals is the missing link.
       | 
       | There's other books out there, and Ben Eater's website, that
       | indepth show how to construct processor, gates, store "memory",
       | and so on.
        
         | 2snakes wrote:
         | Right. Imagine a car. Now consider how it is abstracted to you.
         | The wheel, the controls, the pedals. That's an abstraction of
         | the complex system that is a car.
        
         | skeeter2020 wrote:
         | You're describing what was the CompSci option for an egineering
         | degree when I went to Uni the first time. If you look at
         | another great book for learning the "full picture", Nand to
         | Tetris, Comp Sci is the second half of the book while
         | Engineering seems to fill the space between physics and low-
         | level software.
        
         | qbasic_forever wrote:
         | When I was in school 'computer engineering' was the degree you
         | wanted for that level of understanding. It was a blend of 50/50
         | computer science and electrical engineering. You'd learn enough
         | analog EE to understand transistors and enough digital EE to
         | understand logic and computer architecture (this is really
         | where you learn the gory details of how a CPU works
         | internally). Then you'd focus on enough CS to flesh out low
         | level OS, systems programming, etc. to make it all work.
         | Basically learn enough to go from nothing but a circuit diagram
         | to a computer booting up a display with a login prompt for an
         | OS you designed and built, on hardware you designed and built.
        
           | skavi wrote:
           | Still is as you describe. Just graduated from a CompE
           | program.
        
       | xt00 wrote:
       | Great book -- read it when I was a teenager -- but one thing that
       | I think makes the book a bit harder to explain to smaller kids
       | these days is the use of relays for explaining lots of things.
       | Its a great concept to explain things but it does tend to cause a
       | bit of confusing for younger kids who may not have played with
       | electromagnets as much as kids from 20-30 years ago. Not sure
       | what to replace relays with but maybe having kids watch a super
       | easy to understand video about how relays work would help make
       | the book easier to understand for say like an 8 year old reading
       | the book.
        
         | rrauenza wrote:
         | My kids played a lot with "relays" in Minecraft using Redstone.
         | Not quite the same, though!
        
           | xt00 wrote:
           | Ha that's a great idea.. sounds like a good idea for a coding
           | book.. hey so you know minecraft.. use that knowledge to
           | learn how computers work..
        
         | userbinator wrote:
         | Hydraulic relays? I vaguely remember coming across a similar
         | "bottom-up" book about how computers work many decades ago
         | (near the end of the mainframe/minicomputer era) which used
         | water flowing through pipes and valves as its analogy.
         | Unfortunately the title wasn't so memorable, but I do recall
         | the cover was a photo of a little girl filling a bucket from a
         | spigot on the outside of a house. Does anyone know what book
         | that was? I've searched a bit before, but had no luck.
        
         | ultrasounder wrote:
         | very easily substitute using FETs. Essentially the same as
         | relays and BJTs but much easier to control logic FETs than
         | BJTs.
        
           | squarefoot wrote:
           | But that would introduce more complexity (polarity, biasing,
           | etc) that would distract from the initial purpose. With a
           | relay they should only learn how connecting a battery to pins
           | 1 and 2 closes the contacts on 3 and 4. Using relays with
           | more throws they can also learn the basics of logic gates,
           | flip flops, etc. I believe that relays still have a place for
           | educational purposes.
        
       | yumaikas wrote:
       | The first edition of this book was my introduction into how
       | computers worked at a lower level. It gave me enough of a
       | grounding in various concepts that I was able to understand much
       | of a Digital Systems class.
       | 
       | It also partly inspired my first efforts at building a scientific
       | calculator (which would never be quite finished).
       | 
       | I definitely recommend it for folks who want to build context on
       | the lower levels of computers, as a start into understanding
       | CPUs, binary/hex, and other parts of how we tricked sand into
       | thinking with lighting.
        
       | benjaminclauss wrote:
       | would love a similar book for Networking up to the modern
       | Internet
        
       | yardie wrote:
       | I bought Code and Code Complete around the same time. And started
       | reading Code before switching to Complete. And now I'm reminded I
       | have the 1st Edition still sitting on my bookcase read about 1/3
       | the way through.
        
       | kris-s wrote:
       | One of my all-time favorite works of non-fiction. Essential
       | reading for software engineers.
        
       | JonD23 wrote:
       | I read the 1st edition while I was in high school. I knew I
       | wanted to get into tech after reading that book. Many years
       | later, I worked with Charles at Xamarin. For weeks after I
       | joined, I thought of ways to get him to sign my book. One day I
       | heard he was doing a book signing at an event, and I volunteered
       | to go. He signed my book, "from bits to mobile", and now it lives
       | on the top of my bookshelf.
        
       | nightski wrote:
       | Bought it! I own the first one and it's just a fantastic book.
       | I've shared it with family members to help them understand how
       | computers work (more tech savvy ones at least). But yeah love
       | this one.
        
       ___________________________________________________________________
       (page generated 2022-06-10 23:00 UTC)