HackerNews Readings
40,000 HackerNews book recommendations identified using NLP and deep learning

Scroll down for comments...

The Pragmatic Programmer: 20th Anniversary Edition, 2nd Edition: Your Journey to Mastery

David Thomas, Andrew Hunt, et al.

4.8 on Amazon

396 HN comments

Masters of Doom: How Two Guys Created an Empire and Transformed Pop Culture

David Kushner, Wil Wheaton, et al.

4.8 on Amazon

262 HN comments

Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems

Martin Kleppmann

4.8 on Amazon

241 HN comments

Clean Code: A Handbook of Agile Software Craftsmanship

Robert C. Martin

4.7 on Amazon

232 HN comments

Code: The Hidden Language of Computer Hardware and Software

Charles Petzold

4.6 on Amazon

186 HN comments

Cracking the Coding Interview: 189 Programming Questions and Solutions

Gayle Laakmann McDowell

4.7 on Amazon

180 HN comments

The Soul of A New Machine

Tracy Kidder

4.6 on Amazon

177 HN comments

Refactoring: Improving the Design of Existing Code (2nd Edition) (Addison-Wesley Signature Series (Fowler))

Martin Fowler

4.7 on Amazon

116 HN comments

Thinking in Systems: A Primer

Donella H. Meadows and Diana Wright

4.6 on Amazon

104 HN comments

Superintelligence: Paths, Dangers, Strategies

Nick Bostrom, Napoleon Ryan, et al.

4.4 on Amazon

90 HN comments

The Idea Factory: Bell Labs and the Great Age of American Innovation

Jon Gertner

4.6 on Amazon

85 HN comments

Effective Java

Joshua Bloch

4.8 on Amazon

84 HN comments

Domain-Driven Design: Tackling Complexity in the Heart of Software

Eric Evans

4.6 on Amazon

83 HN comments

Weapons of Math Destruction: How Big Data Increases Inequality and Threatens Democracy

Cathy O'Neil

4.5 on Amazon

75 HN comments

A Philosophy of Software Design

John Ousterhout

4.4 on Amazon

74 HN comments

Prev Page 1/16 Next
Sorted by relevance

magicpossumonJan 22, 2021

Having just finished Charles Petzold's Code book, and reading all about relays and building up a fully working computer solely using relays, it's amazing to see a real physical working relay computer! Incredible work!

tonyedgecombeonSep 10, 2020

I've heard good things about Code by Petzold although I haven't read it myself.

https://www.amazon.com/Code-Language-Computer-Hardware-Softw...

jljljlonSep 14, 2018

Code is a great book. I've also been supplementing it with the From Nand 2 Tetris course[1] in order to have some applied experience with the concepts.

[1]https://www.nand2tetris.org/.

abnryonFeb 17, 2020

Code is what got me as a teenager interested in tech. It is an awesome book.

throwaway7645onMar 21, 2017

I think the book shown with nand2tetris (maybe called the elements of computing) is pretty good going from logic gates to building Tetris. Also "CODE" and "Computer Architecture with the Raspberry Pi" are great.

eugmanonSep 27, 2018

Code by Charles Petzold is an in depth history of programming. Very good book.

richardodgersonMay 3, 2012

Code Avengers http://codeavengers.com is a free interactive online tutorial that will teach you Javascript. My brother created it and I think its the funnest and most effective way to learn.

NoPieceonMar 29, 2013

I'd summarize this way: Code Might Suck, But It Still Works (better than your beautiful unlaunched stealth project).

radmuzomonOct 13, 2014

Code is a brilliant book, but I am not sure if the "non-technical" people will enjoy it beyond a point. The part where starts talking about flip-flops can be pretty complicated for someone who is not too interested in technology.

martalistonMay 18, 2017

I'm reading Code right now. It really is a fantastic read.

CHY872onAug 5, 2014

Code is a great, great book. Thank you Petzold.

venture0123onOct 19, 2016

A great follow on to Code Complete - indispensable once you start working on projects of any decent size & need to communicate to your stakeholders about project delivery dates, etc.

rhizome31onAug 18, 2019

For a gentle introduction to algorithms and Big O, "Grokking Algorithms" is easy to read and fun. For more in depth and systematic study, Sedgwick's "Algorithms" is a very clear and beautiful book.

For computer architecture, Petzold's "Code" is wonderful.

xor_ax_axonOct 20, 2018

Code Complete and MMM bookend that nicely

SaxonRobberonMar 27, 2020

Code: The Hidden Language of Computer Hardware and Software

One of my favorite books, it covers everything from braille to microprocessors. A great book for anyone interested in technology.

DelfinoonFeb 12, 2020

I recently read Code by Charles Petzold and it quickly become one of my favorite books, this seems like a great follow-up

bprateronMar 12, 2008

Code by Charles Petzold is an awesome hacking book. It takes you from flipping a light switch, thru simple circuits up to assembly language. It's beautiful!

jamongkadonJune 17, 2007

Code Igniter is a pretty good framework for php. Much better than Cake as it doesn't sport so much "magic" behind the scenes.

jamongkadonMay 31, 2007

Why don't you try Code Igniter? Heard pretty good reviews about it. It's a framework for PHP.

eelonNov 29, 2010

FYI, Microsoft Press ebooks, which are also sold through O'Reilly, qualify for this deal too. For whatever reason, they are not listed on the parent link though.

http://microsoftpress.oreilly.com/

I've heard (many times) that Code Complete is very good-- I'm strongly considering purchasing it.

pedro1976onSep 19, 2018

Code Podcast [1] is an outstanding in-depth podcast for devs, without the usual blabla. IMO the best I have found so far.

[1] https://codepodcast.com/

rramadassonSep 19, 2020

Just get them a copy of Code: The Hidden Language of Computer Hardware and Software by Charles Petzold and make them read it end to end without distractions in a week :-)

cavivonMay 15, 2020

I have read somewhere: Code comments are like love letters to your future self :-)

rramadassonJuly 4, 2020

The author's name is "Charles Petzold" and yes "The Annotated Turing" is a great book.

All of Petzold's books are excellent, in particular; "Code: The Hidden Language of Computer Hardware and Software" should be read by everybody to understand how Computers really work.

danbruconJan 12, 2015

Code Contracts, the library, has always been free. The static checker, the really important piece, was only available in expensive editions for commercial use.

ZelphyronJune 20, 2021

“ Code: The Hidden Language of Computer Hardware and Software” by Charles Petzold and “The Elements of Computing Systems” by Noam Nisan and Shimon Shocken are both a great introduction.

_dokyonJan 15, 2017

I still haven't read anything better than Code by Charles Petzold [1] and it's not even close.

[1] https://www.amazon.com/Code-Language-Computer-Hardware-Softw...

splatcollisiononOct 9, 2016

Code Wars is my favorite. The earlier ranks are pretty simple but there's a broad depth of challenging problems at the higher levels. Online editor and test runner verifies your solution and the community aspects are a big win.

https://www.codewars.com/

notoriousarunonJune 22, 2020

I would surely read "Code: The Hidden Language of Computer Hardware and Software"

KagerjayonSep 4, 2018

haven't read a ton of nonfiction, but these were good

- Thinking fast, and slow

- 7 habits of highly effective people

- Code: The Hidden Language of Computer Hardware and Software

- Getting Things Done

- Choose Yourself

banana_giraffeonNov 4, 2017

Along the same lines, I tend to recommend people that are interested in becoming a developer check out 'Code: The Hidden Language of Computer Hardware and Software', it does a great job of explaining how computers work from first principles in an engaging way.

harywilkeonFeb 22, 2019

A bit more pop-sci, but i found this book a great read about how we went from simple on/off relays to full blown microprocessors.

Code: The Hidden Language of Computer Hardware and Software
by Charles Petzold

blueatlasonJune 18, 2020

Try "Code: The Hidden Language of Computer Hardware and Software." It provides a very simple introduction to electricity. Beyond that, it's just a great introductory book on computing.

https://www.amazon.com/Code-Language-Computer-Hardware-Softw...

szcukgonNov 13, 2011

Code By Charles Petzold. This book is taking me back to school. Law of conservation of energy. Brilliant text

EliRiversonMar 5, 2013

Petzold's "Code" starts at pretty much nothing and ends up with a programmable computer made using transistors. It's far more primitive than what you want to end up with (that is, you intend to start with an OTS microprocessor and build around that) but it's certainly useful knowledge.

paulirwinonMay 19, 2015

I organized Code on the Sea 2015 (http://www.codeonthesea.com/) back in Feb/March, and it was a very rewarding experience.

Best of luck with your cruise conference!

darkpumaonMar 2, 2019

Code Bullet is entertaining and probably the accessible to the general public that I've seen.

Strange Loop has a page with a four year backlog of talks, many of which are pretty good.

mempkoonJune 16, 2017

Got any good literature on this because I haven't found any supporting what you said. Code of Hammurabi didn't standardize an existing practice in my understanding.

jimmyjazz14onNov 27, 2010

Not necessarily a programming book but Code: The Hidden Language of Computers Hardware and Software. It's really easy to digest and moves at a good pace. It may not change your world but it will make thinking about computer internals feel less mysterious and more fun.

js2onJan 15, 2013

This is great. If you enjoyed it, you'll probably really like the (oft recommended here) "Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold.

http://www.charlespetzold.com/code/

GrumpyYoungManonSep 18, 2020

Try Charles Petzold's book "Code: The Hidden Language of Computer Hardware and Software". It goes through the structure of a computer at the binary level in a gentle way that's aimed at non-specialists.

erichoceanonMar 9, 2017

The book Code: The Hidden Language of Computer Hardware and Software by Charles Petzold is pretty fun for kids. You can play along with almost everything in it if you buy some (cheap) hardware. Very "hands on" explanations.

7thaccountonSep 19, 2020

There are a few amazing books out there:

Code by Charles Petzold, The Elements of Computing (Nand2Tetris course book), No Starch Press's Secret Life of Programs, Learning Computer Architecture with Raspberry Pi

barkingonSep 15, 2018

If he produces something better than either Code or The Annotated Turing he'll be doing very well. I'm almost tempted to buy that ancient Windows book he wrote except that I have more than enough things I ought to read already.

boatsockonNov 20, 2016

Code by Charles Petzold would be the best in my opinion.

link: https://www.amazon.com/Code-Language-Computer-Hardware-Softw...

apgwozonJune 3, 2012

    * Pirates of Silicon Valley (1999)
* Revolution OS (2001)
* Code Rush (2000)
* The KGB, the Computer and Me (1990)
* Infinity (1996)
* Antitrust (2001) -- mildly entertaining and fun

runjakeonOct 10, 2016

Send him the book "Code: The Hidden Language of Computer Hardware and Software", by Charles Petzold. It's often available used on Amazon for cheap.

richardodgersonMay 3, 2012

Code Avengers http://codeavengers.com is a free interactive online tutorial that will help you get started on Javascript. There is obviously much much more but this will help beginners learn basic skills.

veritas3241onApr 27, 2018

I highly recommend Code by Charles Petzold. Personally, it helped me to have a more intuitive understanding of clock cycles and the underlying architecture of computers. https://www.goodreads.com/book/show/44882.Code

steauengeglaseonOct 31, 2011

I wouldn't even say it is geared towards the CS student/CS grad, more like general nerd reading. If I knew a kid who was "interested in computers", but there was no one around to give them a helping hand I'd definitely give them a copy of CODE and The C Programming Language.

redleronMar 19, 2014

"The Code Book", by Simon Singh, would be a good companion read. It covers much of the above, and is both compelling and well-written.

Edit: Fixed from "Code" to "The Code Book". Although "Code" (Charles Petzold), on a different subject, is also excellent.

vikas5678onMar 31, 2008

Code Rush, that documentary about Netscape right before it was sold to AOL. Thats a nice one.

grishaonApr 27, 2020

Code: The Hidden Language of Computer Hardware and Software” by Charles Petzold should be what you are looking for. Author describes computing from the very ground up, and in clean, approachable manner.
https://en.wikipedia.org/wiki/Code:_The_Hidden_Language_of_C...

RandomOpiniononNov 28, 2016

While I like Petzold's "Code", it's really aimed at nontechnical audiences. Jon Stokes' "Inside the Machine" or Nisan and Schocken's textbook "The Elements of Computing Systems" are far better if you have a technical background.

kris-sonJune 5, 2017

Code: The Hidden Language of Computer Hardware and Software by Charles Petzold. I love this book.

yodsanklaionSep 19, 2020

> Code: The Hidden Language of Computer Hardware and Software" is solid introduction

Very good book indeed.

mrunkelonNov 25, 2018

This is really awesome.. I too love the book Code by Petzold. I was wondering if I could help translate this into German? I have some work colleagues that could really benefit, but I think it would be easier if the explanatory text was German.

joshvmonJune 22, 2015

Code by Charles Petzold

Not so much programming, but very good if you're interested in how your computer actually works.

DanielBMarkhamonSep 1, 2009

Code Complete is good stuff. The first volume changed the way I thought about code.

OculusonMar 16, 2014

Code Combat (YC W14) is a game that teaches people to program. It's been entirely open sourced and the devs/community make it extremely simple for new comers to contribute. I strongly recommend you check them out!

https://github.com/codecombat/codecombat

d0mineonJune 6, 2016

You might also like the book CODE: The Hidden Language of Computer Hardware and Software http://www.charlespetzold.com/code/index.html

It starts with sending signals using flashlights and follows the evolution of computers from the ground up (mostly hardware).

mcprwklzpqonFeb 26, 2019

> bad tech book writer

You can't possibly mean his "Code: The Hidden Language of Computer Hardware and Software" or "The Annotated Turing: A Guided Tour through Alan Turing's Historic
Paper on Computability and the Turing Machine"? These books are great.

JamesBarneyonNov 22, 2016

For Software Engineering I recommend anything by Steve McConnell such as 'Code Complete', 'Software Estimation', and 'Rapid Development'.

FartyMcFarteronJan 3, 2021

By "idiomatic C" I meant any of the following:

- Code that most C books/courses would teach you how to write

- Portable C code (arguably portability is one of C's biggest successes!)

- Code that you'd expect to find in the K&R book

scarface74onJuly 16, 2017

Software Engineering doesn't change that rapidly.

The idea of iterative software development - that we now call "agile" was first documented in 1957

The Mythical Man Month was published in 1975 and is just as relevant today as it was when it was written.

Code Complete came out in 1993 and is still relevant.

Even when you start talking about programming languages, both Java and C# have been popular in the enterprise since 2005.

punchclockheroonJan 16, 2018

Nothing right now, but have two unfinished books in my backlog. First is Spring Snow by Yukio Mishima and the other is Code: The Hidden Language of Computer Hardware and Software.

jacko0onJan 18, 2016

Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold. The best book I've ever read.

photon_linesonJuly 2, 2019

I think it would depend on what you’re into, but these are my picks:

Quantum Electrodynamics (Feynman): A summary of how almost EVERYTHING works (albeit explained simplistically).

Poor Charlie's Almanack: The Wit and Wisdom of Charles T. Munger (great insights / worldly wisdom from one of the world’s greatest investors).

The Vital Question: Energy, Evolution, and the Origins of Complex Life

The Princeton Companion to Mathematics (Great overview of mathematics).

Quantum Mechanics: Concepts and Applications (Great QM book).

Wooden on Leadership: How to Create a Winning Organization (Great leadership / management insights).

Why Does the World Exist?: An Existential Detective Story

Sapiens: A Brief History of Humankind (An extremely simplified historical overview of how we got here).

The Book of Disquiet (Serpent's Tail Classics) (Random journaling from one of the world’s greatest prose writers: Fernando Pessoa).

Code: The Hidden Language of Computer Hardware and Software (Excellent explanation on how computers work from bottom -> top).

The Machinery of Life (Includes excellent visuals in biology).

The Character of Physical Law (Great insights in physics by Feynman).

The Goal: A Process of Ongoing Improvement (Great book on business process improvement).

How to Win Friends & Influence People (Nothing groundbreaking, but still a worthy read).

Coders at Work: Reflections on the Craft of Programming (Great info and insights from some of the greatest software developers of all time).

The Periodic Table (Great read and some of the greatest prose writing you’ll ever encounter).

NerDProgrammeronNov 17, 2018

Code: The Hidden Language of Computer Hardware and Software by Charles Pretzold

Reading the book is the most beautiful and simple way that a person can really understand what a computer and come to the realization that it is not black magic.

https://www.amazon.com/Code-Language-Computer-Developer-Prac...

JetroidonMar 20, 2018

I knew a guy who ran a business which designed and sold PCBs. He'd make up different names to stamp on PCBs. Designed by Joe Bloggs, Code by Derek Smarts, Layout by Jamie Simple, etc. He wanted the business to seem bigger than it actually was.

nacho2sweetonMay 9, 2018

Code Complete 2. I bought it... never read it.

tlrobinsononJuly 20, 2008

Also, Code Rush is a pretty good documentary about Netscape's open sourcing of Mozilla back in '98

http://www.viddler.com/explore/coderush/videos/1/

archielconOct 21, 2019

Code: The Hidden Language of Computer Hardware and Software by Charles Petzold

This one's for you if you want to learn or just recap principles of computers (and read on evolution as well). I just started reading it and found it suprisingly easy to follow. It's perfect if you like things explained step-by-step and in a simple way.

kurrentonFeb 15, 2012

I would suggest the following book as a precursor to all of these books: Code by Charles Petzold.

It is genuinely one of the best books I have ever read.

SloopJononAug 26, 2016

I like projects like this. I started reading Code a while back, and thought it would be fun to make a computer out of relays, light bulbs, tinker toys, or whatnot. Then I started reading The Elements of Computing Systems, and thought about building something in a FPGA. One of these days.

msarnoffonJan 21, 2011

"Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold does an excellent job of explaining everything (from logic gates to CPU architecture to graphics) to the layperson. If any nontechnical person (my dad, for example :p) asked me how computers worked, I would tell him/her to read this book.

Even for a technical reader it's still an enjoyable book. It inspired me to design and make a computer of my own.

eyegoronMar 28, 2020

Code: the hidden language of computer hardware and software, by Charles Petzold.

It's a modern classic (2000). It's less technical and more about the history behind the idea/theories of coding itself. It also explains some basic principles of how computers work, at a high level. Very well written.

vezzy-fnordonDec 29, 2013

What else but Charles Petzold's phenomenal classic CODE: The Hidden Language of Computer Hardware and Software? [1]

http://www.charlespetzold.com/code/ [1]

ACSparksonApr 13, 2007

Have you checked out Code Igniter? It is a php framework that implements the MVC design pattern. Forcing the seperation of the different layers makes things much "prettier" in my opinion.

http://www.codeigniter.com/

msisk6onApr 15, 2015

"Code" by Charles Petzold is another book I'd recommend for this sort of thing. I usually keep a few copies on hand to give out to folks that show a genuine interest in learning more about code and how computers really work.

wuschelonSep 9, 2015

Code: The Hidden Language of Computer Hardware and Software by Charles Petzold is an excellent book I have recently begun to read. It's even longer that the Bloomberg post, and also such much more detailed and in-depth (-;

In fact, I found the book very enjoyable. It gives a nice pedagogic twist on how information can processed with hardware.

It has been discussed on HN here:
https://news.ycombinator.com/item?id=1936474

spbonMar 24, 2015

Indeed. I'd also add Code (by Charles Petzold) and D is for Digital (which I desperately want to read but haven't yet).

lisperonOct 16, 2016

One of my favorites not on the list: Code: The Hidden Language of Computer Hardware and Software, by Charles Petzold

https://www.amazon.com/dp/B00JDMPOK2/

Takes you from simple mechanical switches all the way to a CPU.

MarkBookonMay 13, 2010

My tuppenceworth
Some high level language VB, C# or Java
then
the first half of Code by Charles Petzold
then
The elements of computing systems by Schocken and Nisan
followed by
the rest of Petzold's book

hackerboosonDec 8, 2014

All the good things in Prag Prog have become commonplace in today's development world.

* Tests - check

* Version control - check

* Code generation - check

* Decoupling, refactoring, metaprogramming, power editing.

It's still worth reading but it needs a second edition...

peterkellyonMar 5, 2016

I'd recommend being a bit more specific about the things you're after. But here's two of my favourites (one technical, one business):

"Code: The Hidden Language of Computer Hardware and Software", by Charles Petzold

"Rework", by Jason Fried and David Heinemeier Hansson

fauriaonDec 27, 2017

Chapter 22 of "Code: The Hidden Language of Computer Hardware and Software" uses CP/M to illustrate the inner workings of operating systems. I highly recommend this book overall: https://www.amazon.com/Code-Language-Computer-Hardware-Softw...

MyrmornisonMay 2, 2018

> The first is Code: The Hidden Language of Computer Hardware and Software by Charles Petzold

> It’s easy to read, you can lie down on the couch and enjoy it

No, it isn’t. It’s an awesome book. But it presents diagram after diagram of CPU internals and it would require a huge amount of stamina to get through them. You cannot just turn the pages; the entire point of the book is understanding how these components work in detail. It might be a good book to keep in a nuclear bunker to help rebuild civilization though.

tyleregetoonSep 2, 2014

Code: The Hidden Language of Computer Hardware and Software http://www.amazon.ca/gp/aw/d/B008PGKDOO
This is one of the most enjoyable reads I have had in a long time, definitely recommended.

Introduction to Information Retrieval http://nlp.stanford.edu/IR-book/
This is a free digital book, very good so far.

fspearonNov 23, 2017

The Predatory Female: A Field Guide to Dating and the Marriage-divorce Industry by Lawrence Shannon

The Manipulated Man by Esther Villar.

Code: The Hidden Language of Computer Hardware and Software by Charles Petzold.

The Myth of Sisyphus by Albert Camus.

planckscnstonSep 16, 2013

Petzold's "Code: The Hidden Language of Computer Hardware and Software" aids in the understanding of how computers work at the lowest levels.

http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...

julianpyeonOct 13, 2014

Slightly OT, but If you haven't heard about it before Charles book 'Code' is one of the best computing books I have ever read. I gave it to my engineer father and my MBA brother for Xmas years ago, as it is such a great introduction for anyone to understand how computers work. You will also need a copy if you ever were trying to build a computer from scratch :)

laceroonSep 7, 2013

Code: The Hidden Language of Computer Hardware and Software by Charles Petzold

You will learn everything from logic gates/transistors to software.

yoodenvranxonFeb 16, 2017

On a similar topic but a bit less project oriented:

Charles Petzolds "CODE The Hidden Language of Computer Hardware and Software"

http://www.charlespetzold.com/code/

chamblinonSep 20, 2013

Check out Code: The Hidden Language of Computer Hardware and Software by Charles Petzold for a slightly romantic take, or Malvino's Digital Computer Electronics for an undergraduate view of computer architecture.

vargavince91onOct 8, 2016

Agree with all the CS Basics book (would add the Code: The Hidden Language of Computer Hardware and Software, great book and if he has time, I'd go for it). I'd also consider giving him a couple of books, like: A) Clean Code by Bob Martin, B) Soft Skills by Jon Sonmez. Books that doesn't require a computer, yet teach the reader how a good developer should think while writing code and working in a team. It's also less likely he gets stuck while reading this kind of literature.

Would help if you shared the end goal. Get hired anywhere? Get hired by Top 4 Tech Company or Hot Startup of the Year? Start a business? Don't get bored? How long is he going to be incarcerated?

I would greatly appreciate if you shared your experience.

mindcrimeonDec 20, 2010

I don't necessarily know of any one book that meets all of your friends requirements, but...

Tracy Kidder's The Soul of a New Machine might be good for your friend.

http://www.amazon.com/Soul-New-Machine-Tracy-Kidder/dp/03164...

Another good option might be Code: The Hidden Language of Computer Hardware and Software by Charles Petzold.

http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...

Or, how about Coders at Work?

http://www.amazon.com/Coders-Work-Reflections-Craft-Programm...

Another one that I have (but haven't had time to read yet) is Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software by Scott Rosenberg. It might have something that your friend would find interesting.

http://www.amazon.com/Dreaming-Code-Programmers-Transcendent...

Another one that may be inspirational, although it's more about personalities than computer science per-se, would be Steven Levy's Hackers: Heroes of the Computer Revolution.

http://www.amazon.com/Hackers-Computer-Revolution-Steven-Lev...

ZelphyronFeb 5, 2021

I read CODE before reading The Elements of Computing Systems. I felt like the former provides details that you actually implement in the latter. Highly recommend both and in that order.

js2onMay 21, 2019

> However, after making my way through But How Do It Know? by J. Clark Scott, a book which describes the bits of a simple 8-bit computer from the NAND gates, through to the registers, RAM, bits of the CPU, ALU and I/O, I got a hankering to implement it in code.

Speaking of code, another excellent book along these lines is Code: The Hidden Language of Computer Hardware and Software by Charles Petzold.

http://www.charlespetzold.com/code/

jtmsonNov 12, 2020

Wow, I wish I had been exposed to this stuff in high school - I had already gotten well into my professional career when I found "Code: the hidden language of computer hardware and software" by Charles Petzold and it was just eureka moment after eureka moment reading that and then building the gates, adders, memory, etc from the diagrams in the book via redstone. One of my favorite learning experiences of all time!

bdfh42onSep 12, 2008

spend $12 at Amazon on a copy of Charles Petzold's book, Code: The Hidden Language of Computer Hardware and Software.

It will all begin to make sense as you will have a thorough understanding of what is going on at the lowest level. You will never regret acquiring that knowledge.

flor1sonNov 11, 2017

I used to think the same way about the CPU, even after getting a masters in Computer Science! About a year ago I read the book Code by Charles Petzold and watched some lectures about Computer Science by Robert Sedgewick which really opened up my mind.

austinpreteonMar 9, 2021

As a disclaimer I haven't read CODE, even though it's been on my list for a while (sounds like I ought to prioritize it!).

From my understanding of the style I believe The Gene: An Intimate History by Siddhartha Mukherjee is a similar take on genetics.

It stays fairly high level as it doesn't require a molecular biology degree, but Mukherjee gives a fantastic primer on many of the concepts in genetics in a deeply interesting and human fashion. It's always refreshing when non-fiction books manage to weave a narrative throughout in a way that feels natural.

cbhlonJan 18, 2016

I find it shocking that out of eight million comments, the top book is only mentioned ~50 times, but the parent comment illustrates why -- many people mention title/author pairs without linking to the book itself.

Code: The Hidden Language of Computer Hardware and Software by Charles Petzold
(http://amzn.com/B00JDMPOK2)

bawiggaonJuly 26, 2017

The Handmaid's Tale - Margaret Atwood

The 4-Hour Body - Tim Ferriss - Lot's of anecdotes from Ferriss' own experiments.

S. - by J.J. Abrams - Layers upon layers. Unlike anything I've read before and a true Abrams experience. Check it out if you haven't heard of it!

Code: The Hidden Language of Computer Hardware and Software -
Charles Petzold - Fascinating PopSci book on the origins of Computers and Code. Each chapter seems to build on the knowledge you've built from previous chapters. Interesting read for the programmer/computer engineer and VERY approachable.

rajuonApr 30, 2008

I have to agree with him to some extent. It easy for the mind to wander, and yes, I think thats true for even good books. Having a distraction free environment is a good idea regardless of what you are reading, further, having the ability to write while reading is also important.

Having said that, I have no issues with electronic format of books (except they make my eyes hurt). Sitting at a computer reading a good book works just as well as reading a paper book. If you are that enticed by the web, unplug your ethernet cable.

On a side note, has anyone read "Code: The Hidden Language of Computer Hardware and Software" by the same author. I am halfway through it, and I think its a phenomenal book.

fossuseronOct 23, 2019

I'd recommend Charles Petzold's Code: http://www.charlespetzold.com/code/

Which does a great job building up computing from bits all the way to a adders, CPUs, and assembly language (with the historical background around it too).

I think the easiest way to get an idea for Quantum Computing and what the difference is comes from watching a specific example, I thought this example of Shor's algorithm was pretty good: https://www.youtube.com/watch?v=wUwZZaI5u0c

diego_moitaonDec 23, 2019

Pragmatic Programmer is still a good book, not as revealing as before but still has lots of good advice.

Code Complete is a problematic book. It has some good ideas but also has some very bad ones (cone of uncertainty, 10 times productivity in good programmers, etc).

Design Patterns is mostly obsolete. Functional programming techniques made a lot of Object Oriented techniques irrelevant (e.g.: observer pattern vs callbacks with lambdas).

Art of Computer Programming is the book everyone mentions but no one reads. A classic that people actually read is Structure and Interpretation of Computer Programs.

My recommendations: "Code" by Charles Petzold,"Don't make me think" by Steve Krug, Working Effectivelly with Legacy Code, by Robert Feathers, Clean Code by uncle Bob,..

GrumpyYoungManonAug 22, 2016

The two are not at all similar. Petzold's "Code" is good but is aimed at non-technical readers while "The Elements of Computing Systems" is more or less a textbook that encapsulates a longitudinal slice of a 4-year computer engineering program, complete with exercises. It's really quite impressive in what it manages to cover (although the massive amount of material glossed over or omitted does make me wince).

cfedukeonJune 22, 2015

Any book written by Charles Petzold is an enjoyable read, though particularly the non-MS specific titles Code and The Annotated Turing.

Java Concurrency in Practice (2006) is older but relevant and clearly describes concurrency on the JVM. A must read for any Java, Scala, Clojure, etc. software engineer; well-written, enjoyable, concise.

Practical Object Oriented Design in Ruby by Sandi Metz is a fun read packed with good principles for working in Ruby that are applicable in general to object oriented programming.

Smalltalk Best Practice Patterns by Kent Beck is worth a read because the general principles are applicable to any OOP language.

Clean Code by Robert Martin is excellent but a time commitment. (If you had to pick between SICP and Clean Code because time is at a premium I'd err on the side of Clean Code for practicality. Writing maintainable code is paramount.)

The Joy of Clojure (Fogus/Houser) is excellent and mentally digestable even if you have no Lisp or Clojure background.

stephenboydonFeb 24, 2016

If the reference manuals are overwhelming, I'd recommend to start by reading Code: The Hidden Language of Computer Hardware and Software by Charles Petzold. It covers how computers work for a general audience, from logic gates and boolean algebra, up to assembly, opcodes on the Intel 8080 processor, and how operating systems work. It was one of the most consequential books I've read, and I'd recommend it to both professional programmers and anyone else who is intellectually curious.

DanBConOct 8, 2012

Petzold's book "Code: The Hidden Language of Computer Hardware and Software" is good. It starts too gently, and ramps up too quickly.

(http://www.charlespetzold.com/code/)

The Art of Electronics Lab Book has plans for building a computer and it's pretty well documented, although very old.

(http://www.amazon.co.uk/Laboratory-Manual-Electronics-Paul-H...)

Another good way to learn is to find a circuit diagram and run it by pencil. Just like people learn programming by writing code on paper and running the software with a pencil; writing the variables and such. Here's one (http://www.nathandumont.com/sites/nathandumont.com/files/ima...) (not a great example) but you try to work out what values you need where to get various bits working.

When you get a better circuit diagram you can create a memory map. Here's a link that describes what I mean. (http://www.clear.rice.edu/elec201/Book/hardware.html)

Good Luck!

alexrsononJune 11, 2013

Code Complete second edition

showerstonJune 22, 2012

If you'd like a great non-technical tour of how computers really work conceptually, starting from simple morse-code switches through to assembler, Charles Petzold's "Code" is awesome:

http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...

Even having understood for years how computers work in principal, nothing quite put it together for me like this book.

There's a similarly great book on the history/methods of cryptography called "The Code Book" by Simon Singh that I recommend too - http://www.amazon.com/The-Code-Book-Science-Cryptography/dp/...
It's great because it traces the history but also walks you through how the cyphers actually worked, and provides the best intros I've ever seen to public key and quantum cryptography.

grumpleonFeb 17, 2020

I recommend Code: The Hidden Language of Computer Hardware and Software by Charles Petzold [1]. It is far more comprehensive than the OP, goes from pre-computer code, to electrical circuits, to an overview of assembly. No prior knowledge needed except how to read.

1. https://www.amazon.com/Code-Language-Computer-Hardware-Softw...

harry8onMay 3, 2018

I'm not particularly sensitive to it, it has to be fairly pronounced before I'd even notice. This is.

It's one thing to say, I'd do it different. I'd have this book, or that book, or my list would have more this focus or that focus. It's a whole different beast to claim this list is "poor." And it is stupid to do so without countering with a list of exactly 5 books. Yes stupid.

I have read all 5 books. All 5 are excellent books. All 5 are very highly regarded in the field of programming and computer science. The descriptions that are attached to the list in TFA are accurate and useful to anyone reading the list. If there's a book on that list you haven't read, I'd say read it. This list simply isn't in the same postcode as "poor" and the descriptions of it as poor can't back it up in a meaningful way. Maybe there's another reason why the general mood of this thread is hypercritical? Smells a bit though, don't it? Do you really think if Guttag submitted that list the tone here would be the same or would the whole "this book is better" comments be rather more respectful of the original list and author? I've stated my opinion and why. You may of course, disagree.

Here's mine, Petzold "Code", Kernighan and Pike's "Practise of Programming", "The Pragmatic Programmer", Abelson and Sussman "Structure and Interpretation of Computer Programs" (with video lectures on youtube), Richard Stevens "Unix Network Programming" or maybe "Advanced Programming in the Unix Environment" - Which betray my OS accent. I'm not sure it's better than Ana Bell's. You can decide for yourself on that point.

dustingetzonOct 31, 2011

alright, meh, not convinced. we're all busy people and my bedside book stack is 12 high.

compare books like CODE, SICP, and related books discussed below, to books like Beautiful Code, Higher Order Perl, Mythical Man Month, Seven Languages in Seven Weeks, tons of whitepapers.

do I really need to read CODE? Seems like a bottom-of-stack book that will never quite make it to the top.

jaekwononJune 30, 2013

Lessig (or something) is deleting my comment on Disqus. Here it is:

----

The the government's claims of transparency and audibility of the NSA's PRISM program is analogous (if not directly related) to the claims of Palantir's. Search for "immutable auditing" below:

http://www.palantir.com/wp-content/static/pg-analysis-blog/2...

But even with such an audit trail to the core, it is known that it isn't sufficient:

http://www.informatik.uni-freiburg.de/~accorsi/papers/imf09....

I wager that for any given system that touts immutable audibility, there is a way to hack around it. Privacy through automated means is impossible. At best it is a kind of DRM that the NSA can easily work around secretly if it wanted it. What we should be advocating instead is Perfect Forward Secrecy in our internet architecture, and the dismantling of PRISM and related data centers.

Prof Lessig, in your book "Code", you are using the issue of copyright to condone the current direction of the surveillance state and offering red herrings as "balancing" compromises. Such a balance is impossible in the face of concentrated storage of (even encrypted) storage data by intelligence agencies. As long as the NSA can tap the wires and record information in vast databases for cold storage, we are absolutely in risk.

More technical discussion here: https://news.ycombinator.com/item?id=5966942

P.S., FTFY: "I have not, AND would not ever, accept money from Palantir..."

rb808onMay 2, 2018

Code Complete is an interesting one to me. I loved it back when doing C++.

One of the things that initially bugged me with lots of functional programming was that it broke many of the Code Complete rules like having one operation per line.

Does this mean that Code Complete is not relevant for functional code or maybe there is a new edition required I"m not sure.

erichoceanonMar 3, 2016

Code: The Hidden Language of Computer Hardware and Software[0]

My kids enjoyed this book, similar topic, but fairly playful in how it was put together and an extremely gentle introduction without actually shying away from how things actually work. It's hard to imagine a reader not coming away with a much better understanding of what computing is all about. It starts at gates and works up to actual (machine) code at the end of the book. Very good diagrams throughout.

Despite being from 2000, I don't think it's become outdated. I'd love it if there was a sequel that covered putting things together with a cheap FPGA.

[0] http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...

alexgmcmonJune 20, 2021

I've read both books and done the Nand2Tetris course.

I think Code by Petzold is decent in that it's a book you can read in bed etc. but it spends a long time discussing mechanical relays as an analogue and later discusses various processors in depth.

I think Nand2Tetris is slightly better in that it focuses on what I'd consider to be the most important stuff, but it's an actual course and requires significantly more effort.

Nand2Tetris is probably the best course I've ever done though, including my university studies in Physics and ML. It's fun and you learn loads.

burritofanaticonAug 7, 2019

It depends on the situation. If one is a lawyer who wants new skill sets and perhaps even a career change, an absolute yes. I did this transition seven years ago and left law entirely. I've met a handful of other interesting ex-lawyers who have made the switch from law to software and have been satisfied with the choice.

At the beginning of this year, after trying to explore what I wanted to do for the next stage in my life, I decided to get back into the profession as a solo practitioner and transition away from software development. I'm officially back to practice, and I'm surprisingly happy with my professional life - something I never thought would really be possible.

If you're a practicing lawyer who wants to give yourself an edge as a lawyer, I think it's more important to understand the concepts and principles as opposed inventing or finding the barely existent job of coder/lawyer for a firm - I don't know the name of the role, and I've seen it touted by legal tech folks - but these are elusive. Understanding what's possible, I believe, is by far way more important. For example, I've worked with countless non-coding project/product managers, and they've been great contributors to the process in software development.

My recommendation for lawyers? Do the Python track on Codecademy over a summer and read Code: The Hidden Language of Computer Hardware and Software.

jtmsonJuly 25, 2018

Minecraft is an amazing learning tool even for adults! I used Minecraft as a "build along" tool for fully understanding logic gates while reading "Code: The Hidden Language of Computer Hardware and Software" (which I highly recommend - great book!). I used a mod called "red power" to make laying out the circuits much easier (the color coded, bundled cables alone were worth using it). Perhaps I will have to fire up Minecraft and take Electrical Age for a spin - it looks REALLY cool!

runjakeonMar 30, 2021

1. Read Code by Charles Petzold.

https://www.amazon.com/Code-Language-Computer-Developer-Prac...

2. Learn C.

3. Learn whatever interests you next.

throwamononMay 28, 2021

Can someone who has read both compare this to Code by Charles Petzold?

https://www.amazon.com/Code-Language-Computer-Developer-Prac...

mindcrimeonJuly 15, 2016

The Four Steps To The Epiphany - Steve Blank

Code by Charles Petzold

Artificial Life - Steven Levy

Time Reborn - Lee Smolin

The Singularity is Near - Ray Kurzweil

Surfaces and Essences - Douglas Hofstadter

How to Measure Anything - Douglas Hubbard

-- One of my favorites is How Not to Be Wrong by Jordan Ellenbreg

I have that on my list of "to read real soon now". Sounds fascinating.

fossuseronMar 8, 2020

I’ll second designing data intensive applications as one of the most interesting, readable, and relevant technical books I’ve ever read.

Working Effectively with Legacy Code was also impressive, I think I just read it too early before I was good enough to really understand and use it.

TDD is also worth reading (and it’s short) to get a sense of tests if like me, it’s something you’d never really done before when learning.

If you like soul of a new machine, you’d probably like Halt and Catch Fire on Netflix. I’d also recommend the Phoenix project and the dev ops handbook.

Code by Charles Petzold is one of my favorites to recommend, something every CS student should read.

I’ll have to check out the others on this list too.

DarkTreeonJuly 30, 2014

Code: The Hidden Language of Computer Hardware and Software by Charles Petzold.

A great book that explains how computers actually work through number systems and the logic that acts on those systems. You start with the theory behind binary numbers and work your way through electrical circuits, logic gates, RAM, transistors, and the operating system as you build your fundamental knowledge of the inner workings of computers. It's pretty cool.

iN7h33nDonApr 9, 2015

Audiobooks I have Read Recently: (Sanderson is Awesome)

  * The Reckoners #1/#2
* Stormlight Archive #1/#2
* Mistborn #1/#2/#3
* Ghost in the Wires: My Adventures As the World's Most Wanted Hacker

Digital Books:

  * How to Win Friends and Influence People
* Malazon Book #1
* The Forever War
* The Martian

Things on my List:

  * Think and Grow Rich
* Watership Down
* Rainbows End
* Snow Crash
* What is Zen
* Wool: Silo
* Founders at Work
* Light Bringer
* Hyperion
* The War of Art
* Atlas Shrugged
* The Demon Haunted World
* Code: The Hidden Language of Computer Hardware and Software
* Joe Abercrombie's books
* Rich Dad Poor Dad
* Founders at Work
* Fear the Sky
* Daemon -- EDIT ADDED


Things I recommend:

  * All of Brandon Sanderson's Books
* The Kingkiller Chronicles
* How to Win Friends and Influence People
* Issac Asimov's short stories and Foundation series
* The Forever War
* Gentleman Bastards
* Ready Player One
* The Martian
* A Wizard of Earthsea

EDIT:
Short Reading I Recommend:

  * http://www.multivax.com/last_question.html

ybakosonAug 31, 2011

We teach this class formally in one semester at the Colorado School of Mines, where it is now a required part of the CS curriculum.

I use both Code and TECS books together. It is an incredibly effective class. I've found many students in CS curricula "drift" through the topics without really grasping anything, only to graduate feeling they haven't really learned much.

This material takes the essence of numerous CS topics and educates the reader by doing and building, rather than only reading and theorizing.

If you are a developer and don't know what happens when you execute a program, you really need this book (and CODE by Petzold).

keithwarrenonDec 29, 2013

Code: The Hidden Language of Computer Hardware and Software

It is a great book written by one of the great computer scientists of our time. It tracks the evolution of code and computing from morse code and braille on to number systems, early processors and even into how processors handle this information. When I hire someone for nearly any position, I buy them this book.

*Don't let the title fool you, this is not some discussion about high level languages, this is the down and dirty stuff.

http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...

Minor49eronAug 17, 2021

You have a handful of low-level languages listed. It doesn't make sense to try to put those through a JavaScript lens. Rather, pick one to start with and build some programs with it. You should quickly start to see how memory, I/O, etc, are handled.

I would also recommend the book "Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold as a general introduction.

adambrattonSep 14, 2013

CODE is an amazing book and I rarely see people mention it. I've yet to come across a resource that is so good at joining electrical engineering and computer science.

It starts with an abacus and 400 pages later of flip-flops, memory gates, and microprocessors it leaves you with a fully built modern computer.

That said, I would not put it in a beginner category. I read it after 4 years of ASM programming and building electrical gadgets and I still had to stop and reread chapters quite a few times until I got all the concepts out of it.

If you're at all interested in how all the parts in your computer interact and work together at the lowest level, READ THIS BOOK.

listiconOct 17, 2009

For this kind of thing, I recommend the book

"Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold.

http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...

Being a CS major, I bought this book for the sheer amazement at how the gist of everything I had learned about computers in the university could be conveyed in one book in such easy and fun manner. The learning curve is so gentle, it just couldn't be easier. I cannot recommend this book enough to _every_ person who really wants to understand how computers work.

jasonlotitoonDec 6, 2011

Recently, I've come to know "Code: The Hidden Language of Computer Hardware and Software"[1], and I really enjoyed it. I don't think it's necessarily the first book every programmer should read, but I do think it's a book every programmer should read. It's an easy read, it's fun, and really does provide what it promises. Highly recommended.

1. http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...

TYonSep 30, 2010

From the end of the article:

PS If you need a bit more beautiful simplicity go and read about NAND logic and realize that they are all you're ever going to need.

A wonderful demonstration of how this can be done can be found in the "The Elements of Computing Systems". Homepage: http://www1.idc.ac.il/tecs/

This course will show you how to build a simple but modern computer stack starting with nothing but simple NAND gates. Make sure to do the exercises and be prepared to invest a lot of time if you buy this book, otherwise you'll just waste your time.

I consider TECS and Charles Petzold's "Code" to be the most approachable books for those who want to understand what's really happening "under the hood" of your computer and can't recommend them highly enough.

gustavo_duarteonMay 7, 2009

Steve McConnell advocates a similar thing in Code Complete 2, which he calls Pseudocode Programming Process, PPP.

The idea is that when first creating a method or function, you write out in comments what you're going to do in a 'why' level (eg, 'keep track of resources') rather than a 'how' level (eg, 'increase cntFooBar by 1').

You then start 'filling out' the code to do what you 'designed' via the comments. Hopefully you end up with a better designed routine, and you get free comments to boot as they now explain what the code is doing.

When I first read Code Complete as an impressionable teenager I tried it out and liked it, but I have since had a change of heart on this issue and other Code Complete wisdom. I rarely comment inside methods anymore.

eyegoronMar 28, 2020

Oh, maybe my idea of "technical" is too narrow. From a typical book perspective it's very technical. I meant it more from a textbook perspective. Code isn't a book you use to teach, or to learn concepts in detail. You could learn plenty of things at a high level, some concepts at a single-example level, but you aren't learning computer architecture or algorithms here. It's the only book I've read that effectively bridges casual reading with textbook ideas, without actually throwing you in the deep end.

On a side note, people keep recommending masters of doom to me, I definitely need to check it out myself.

davidddavidsononApr 21, 2017

CODE by Charles Petzold and The Elements of Computing Systems by Nisan and Schocken

DanBConJune 14, 2012

You could read Petzold's book "Code - The Hidden Language of Computer Hardware and Software"

(http://www.charlespetzold.com/code/)

Or the Art of Electronics Student Manual, which goes through the process of building a computer.

(http://www.amazon.co.uk/The-Art-Electronics-Student-Manual/d...)

One thing that really helped me was getting a circuit diagram for a simple 8 bit computer, and then creating a memory map by tracing the address lines and writing what numbers were needed to enable addressing or not. Uh, I've done a really poor job of explaining this. Wikipedia does slightly better - (http://en.wikipedia.org/wiki/Memory-mapped_I/O) but there must be something even better than that.

These slides have the limitation of being slides, but they seem (at first glance) to be pretty good.

(http://research.cs.tamu.edu/prism/lectures/mbsd/mbsd_l16.pdf)

6f666579onJan 24, 2018

This might be fundamentally irrelevant to this thread, but it got me wondering and I would like some assistance/guidance:

Whenever I read the mailing list, or threads related to it, I don't understand 99% of the stuff. Do I need to know C _very well_? Do I need to be familiar with kernel? If so, how do I go about doing that? At the moment I'm reading "Code: The Hidden Language of Computer Hardware and Software".

jtmsonJuly 27, 2018

Not sure it qualifies as an introduction to any particular field within tech, but for a general deep dive into the inner workings of computers:

Code: The Hidden Language of Computer Hardware and Software

I just love this book! It was a joyous adventure of discovery the first time through. Subsequent reads always yield new insights.

mindcrimeonJan 2, 2017

Of the books I finished in 2016, I'd nominate a couple as contenders for "best of 2016":

1. Mastering the Compex Sale, by Jeff Thull. If you're interested in B2B selling, I highly recommend this book. Thull's approach is dramatically different from the old-school "Alec Baldwin rant in Glengarry Glen-Ross" stuff you may have been exposed to. He encourages a model where you act more like a doctor, or a detective, and practice "Always Be Leaving" instead of "Always Be Closing".

2. It's Not The Big That Eat The Small, It's The Fast That Eat The Slow by Jason Jennings. The title is a good summary. Jennings makes an argument for the importance of "speed" as the primary driver of competitive advantage. There's more too it that that, so just read the book.

3. Code: The Hidden Language of Computer Hardware and Software by Charles Petzold. If you didn't take, or have forgotten, classes like Computer Architecture or Digital Logic, this is a great book for getting your head around the low level details of what's happening in side a digital computer. Petzold starts from VERY basic examples (using a flaslight to morse code messages to your friend across the street) and slowly builds up to a full-fledged (if somewhat minimalistic) CPU.

Edit: some unlucky soul commented Atlas Shrugged and got downvoted / flagged / whatever to death. I didn't read AS in 2016, but I have read it, and I do recommend it to everyone. It has its issues, but it's absolutely a book everyone should read, whether you agree with Rand's ideology or not. And if you aren't familiar enough to Rand's ideology to know if you agree or not,that's all the more reason to read Atlas Shrugged (or The Fountainhead).

bprateronOct 19, 2014

If you want a comprehensive read on this topic, check out the book Code by Charles Petzold: http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...

pacaroonMar 20, 2013

The best bottom up approach to this that I have seen is Charles Petzold's "Code: The Hidden Language of Computer Hardware and Software" [1] which starts with using a flashlight to send messages and walks up the abstraction chain (switch, relay, alu, memory, cpu...) to most of the components of a modern computer. It's very accessible.

[1] http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...

cjbaronApr 10, 2015

CODE - Charles Petzold

Seven Concurrency Models in Seven Weeks - Paul Butcher

http://www.braveclojure.com/

azelfrathonOct 31, 2011

Before reading this book, I had what I thought was a fairly solid grasp of computing. I was 19 (20 now), largely self-taught from spending nights on Google instead of going to parties, and if I didn't know the details of something, I knew enough about the concept to get by. I could program well enough in a few languages, talk about hardware, security, and protocols for hours...

I still had no idea how 10010011000110101001010 etc etc allowed me to play World of Warcraft. There was a small part of me that hoped beyond hope that computers were magic and there was some grand conspiracy going on to cover that fact.

Then I read CODE.

My hopes were shattered, but they were replaced by something much more treasured: Understanding.

mulcaheyonMay 19, 2016

+ 1 for GEB. I read that freshman year (now a junior).

As an example of its utility, I really like its description of formal systems which are a somewhat simplified version of context free grammars. There are many other concepts described in that book that give similar but more intuitive explanations of CS concepts that helped me understand them as part of "the bigger picture."

CODE: The Hidden Language of Computer Hardware and Software, which is mentioned on here a lot, was helpful for similar reasons.

mindcrimeonJan 16, 2017

Recently? And actually finished as opposed to skimming or working through parts of?

Code by Charles Petzold.

Of the ones that I haven't finished, but have at least looked at, I think I'd say:

Machine Learning for Hackers by Drew Conway and John Myles White

and

The Master Algorithm by Pedro Domingos

GrumpyYoungManonAug 19, 2016

For a good high-level introduction aimed at technical readers who aren't CompEs, I suggest Jon Stokes "Inside the Machine: An Illustrated Introduction to Microprocessors and Computer Architecture". It's a readable and reasonably in-depth explanation of how a modern processor works without going into the level of detail that a full-blown computer architecture textbook would.

Charles Petzold's "Code: The Hidden Language of Computer Hardware and Software" is also well regarded, but is aimed more at non-technical people.

adolfopaonAug 26, 2012

For beginners, these are good:

- How to design programs (http://htdp.org)

- The Little/Seasoned/Reasoned Schemer.

- Code: The Hidden Language of Computer Hardware and Software by Petzold

- Coders at work by Peter Seibel

- The Pragmatic Programmer by Hunt and Thomas

- Code Complete by McConnell

For intermediate/experienced people:

- Structure and Interpretation of computer programs (http://mitpress.mit.edu/sicp/full-text/book/book.html)

- Software Tools in Pascal by Kernighan and Plauger.

- Programming Pearls by Bentley

- Smalltalk 80: The Language and Its Implementation by Adele Goldberg.

- Paradigms of Artificial Intelligence Programming by Norvig

- A Discipline of Programming by Dijkstra

While I've ommited some important language specific books, and ignored essential areas (algorithms, discrete math, hw arquitecture), I think this is a good starting point.

gary__onDec 11, 2014

The Soul of a New Machine by Tracy Kidder, the classic book following the development of a new minicomputer in the late 70s.

http://www.amazon.com/Soul-New-Machine-Tracy-Kidder/dp/03164...

Stealing The Network: How to Own the Box. This is a collection of fictional accounts of "hacking" written by hackers. Real world techniques are described though its in lightweight detail, the aim of the book is more to give an insight into how an attacker thinks. It's quite an enjoyable read too.

http://www.amazon.co.uk/Stealing-Network-How-Own-Cyber-Ficti...

Kingpin: How One Hacker Took Over the Billion-Dollar Cybercrime Underground by Kevin Poulsen. This one's a true story.

http://www.amazon.co.uk/Kingpin-Hacker-Billion-Dollar-Cyberc...

Code: The Hidden Language of Computer Hardware and Software By Charles Petzold. I still have to read this one, but I expect it would fit in with what you're after quite well.

http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...

DanBConJune 22, 2020

"This is not my hat": https://www.amazon.co.uk/This-Not-Hat-Jon-Klassen/dp/1406353...

The humour is subversive, the illustration is lovely, and these ("This is not my hat" is another) are great books for younger children. My child loved it, and the people I've given this to have gone on to buy other books by the writer or illustrator.

"Mr Birdsnest and the House Next Door": https://www.amazon.co.uk/Birdsnest-House-Next-Door-Little/dp...

Little Gems are a set of books printed on reduced contrast paper, with a large clear font. They're short, simple, but fun. They're good for younger readers or for slightly older reluctant readers. My child enjoyed reading this book, and loved the illustration. The other child I gave this to took out other books in the Little Gems series from the library, and bought other Julia Donaldson books with her pocket money.

"Code: The Hidden Language of Computer Hardware and Software" https://www.amazon.co.uk/Code-Language-Computer-Hardware-Sof... I had a friend who knew a lot about the software, and knew a lot about hardware but their hardware knowledge was a bit patchy. Code helped solidify their knowledge. If I could have afforded it I would have given them The Art of Electronics and the companion Student Manual. (This was in the 1990s. I haven't read the new version and I don't know how well it works today.)

"Bomber Command" https://www.amazon.co.uk/Bomber-Command-Pan-Military-Classic... I liked this book because it describes how we (the UK) went into world war 2 with ethical notions around not bombing civilian populations and ended up fire-bombing several heavily populated German cities. It's also eye-opening about the scale of this part of the war, and the cost in lives of aircrew.

kbelbinaonNov 25, 2013

Code Rush. Documentary about Netscape:
http://en.m.wikipedia.org/wiki/Code_Rush

mtrnonApr 29, 2012

I started to read Code: The Hidden Language of Computer Hardware and Software by Charles Petzold two days ago - and he starts with morse code (and braille). You're right, it's no programming language (just an encoding) - but seemingly near conceptually to a language (for Petzold, anyway - yay it's got 0's and 1's, too).

whytakaonOct 10, 2020

I'd spent one of the most educational years of my life this last year reading, "Designing for Data-Intensive Applications", "CODE: The Hidden Language of Computer Hardware and Software", and "The Design of the UNIX Operating System".

While they haven't given me any expertise on how to actually use these technologies to solve intricate problems (only experience and true depth can do that), they have given me a near-complete picture of what ordinary computers do today. Nothing is magic. Everything is a logical operation.

I only regret I hadn't read these back when I was a teenager.

PS. Next thing I would like to learn is the general design of modern CPUs and branch prediction.

awonghonJan 12, 2017

I've probably read about 9.5/10 of the last books on a kindle.

I think the format is perfect because of several factors:

1. for books I read through once and never actively reference again, or very seldomly

2. I don't have to wait for the paperback to come out

3. I don't have the eye strain of reading on an ipad or my phone

4. For a large majority of my purchases it doesn't make sense to own a physical copy of the book. It seems like it would be a hassle to own and carry and take up space. (also see #2)

5. a kindle is light and cheap enough that I don't have to stress too much about breaking it or leaving it somewhere or it being conspicuous to have out in public

However, the kindle fails at some important things:
It's not in color, so it doesn't do well for books that are image heavy (even in black and white) - the display is a little too small and any images in the book tend to look terrible for some reason (even though the supposed dpi is relatively high) -which brings me to your point, that in general I find that phones, tablets and kindles are not particularly good at replicating the browsing experience of a certain kind of book.

I don't think all books fall into this category, but some important ones do and I can't imagine not having a physical copy for that reason.

The last one that comes to mind for me is Code: The Hidden Language of Computer Hardware and Software. I like browsing through all of his examples and diagrams and flipping back and forth through the different parts that interrelate to each other.

I've never found an electronic browsing experience that was as good as a physical book. (unless I was at the point of wanting to implement some formal system of organizing and linking my ideas, in which case I think a computer would be preferable)

The kindle particularly fails at this experience, as an integrated piece of hardware / software it's merely competent and has a lot of rough edges. It's not as seamlessly integrated in the way iphones (for example) are.

GrumpyYoungManonSep 19, 2020

Assuming that you actually mean computer engineer (as in digital logic and computer hardware) and not software developer, as so many people here are assuming, there are a lot of resources available:

For a gentle overview of how digital logic and CPUs work, Charles Petzold's book "Code: The Hidden Language of Computer Hardware and Software" is solid introduction. Nisan and Schocken's textbook "The Elements of Computing Systems" and the lessons at the NAND2Tetris site (https://www.nand2tetris.org/) are good if they want to get hands on with the subject.

There are a variety of robotics and electronics interfacing kits based off the Arduino and Raspberry Pi available through Adafruit and SparkFun. If they're more interested in the digital logic side, Digilent provides FPGA boards and test instruments intended for use in educational environments that also include tutorials https://store.digilentinc.com/the-zynq-book-tutorials-for-zy....

[EDIT] I've seen some recommendations for the video game Factorio in this thread and, odd as it may sound, it would not be a bad gauge of interest. Digital logic is all about getting the right signals to the right place at the right time and doing the right thing with them and Factorio definitely teaches analogues of that.

[EDIT 2] Another interesting project for them might be to build a computer from chips. Ben Eater has a design, tutorials, and sells kits for building a 6502 computer (Same CPU as the Apple II) on a breadboard: https://eater.net/6502. (Not sure I'd want to try that without a 5V tolerant logic analyzer but they're cheaply available nowadays, e.g. https://www.seeedstudio.com/Logic-Pirate-p-1750.html) Note that I don't vouch for any of these, they're just examples of what's available out there that your friend can investigate if it piques their interest.

pan69onJuly 18, 2010

While you're at it you might want to pick up a copy of "Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold. One of the most compelling and well written books on the subject I've read. Reading this along side learning C and Assembly language will make it all "click".

http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...

bcaa7f3a8bbconMar 3, 2019

I like the opening of this aricle. It almost mentioned all the interesting books about the folklore history of computing. All the books mentioned in this article are worth reading.

> Extant histories of the internet favor either heroic or deterministic narratives. On the determinist side, we have Paul Edwards’s The Closed World (1996), Fred Turner’s Democratic Surround (2013) and From Counterculture to Cyberculture (2006), John Markoff’s What the Dormouse Said (2006), and others that describe the internet as the result of collisions between large-scale Cold War policies or zeitgeists. With some variations, these narratives portray the digital revolution as born from the improbable marriage of countercultural hippie experiments and the military-industrial complex.

> On the heroic, individualist side, we have Steven Levy’s Hackers: Heroes of the Computer Revolution (1984), Katie Hafner and Matthew Lyon’s Where Wizards Stay Up Late (1996), Michael Hiltzik’s Dealers of Lightning (1999), Walter Isaacson’s Innovators (2014) and Steve Jobs (2011), Leslie Berlin’s Troublemakers (2017), and Adam Fischer’s Valley of Genius (2018), whose titles speak for themselves. Histories in this genre extoll the whimsical personalities and talents of digital entrepreneurs and inventors, of whom Jobs is the prime exemplar. Some do acknowledge the contingencies that facilitated the rise of these digital “geniuses.” But overall, they tend to represent Silicon Valley as a titanic battleground that proved the superior mettle of its winners. Both extremes are tempting in their clarity; both make for a gripping story. Occasionally—as in Liza Mundy’s Code Girls (2017) or Margot Shetterly’s Hidden Figures (2016)—a simultaneously individualist and Marxist approach unveils underappreciated digital counter-heroes.

DanBConJan 1, 2012

{most of this post is for the future people who happen to find it. You sound as if you have most of this knowledge already.}

Yes. Get a breadboard and powersupply and some jumper leads and some LEDs and start building stuff.

Then get some books; Code (the petzold book) and Art of Electronics are both good examples to start really building stuff, and understanding what's going on.

When you've got beyond the initial introduction you want to start using an oscilloscope to start seeing things like leading edge or falling edge, and measuring the times, and seeing how timing issues come in to play when you have a long chain of slow logic gates.

Fun (as in puzzles and stuff) things to do include building one type of logic gate using a different set of gates; use Karnaugh maps etc.

This is a really good way to get used to logic states and timing and using a scope to trace a signal path and compare what you're getting with what you think you should be getting.

Don't forget with real world builds to include de-coupling capacitors.

I was taught to create a memory map from a circuit diagram, which I guess is handy if you're into that kind of low level stuff. (Probably embedded stuff now.)

EDIT: Thanks to Shabble for the correction!

daveloyallonJune 28, 2016

Hm, I came up with this idea independently, 5 < years < 10 ago, after reading the first third of Code: The Hidden Language of Computer Hardware and Software.

Neat!

I just figured that you could redesign common ICs so that they had a new wire akin to the "carry" bit. I called it the 'done' wire, and I figured you could just tie it to the CLK of the next IC. Ya know? So 'doneness' would propagate across the surface of the motherboard (or SoC) in different ways depending on the operation it was performing. Rather than the CLK signal, which is broadcast to all points...

(I know that my idea is half baked and my description is worse. I'm glad I found this PDF!)

I knew the big advantage would be power savings. I called the idea 'slow computing', and I envisioned an 8-bit style machine that would run on solar or a hand crank and be able to pause mid calculation until enough power was available... Just like a old capacitor-based flash camera will be able to flash more frequently when you have fresh batteries in it.

You'd just wire the power system up with the logic. Suppose an adder fires a "done" at some other IC. Now, put your power system inline, like MiTM... When it gets the "done", it charges that capacitor (a very small one? :) ) and only when enough power is available does it propagate the "done". ...Maybe the "done" powers the next IC. I dunno.

As I said, half baked. Glad to find out that I'm not the only one that dreamed of 'clockless', though!

uolaonOct 8, 2016

SICP might be a good programming book, but I'm not sure it's a good book. If your friend doesn't have programming experience something like "Code: The Hidden Language of Computer Hardware and Software" might be an easier way to start. Here is the first paragraph from each for comparison:

SICP: "We are about to study the idea of a computational process. Computational processes are abstract beings that inhabit computers. As they evolve, processes manipulate other abstract things called data. The evolution of a process is directed by a pattern of rules called a program. People create programs to direct processes. In effect, we conjure the spirits of the computer with our spells."

Code: "You're 10 years old. Your best friend lives across the street. In fact, the windows of your bedrooms face each other. Every night, after your parents have declared bedtime at the usual indecently early hour, you still need to exchange thoughts, observations, secrets, gossip, jokes, and dreams. No one can blame you. After all, the impulse to communicate is one of the most human of traits."

yumaikasonAug 8, 2016

Code: The Hidden Language of Computer Hardware and Software was one of the most formative books for my programming self education. I've tried to loan it to several of my friends more than once, and it was a gift to me.

Also had a strange case of loaning out C# 4.0 in a Nutshell and never getting it back, but I would do it again (with an updated version). Albahari is good at writing a reference without being too boring, and C# has some legitimately interesting sides in how it does some things, like it's dynamically compiled regexen.

purpledoveonOct 17, 2010

All of the fears he mentions are present all of the time when coding - fear of working on the wrong thing, fear of not being able to solve problem X, etc... Those fears are healthy and there for good reason - to enable the planning and execution of software projects from small to large. In fact, a developer who did not have, say, the fear of working on the wrong thing would...spend a lot of time working on the wrong things.

I'm not really sure I buy the idea that any of these fears would be substantial enough to impact the allocation of time on programming unless the person in question had some issues to work out such as procrastination.

Afraid of what others will say? Don't tell them. The practice is still going to be worthwhile.

Afraid of not finishing? Break down the project into small chunks, write tests to make sure the small chunks work properly, and iterate between planning out the next steps and executing the next step in the queue (in theory, any number of subsequent steps can be added, removed, deleted, or re-arranged after executing any single step).

Afraid you won't know how to solve a problem? Which problem? Did you read the Wikipedia article and consult the relevant textbooks?

Afraid you're not working on the right thing? First figure out what the right thing is, and justify why it is right. If you're working on anything else, stop. Now start planning how to approach the right thing. You are now working on the right thing, for a discussion on when to transition to coding, see Code Complete.

sbuccinionDec 13, 2012

I've actually had a lot of success with my Kickstarter projects thus far. One just came in today, and I'm very satisfied. So far I'm 7/10, with 3 projects currently pending.

Here's what I've backed, and how they've turned out:

Successful

* Sunski Sunglasses - A resounding success. Just got my pair today, and the item was exactly as described. The glasses, packaging, and design is all top-notch

* Wear You Live - A local company (for me at least) that used the money to purchase the initial equipment. I received all items promptly and on schedule.

* Cowboy Comb - Not as ambitious (they just wanted enough interest to make producing the combs profitable) but I got my item quickly and exactly as described.

* Freaker USA - Upgraded coozies. Another project that is putting people in my area to work, plus the updates were hilarious. I got my items exactly as described and on time.

* The Jay DeMerrit Story - Used the Kickstarter campaign to build buzz and raise funds for additional footage. Ended up getting the film a few months later.

Pending

* Castle Story - A Minecraft-esque strategy game. They've released alpha, and while I haven't played it, they've been really good about updating me and I think they're actually going to ship this game...eventually.

* Fight for Space - A movie currently in production, but they seem to be making solid headway. I honestly have no idea how this one is going to turn out.

* Code Hero - This is the one all the buzz has been about recently, but apparently they've been actually making progress.

joe_the_useronJune 28, 2016

As books go, Code Complete isn't intended to be memorized but to be understood. I would imagine a coder already having an internal model of how to write code and using a book like Code Complete tweak and improve that model.

Also, I read something like Code Complete for the same reason I've read the parent blog. Even though I feel like I know the basic points here, writing good code inevitably is a trade-off and so one more idea of how to make the trade-off is useful.

gooseusonAug 7, 2016

This is the sort of thread that hits me right in the wallet.

Here are some books I've given as gifts recently:

* The Knowledge: How to Rebuild Civilization in the Aftermath of a Cataclysm, Lewis Dartnell[1]

* The Black Swan, Nassim Taleb[2]

* Siddhartha, Hermann Hesse[3]

* The Happiness Trap, Russ Harris and Steven Hayes[4]

* Code, Charles Petzold[5]

[1] https://www.amazon.com/Knowledge-Rebuild-Civilization-Afterm...

[2] https://www.amazon.com/Black-Swan-Improbable-Robustness-Frag...

[3] https://www.amazon.com/Siddhartha-Hermann-Hesse/dp/161382378...

[4] https://www.amazon.com/Happiness-Trap-Struggling-Start-Livin...

[5] https://www.amazon.com/Code-Language-Computer-Hardware-Softw...

mindcrimeonDec 8, 2016

It's Not the Big That Eat the Small...It's the Fast That Eat the Slow: How to Use Speed as a Competitive Tool in Business
by Jason Jennings & Laurence Haughton

Code: The Hidden Language of Computer Hardware and Software by Charles Petzold

What Is Relativity?: An Intuitive Introduction to Einstein's Ideas, and Why They Matter by Jeffrey O. Bennett

Spooky Action at a Distance: The Phenomenon That Reimagines Space and Time—and What It Means for Black Holes, the Big Bang, and Theories of Everything by George Musser

Towers of Midnight (Wheel of Time, #13) by Robert Jordan & Brandon Sanderson

Second Foundation by Isaac Asimov

Just started reading The Penguin History Of The World by J.M. Roberts & Odd Arne Westad. I'd always found history interesting in a general sense, but other than a couple of specific periods that I found interesting (the American Revolution, WWI, WWII), I had not studied the subject in much depth. So I figured I'd start with a good single-volume overview of World History as a whole, then go back and dig deeper into additional areas that pique my interest.

So far it's pretty fascinating. It's especially interesting when you see how elements of our modern world have roots that can be traced back for millennia. It's also fun to note the extent to which geography and climate have impacted the evolution of human civilization(s). It gives you a lot to think about in terms of dealing with anthropogenic climate change. Even if human civilization isn't wiped out completely, we could certainly see massive changes in the nature of our civilizations as a result. At least history seems to suggest so.

hiddenfeaturesonJune 10, 2013

I would have probably said (with some imprecision):
Electrical circuits either carry a current (binary 1) or they don't (binary 0). [Ignoring the fact that you could also measure the AMOUNT of current carried here] Because of this underlying limitation in electrics you need to make do with just a binary system in computers.

Depending on the amount of time remaining I would either go into more depth or point him towards "Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold (http://amzn.com/0735611319)

ohduranonJuly 27, 2019

The history of computer science is dauting. Unlike physics, though, it's the history of incremental innovations that culminated in what we have today. Thus, if you go back in time long enough, things eventually are manageable.

A good primer on the history of CS is probably Code, The Hidden Language of Computer Hardware and Software, by Charles Pretzold. I've put together some notes on it here: http://alvaroduran.com/code.

Any feedback is much appreciated!

joshvmonNov 16, 2013

Some resources on making tiny Hello World programs down to the kernel level that may be useful:

https://blogs.oracle.com/ksplice/entry/hello_from_a_libc_fre...

http://www.muppetlabs.com/~breadbox/software/tiny/teensy.htm...

http://timelessname.com/elfbin/

A wee bit heavy, but it's comprehensive. It deals with what happens when you run code, how the architecture of the computer works (by and large) including at the logic level:

http://www.amazon.co.uk/Computer-Systems-Programmers-Randal-...

If you want to go lower (and higher).. look at Understanding the Linux kernel for a good understanding of how an OS is put together, with specific examples i.e. Linux.

Code, by Petzold, deals with logic and computers from the ground up. It starts with relays and builds them up into gates and usable arithmetic blocks.

http://www.amazon.co.uk/Code-Language-Computer-Hardware-Soft...

http://www.amazon.co.uk/Understanding-Linux-Kernel-Daniel-Bo...

The physics is fairly simple, at least from a CRT or LED display perspective. Gets more tricky dealing with interconnecting microprocessors because a good chunk is vendor specific.

I think this kind of project is well suited to a guide on how to build a computer from the ground up, starting with logic gates, writing a real time OS and developing a scripting language that will run and compile on it. Then you can skip a lot of largely extraneous stuff and have a solid understanding of how the hardware works.

intellegacyonOct 28, 2012

To learn CS, Programming, and Python, I'm currently working through:

6.00x (MIT's edX Intro to CS course), Python
https://www.edx.org/courses/MITx/6.00x/2012_Fall/info

CS101 (Udacity's Intro to CS course), Python
http://www.udacity.com/overview/Course/cs101/CourseRev/apr20...

Python the Hard way (Zed Shaw's online book), Python
http://learnpythonthehardway.org/book/

Code Academy, (Python track), Python
http://www.codecademy.com/tracks/python

I consider 6.00x and CS101 to be my CS foundation and Python Hard way and Code Academy to be brush-up on the Python/programming. Working through all these in tandem really hits my brain in 4 different but complementary angles.

jrubinovitzonFeb 8, 2012

I have done work at a charity that mails donations of books to prisons called "Books Through Bars", and I am always excited to get a request for books on programming. You may want him to send a request to them, there will be some lag time, but it sounds like he has a bit of time left.

I'd go with "Code: The Hidden Language of Computer Hardware and Software" or a Donald Knuth book.

davidxconSep 18, 2012

If you're not too familiar with hardware or how computers work at a low level (assembly language, instruction sets, etc), then I would think about reading Code: The Hidden Language of Computer Hardware and Software.

It starts off with a story of two kids communicating to each other with flashlights in Morse code, and slowly builds up into how a computer works.

TwinklebreezeonApr 14, 2021

There is no quicker way to get me disinterested in a book than the words non-fiction. And there is no shot that I am reading a book if I'm not interested in it. I've noticed lately that when I hear or read someone talking about reading (it has come up in a few podcasts I listen to) it often comes up that they are talking about non-fiction. I've read one non-fiction book outside of school[1].

I read for escapism, or to explore other worlds in my imagination. Reading gives me something fantastical to think about. If I want something real to think about I use the internet. Books have never filled that role, and I've never really considered them for it. Am I missing out? Should I try and shake my prejudice against non-fiction?

[1]: Code: The Hidden Language of Computer Hardware and Software

spbonJune 11, 2015

> Intro articles like this do a lot to reveal biases and misunderstandings.

This is one of the reasons I barely recommend any intro articles in Lean Notes (http://www.leannotes.com/): almost every single one is just a stream of incomplete and incorrect statements about how the world works, based on the author's myopic personal experiences.

Rather than properly generalizing and consolidating what needs to be said to convey a full understanding of the topic, most intros settle for the first example they can think of that could be remotely construed as related to the words they've previously used for whatever subject, regardless of whether it has meaning in any context. (Example: saying that type safety prevents you from trying to "multiply seven by cats".)

It seems like a pretty Dunning-Kruger thing: the less broad your knowledge is, the more justified you feel in writing an introductory text to the field.

The only time I've ever seen somebody actually qualified to write an introductory text actually doing so (as I can immediately recall) is Charles Petzold's [Code: The Hidden Language of Computer Hardware and Software][Code] (although I suspect, from the few excerpts of it I've seen, that Brian Kernighan's "D is for Digital" is good, too).

[Code]: http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...

mindcrimeonMay 29, 2017

Gosh, there's so many. But these come to mind:

1. Neuromancer - William Gibson

2. Snow Crash - Neal Stephenson

3. Hackers - Heroes of the Computer Revolution - Steven Levy

4. How to Measure Anything - Douglas Hubbard

5. Godel, Escher, Bach - Douglas Hofstadter

6. The Pragmatic Programmer - Andy Hunt and Dave Thomas

7. The Soul of a New Machine - Tracy Kidder

8. Code - Charles Petzold

9. The Shockwave Rider - John Brunner

10. Ambient Findability: What We Find Changes Who We Become
Book
- Peter Morville

11. Don't Make Me Think - Steve Krug

12. The Design of Everyday Things - Donald A. Norman

13. The Mythical Man-Month: Essays on Software Engineering - Fred Brooks

14. Decline and Fall of the American Programmer - Ed Yourdon

15. Cube Farm - Bill Blunden

16. The Philip K. Dick Reader

17. The Cuckoo's Egg - Clifford Stoll

18. The Prince - Niccolò Machiavelli

19. The 48 Laws of Power - Robert Greene

20. The Atrocity Archives - Charles Stross

21. Business @ the Speed of Thought: Using a Digital Nervous System - Bill Gates

cfmcdonaldonMay 28, 2021

Author here. They are very different. Code (a fantastic book, by the way) is a technical book that provides an introduction to how computers work from first principles. The Switch is a historical book that describes how the switching components of the first computers evolved in a telecom context (starting from the birth of the telegraph), then were adapted for computing.

There's a bit of crossover insofar as Code uses relays to build an understanding of how digital logic works and has a few brief historical asides. Likewise The Switch provides a few brief technical explanations to help the non-expert reader along. But in general The Switch will not tell you much about how computers work and Code will not tell you much about where they came from.

MikeTVonApr 27, 2017

You might be interested in "Code Katas" - small, targeted programming exercises. Check out codewars.com, codekata.com, codekatas.org, etc.

Also check out ACM Competitive Programming problems [0]. They're small projects, usually centered around logic, mathematical calculations, and data processing.
If you want a challenge, take one year's problems and try to complete all eight in under five hours without an internet connection (physical reference material allowed).

[0] https://icpc.baylor.edu/worldfinals/problems

tranvuonDec 19, 2017

- The Road to Character (David Brooks)

- Code (Charles Petzold)

- Soft Skills: The Software Developer's Life Manual (John Z. Sonmez)

- Zero Bugs and Program Faster (Kate Thompson)

- Daemon (Daniel Suarez)

- Algorithms to Live By: The Computer Science of Human Decisions (Brian Christian)

- How to Talk to Anyone: 92 Little Tricks for Big Success in Relationships (Leil Lowndes)

mbrdonMar 5, 2016

If you haven't already read it, "Getting Things Done" by David Allen is one of the best known productivity books.

Some people I have spoken to say his method isn't for them but I've found it useful, even if I haven't implemented everything he suggests.

I'd also recommend "Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold. It starts at simple circuits and builds up a picture of how computers work. It has really helped me get my mental models of what's going on inside a computer straightened out!

libraryofbabelonOct 10, 2020

Agree. Yes, it’s extremely interesting. I look back fondly on my youthful hours/days/weeks spent tinkering with assembly.

And yet. To a junior dev who asked me for advice on this stuff today, I’d just say read Code: The Hidden Language of Computer Hardware and Software, and if you like that then work through Nand to Tetris, and then go back to whatever you need for you day job.

juliend2onFeb 10, 2020

I would say the Telegraph.

In the book [CODE: The Hidden Language of Computer Hardware and Softwar](https://www.amazon.com/Code-Language-Computer-Hardware-Softw...), Charles Petzold talks about how it's foundational to the eventual invention of the computer.

Back then, it also meant coast to coast communications were almost instantaneous. And soon after, transatlantic cable-enabled telegraph boosted commerce between America and Europe.

itsmemattchungonFeb 16, 2017

100% yes.

I started with Elements of Computing: creating a half-adder and then a full-adder chip. But, I couldn't understand how I reached my solution—I was relying on my intuition. Then, I started reading "Code", which takes the reader on a journey from shining flash lights to communicate with your neighbor, all the way to bridging the gap between boolean algebra and building a relay.

Built withby tracyhenry

.

Follow me on