3 ms·
For myself, I think a good way to think of science is to consider the universe as a program, and that scientists are doing black box reverse engineering. We at
by jbandela1 10y ago
For myself, I think a good way to think of science is to consider the universe as a program, and that scientists are doing black box reverse engineering.
We attempt to reverse engineer the mathematical logic of the universe based on observations, and once we think we have the mathematical "source code", we do experiments which compare the outputs of the source code (our mathematical models) with the outputs of the universe given the same set of inputs.
There is even the analog of refactoring where a better overall "architecture" can dramatically simplify the "source code". An example would be the move from Ptolemy and epicycles to the heliocentric view of Copernicus and Kepler that greatly simplifies the "code" for planetary motions.
In addition, just like when you test a function, extreme inputs can reveal bugs. Relativity and quantum mechanics came about in this manner. We had the Newtonion "source code" and it seemed to work very well in that the output of our source code matched the output of the universe for all values that we were able to supply as input. Then it became possible to measure the universe's outputs for velocities near the speed of light and masses that were subatomic. We then realized that our reverse engineered "source code" and the universe gave divergent answers. Based on this, Einstein rewrote the reverse engineered source code in such a way that it was both very elegant and matched the universe for velocities near the speed of light while still passing all the Newtonian unit tests.
Bohr et al, wrote code, that matched the universe's output when feeling with subatomic particles.
Unfortunately, while both the Einstein's code and Bohr's code both give correct answers, there is a giant if statement that governs whether we call Einstein or Bohr.
Having that giant if statement and separate Einstein and Bohr functions is seen as not elegant and scientists have been trying to write a single function that gets rid of the if statement and still passes the Einstein and Bohr unit tests. This is called "grand unification".
This model, at least for software people like me makes a lot of sense. For example, just like a unit test that fails gives you far more information than one that passes, so an experiment that diverges from the expected value of our current "source code" can tell us in which way our source code needs to be refined.