logoalt Hacker News

RcouF1uZ4gsCyesterday at 1:45 PM9 repliesview on HN

Doesn’t silent, invisible, intangible also apply to software?

You can’t really tell a particular piece of hardware is running software by a direct physical measurement. You can only infer that indirectly.


Replies

hearsathoughtyesterday at 5:38 PM

> Doesn’t silent, invisible, intangible also apply to software?

No. Because software is hardware.

> You can’t really tell a particular piece of hardware is running software by a direct physical measurement. You can only infer that indirectly.

You can literally step through code. Have you ever used a debugger or a profiler? You can dump memory, check the registers, read off the disk, etc.

If software was silent, invisible and intangible, you couldn't store it on disk, or copy it to memory. A computer wouldn't work if software was as you describe it.

Zigurdyesterday at 2:04 PM

Having debugged code with a logic analyzer, I'm pretty sure the voltage on those CPU pins is real, and really the consequence of the code I think I'm running.

show 2 replies
kesslernyesterday at 2:34 PM

If software were undetectable by any means, we'd have no way to run software or tell which software is running at a given time.

DharmaPoliceyesterday at 4:15 PM

Software (that is running on hardware) isn't a great example - you'd be better off going with something like prime numbers. They don't really "exist" in the same way a toaster does. Souls also don't exist (citation needed etc) but are a similarly useful (for some people) way of thinking about the world.

SigmundAyesterday at 6:08 PM

Software can make sound, not silent, software can make things appear on the screen, not invisible, software can affect physical objects through device control, not intangible.

Nothing like an invisible dragon you might claim exists without any of the above.

ajrossyesterday at 3:55 PM

As others are pointing out, this isn't true. You can absolutely infer the software state of a system via physical measurement.

But what's interesting isn't your mistake, it's why the mistake was made. The abstraction stack in software is really, really really thick. You don't normally "measure" your software, you add a log statement or run a debugger, and that's more software. And those debuggers aren't written over hardware, they're software too.

But eventually, you get down to the point where there really is hardware in the way. A debugger that tells you the content of a memory address really is, down the stack, doing a memory read, which is an instruction to hardware to measure the voltages in an array of inverter pairs structured as a level 1 SRAM[1]. Or it's setting a breakpoint or watchpoint, which are CPU features implemented in hardware, etc...

The hardware is always there, but we've done such a good job of hiding it that even practitioners are fooled into thinking it isn't there.

[1] And of course there's a stack there too. But read instructions hit the L1 cache.

dghfyesterday at 2:33 PM

What? Yes you can. I know my laptop is running a web browser because I can see it and interact with it. That's a physical measurement.

show 1 reply
wat10000yesterday at 3:09 PM

Only in the same way that it applies to, say, a tree. You can never observe a tree directly. All you can do is infer it from the nerve signals coming from your retinas and touch receptors.

The point of the dragon in the garage isn't that you can't measure it directly. It's that you can't measure it at all. It has no observable effects at all. Software definitely has observable effects, as do trees and almost everything else that people accept as real.