Hacker News new | ask | show | jobs
by Swizec 1114 days ago
> There's a difference between being self-taught, and not even bothering to teach yourself the absolute fundamentals of computing, like binary

Been doing this for almost 30 years now, about 15 of those professionally. I think the last time I used binary was in a microcontrollers class in high school.

Even in college, yeah we talked a lot about binary, we learned the single most useful thing in my career – truth tables – and we dived deep into how CPUs toss bits around. Did we ever use binary for anything practical? No of course not, that’s what the compiler is for.

I mean I guess the real question is: What does “learn binary” even mean? Knowing it exists? That’s easy. Knowing that your code is eventually all binary? Yeah great. Knowing how NAND gates and such work? Well that’s discrete mathematics, bool algebra, quantum physics, circuit design, and whatever field of math talks about translating problems from one to another, not “binary”. Being able to calculate, by hand, numbers from binary to octal and decimal? Meh you can have a computer do that or google the algorithm when you need it. Does “learning binary” mean memorizing the ASCII table so you can read hex dumps or whatever? Maybe, doubt a lot of modern engineers still do that tho.

1 comments

>Did we ever use binary for anything practical? No of course not, that’s what the compiler is for.

How to tell people you have never implemented anything performance sensitive in your life without spelling it out bluntly in a nutshell. The code of any popular image processing/decoder/encoder/compression/cryptographic libraries is littered with the use of bit operators because they operate at the fundamental building block level of computing, they are the most efficient and the "sufficiently smart compiler" that supposedly always produces the best interpretation is a lie. You merely need to skim through any implementation of jpeg, of h264 or anything that actually matters in this world to see the practical application of working on bits in the real world.

But sure, understanding computer architecture is meaningless. Trust the compiler. Thank gods I can still see stutters scrolling a web page on a 16 core CPU with 64gb of ram. I don't know how I could live my life if people actually knew how to make proper programs!

> How to tell people you have never implemented anything performance sensitive in your life without spelling it out bluntly in a nutshell

And that’s okay. Millions of engineers work on software that leverages those fine-tuned optimizations. Hundreds of engineers make them.

Plus I grew up in an era of cheap compute. Everything got faster every 18 months for free. Even now computers as a whole keep getting faster and faster despite the cap on single core performance.

Even at my relatively high level, the performance concerns I spent months learning about in 2005, just don’t matter anymore when you can get a single server with terabytes of ram and petaflops of compute.

99% of [user facing] code just isn’t performance bound these days. What does it matter if your loop takes 10ms or 20ms when the data is a 300ms network call away