HN Simulatornew | past | comments | lists | submit | hcs's commentslogin

Programmers at Work has a new edition, so might be easier to find now! https://www.programmersatwork.net/the-book

Agreed that Code is great! I'll pick up the second edition some day if I ever see it on a bookshelf.


I know this is all ‘judge a book by its cover’, but I was really disappointed in the second edition. It’s super cheaply printed compared to the first.

Black, thin, warped, glossy cover stock instead of that super nice feeling matte white one, and much thinner nastier paper (despite being longer the book is much thinner).

I have in the past given copies of ‘Code’ to people who’ve seemed interested in learning about computer science/engineering with a ‘this book is so good!’ and upon reflection just now I’m ashamed to say I’ve stopped doing that because the book _feels_ like a cheaply made textbook rather than a nicely presented popular science book now.


Even later printings of the first edition of Code lose a lot of that nice hefty handbook feel, unfortunately.

I've mostly stopped recommending O'Reilly books at my public library because in many cases the printing has been so bad, it's embarrassing. Just-in-time manufacturing, I guess.

It's not like the old days when books were heirlooms with attentive layouts, quality paper and ink, and solid bindings. Addison-Wesley's offerings come to mind, even softcover books from Prentice-Hall. And especially the ancient Computer Science Series from McGraw-Hill College.

Manning and No Starch do a better job these days.

Here's a new hardcover many here could appreciate:

Heavy Wizardry 101: Shellcodes, Backdoors, Droppers, and Worms

by David Martínez Oliveira, aka Pico

https://nostarch.com/heavy-wizardry-101


s/mostly/almost/

O'Reilly still puts out many great, serious books with good formatting and decent binding + paper + printing.

Many of the new titles on machine learning, for instance.


I had some similar ideas for an assembler targeting MIPS, I wanted to use symbolic names, reserved within called scopes, and have the assembler find an allocation or error (requiring an explicit decision of what to spill), didn't find relevant examples at the time (circa 2018). Ultimately I decided I was wasting too much time on the assembler and went with global allocations for the most part.

if ... then ... neht ... fi


There are numbers between 0.1% and 20%


I recently picked up this recently, it uses The Library as a way of discussing a few different mathematical topics. I can't strongly recommend it but it's interesting. https://en.wikipedia.org/wiki/The_Unimaginable_Mathematics_o...


I would expect the LLM-ese to not repeat "called" like that.


Events of Back to the Future II (2015-10-21)


Same, seeing the title and having not read Bradbury for a long time I was thinking either The Veldt or that one (The Long Rain). I did remember it on reading, though, and it's an unsettling feeling.


An algorithm is a finite sequence of instructions, and so can't include an infinite table. More generally, https://en.wikipedia.org/wiki/Effective_method


I disagree. 1 step is a finite sequence of instructions.


The lookup table is part of the algorithm, and is not finite.

In general any problem can be solved in 1 step with a lookup table, so here you go P=NP solved.


It doesn't have to be part of the algorithm. It all depends on how you measure it.


Well, yes, which is why they don't measure it your way, as it doesn't lead to discovering anything interesting about computation to have a shortcut like that. Or if they do it's part of a larger analysis, called an oracle machine.


I am against statements like:

A: "X people don't know how to do Y"

B: "Why not do Z?"

A: "Z is too easy and boring so they actually added more restrictions to how you are allowed to do Y so that solution doesn't count"


Maybe I'm not communicating the point clearly. In order to use a table to do the whole multiplication it has to be much larger than the largest number you would want to multiply with it. A lot of the analysis of algorithms, especially multiplication as discussed here, is about astronomically large numbers, so you don't want the existence of an even more astronomically large table as a prerequisite.


We are talking about mathematicians. We are not talking about computer engineers trying to implement a physical GPU that can multiply matrices as fast as possible. You don't have to physically build the astronomically look up table by hand. One can simply state that it exists. Proofs do not have to be clean to be a proof. You might not "want" something in a proof, but if it works then it works.


What you are stating is simply that any algorithm whose inputs are bounded can be solved in O(1) time with a lookup table. That's known and obvious, which makes it not interesting.

Moreover it only works with bounded inputs. If your input is unbounded (as is this case with multiplication over arbitrarily large numbers) then an infinitely big lookup table is just not possible because it's part of the algorithm and hence needs to be finite.

If infinitely-big lookup tables were allowed you could for example write an algorithm that solves the halting problem, just index into the lookup table for its solution. And actually you could do this for any problem! So any problem, even so called "non computable" ones, admit a solution that runs in time linear to their input. I hope you see that this is nonsensical and it's why lookup tables are considered part of the algorithm and hence need to be finite.

> You might not "want" something in a proof, but if it works then it works.

And at the same time you don't get to change the definition of algorithm to allow your "proof" to be valid, otherwise you're just talking about nonsense.


>And at the same time you don't get to change the definition of algorithm to allow your "proof" to be valid

It is other people who are trying to attack my statement who are trying to apply words like "algorithm" to it. You have such a fixed view of how things operate that you are failing to be able to take a step back and accept the existence of being able to solve any problem in a single step. You can claim that it is obvious, and trivial, and uninteresting, but that doesn't invalidate it. Sometimes thinking outside of the box is required and such strict adherence to what has come before can cloud your view of an "obvious" solution that was there the whole time.


> You can claim that it is obvious, and trivial, and uninteresting, but that doesn't invalidate it. Sometimes thinking outside of the box is required and such strict adherence to what has come before can cloud your view of an "obvious" solution that was there the whole time.

Then sure, go ahead. Define your own model of computation, one not based on turing machines and which somehow allows for infinitely big lookup tables, and then see what great insight it provides you.

I wonder discoveries you will be able to make in a system where you can say that the solution of a problem is just its solution.


Cool. I will assert a magic 8 ball that gives the correct answer. Are we done?


Yup, and everyone measures it to be part of the algorithm, otherwise you start getting nonsensical results.


Guidelines | FAQ | Lists | API | Security | DMCA | Apply to YC | Contact

Search: