3 ms·
> It’s still significantly better in practice than, say, Python where you need to resort to containers Just because it’s open doesn‘t mean it‘s easy. > Mathem
by leephillips 5y ago
> It’s still significantly better in practice than, say, Python where you need to resort to containers
Just because it’s open doesn‘t mean it‘s easy.
> Mathematica has this perception of being a black box, but much of its algorithms actually ship as plain text libraries.
Still a black box. Unless everything is open—open language, open interpreter, open compiler—then it’s not open.
> Worse is better
Better is better. Avoiding black boxes is better for science.
> Even if Wolfram open-sourced Mathematica tomorrow, nothing would change.
I think this would be huge, and a lot would change. Many people would use it who avoid it now. It’s really innovative technology.
Here’s one example of what I’m thinking about:
Suppose I read your paper and you have a nice plot of what you say is a numerical solution to an ODE, using algorithm ABC as implemented in v.XXX of Mathematica, Rich PI Edition. I want to get solutions for some different parameters, so I start by checking that I can reproduce yours. I code the ABC algorithm up (in Julia, of course (or actually I don’t have to: look, it‘s already in DifferentialEquations.jl. Damn that Rackauckas is prolific.)). Anyway, my result is different from yours. What do I do now? Where are the details that might explain the difference? Have we implemented ABC in exactly the same way? You can‘t tell me.
- Rayhem 5y ago> Still a black box. Unless everything is open—open language, open interpreter, open compiler—then it’s not open. Then literally nothing is open because no one is doing any significant computing on a fully-open hardware stack.
- leephillips 5y agoProbably true, but is it relevant? I think the crucial question would be: is there any reasonable chance that the hidden microcode, or whatever is closed at the hardware level, affects the results of a numerical calculation? Because the details of how a compiler translates source to machine code can affect those results.
- jiggawatts 5y agoFirst of all, differential equations can generally be verified to be valid solutions by evaluating the solution functions. So you don't have to cross-validate to check the output. Mathematica does this for you. If it can't, it'll complain that the solutions are incomplete or are likely invalid due to numerical error somewhere. Chaos theory is highly relevant here -- there is no way to directly compare two numerical solutions to many ODEs if anything is different. Unless the code is literally the same down to the machine instruction levels, all bets are off. Even floating point rounding error will result in sufficient noise to cause divergence. Mathematica -- like most of mathematics -- is not designed to operate in a vacuum, outputting solutions that are simply published as-is. Everything you do with it should be rigorously proven and/or verified in some way to make sure that it makes sense. This ought to be the same with any tool. You don't necessarily need to know all of its internal details in order to do this. Like I said, run the equations forwards, substitute solutions, use symbol and numerical methods, graph the results and make sure they make sense, etc...