> Look you can’t eliminate IO and you can’t eliminate state in practice
Not only can you not eliminate IO nor state in practice, but it's literally the most important part. The useful things computers do are IO and state. The difference between using pure functions and combinators is the difference between which color of paint you're going to put on your car. The color of paint you put on your car has nothing to do with its drivetrain.
> To me, a computer "is" processors that step through memory locations interpreting them as operations and operands - not a state machine.
And what is that, if not a state machine with memory? Where the state transitions come from decoding/executing instructions and arguments, and the memory comes from ram/registers.
Although yes, that's kind of getting to a similar theoretical level as object = function.
One of the miseries of life is that everyone names everything a litte bit wrong, and so it makes everything a little harder to understand in the world than it would be if it were named differently. A computer does not primarily compute in the sense of doing arithmetic. Strange. Although they call them computers, that's not what they primarily do. They primarily are filing systems. People in the computer business say they're not really computers, they are "data handlers". All right. That's nice. Data handlers would have been a better name because it gives a better idea of the idea of a filing system.
>Computation itself is the most important aspect of computing. Code and data are just complexity to manage.
Of course you're gonna write some computation, else there would be no program. That's not the point here.
First, author doesn't mean "data" as in what comes in, it means the data structures of a program.
Second, for the purposes of designing a program (and its computation part) data structures are a better guiding principle than objects. That's the argument being made.
> What difference does it make whether the control and output have the same form of energy when the real thing that matters is the information it captures?
Just thinking out loud, but it might common assumptions about being able to (easily) compose a individual gates into a more complicated logic function.
> And the distinction between designing an algorithm and designing a machine is kind of arbitrary.
The distinction isn't arbitrary. If you can do something entirely in math/software then you can also hard code it into a physical machine, but the reverse obviously isn't true. There is no calculation you can perform on an abstract Turing machine that will cause it to generate electricity or thrust or refine steel or physically prevent someone from accidentally sticking their hand in a saw blade.
You can't free yourself from thinking in terms of languages :) Not a single one of the machine models -- TM, RAM, neural networks, DNA, digital circuits, quantum computers -- has a concept of a procedure. Procedures are language constructs. Whether you choose to compile Pascal or Haskell to x86 machine code is up to you, but in either case there would be a complexity price to pay.
Machine models take bits and they compute bits, period. Like an apple that falls, they just do they're thing. If a person then wants to say, hmm, that apple's path describes an integral of acceleration, or I will assign the input and output bits mathematical objects, and say that the mapping is a function -- they're welcome to do it, but it's not what the computation does.
> A meaningless symbol might as well never have been computed at all.
Everyone agrees on that. But an apple that falls without Newton to grasp its meaning still falls, and a machine still computes. For meaning you have to pay real, measurable complexity. It therefore doesn't make any sense to compare a model that pays that price with one that doesn't.
> Your computer's abilities are the result of little switches flipping between two states.
I don't think this is a reductionist view of a computer. That's exactly what it is, and with a very little imagination describes what it has the capacity to do. What computers do now wouldn't be a surprise to people in the 1940s.
> Writing a spec is a problem that can be broken down into sub-problems and so on.
Yes, a.k.a. programming.
If you assume that you have a machine powerful enough to do that, then you have a machine powerful enough to do anything at all: you are assuming the thing you're trying to prove.
There exists no universe where a machine that can do whatever you want by being instructed verbally isn't also replacing the one instructing it...
> Computers are programmable. A system created from logic gates, executing a fixed set of operations is not called a computer. Your washing machine is not a computer either.
> How is it that we can so easily describe some things about our brain states, that we'd never realize by physically looking at what brains do and how they behave.
As a software developer, this should be simple. Programs have their own state that you can understand without knowing the exact formulations of electrons in the processor that ultimately make up that state.
X = 5 sure but good luck figuring that out looking at the motherboard of a running computer.
> My opinion: Humans are good at thinking sequentially, imperatively.
It's more basic than that. The underlying CPU is unabashedly sequential and imperative. It even uses (shock, horror) bare GOTOs, i.e. conditional and unconditional jump instructions.
These other models might be more mathematically elegant in some abstract sense, sure, but I'd rather work with the underlying hardware than fight against it.
> Yes, but computers are not whats important in calculation. Algorithms are.
That's not correct.
> The physical properties of the computer don't matter in this regard.
That's not correct.
> You could do exactly what a computer does with pen and paper (it would just take a much longer time).
Yes, and that time matters greatly as it's the difference between practical and hypothetical. Beyond that, programs that can evolve their hardware have been shown to come up with optimizations no human could have created and thus the physical properties of the computer do matter.
> We are just starting to learn what computers are for.
This seems a bit like saying that we're just starting to learn what engines are for. What we use computers for will continue to evolve and we will never arrive at an end state.
Not only can you not eliminate IO nor state in practice, but it's literally the most important part. The useful things computers do are IO and state. The difference between using pure functions and combinators is the difference between which color of paint you're going to put on your car. The color of paint you put on your car has nothing to do with its drivetrain.
reply