on mathematical "truth"
here is a recent comment i made on hacker news:
"actually, i'd say that in mathematics, things are provably true given that the initial assumptions are true. however, mathematics does not so far as i know deal with the truth of those initial assumptions (axioms), it simply accepts them as true. where this gets interesting is that you can say, what if this axiom was not true? let's assume it's not. and then possibly come up with a whole new system of mathematics (like non-euclidean geometry) which may turn out to have actual use in previously unsolvable problems."
first a caveat, i am not a mathematician. although i received a ba in mathematics from the university of north texas somewhere around 1997, i have always felt like i must have somehow tricked them and did not really deserve the degree. i still think that i probably exited college with about the mathematical understanding of an equivalent math minor who really studied.
regardless, the idea of mathematical systems still fascinate me and i think about them from time to time. one of the interesting things about math is that it is both made up and eternal at the same time. that is, at the lowest level, the concepts of math are composed of pure thought, and there is no way to prove that the basic substrate of mathematics is "true". however, given that we accept on faith these basic low level tenets (usually called something like "axioms") then mathematics is the exercise of finding all the interesting logical consequences of those axiomatic statements. for example, given a universe or system where parallel lines cannot cross (and associated other necessary axioms), then one can prove that the sum of the interior angles of a triangle is always 180 degrees (or pi radians).
here we see one of the most interesting aspects of mathematics, which unfortunately tends to be glossed over in basic mathematics courses. for in one sense, the whole thing is founded on a system of statements that we simply accept at the start. so from that point of view it is made up. we could conceivably come up with other foundational statements to accept and then we would actually have a different system of mathematics. and this happens from time to time. someone said something like, "what if parallel lines could cross?" – and now we have an entire field of mathematics called "non-euclidean geometry".
however, despite the fact that these systems are as i’ve previously described "made up", they are also eternal. that is, given that the laws of logic hold (consider that question a bonus exercise), those systems that we derive from our axioms hold forever, in whatever universes those axioms are valid. therefore, as before, given a universe or system where parallel lines cannot cross (and associated other necessary axioms), then one can prove that the sum of the interior angles of a triangle is always 180 degrees (or pi radians).
now outside of pure mathematics, math is usually used by non-mathematicians as a notation or language to describe certain concepts or processes that correspond to situations in the real world. these users, generally, are using math because it is a useful tool, not because they have a deep feeling of the truth or untruth of the mathematical statements they make, but rather, because the mathematical tool they are using, somehow matches the situation or data they are analyzing. as a result they are hopeful that since they are able to fit their current data to some mathematical concept, that concept may be used to predict future behavior of the same or similar situations.
for these users, mathematical terminology is often employed without a real analysis of whether it has any foundational connection to the issue being described. looking at the introductory literature for physics or chemistry will reveal a number of instances where a physical behavior follows a certain mathematical function. sometimes the scientists do not know why the behavior follows that function, simply that it does. and in those cases they are content to use that knowledge in spite of their inability to explain the connection.
however, users can be confident that at least the mathematical exposition of their statements can be assumed to hold as long as the foundational principles of our shared mathematical understanding remain true. whether their statements have anything to do with our shared reality, is only as certain as their ability to tie observed reality to their chosen mathematical notation.
c++: my 10 percent
this morning, i realized that the way that i really want to use c++ is not c with classes, but c with stl.
i’d be relatively happy to use c++ just as c but with the extra containers that the stl provides.
in my mind this would involve using structs as the primary data structure instead of classes. i know that in c++ there’s not much difference, but i’m imagining here keeping structs to their default c behavior and only using classes when c++ behavior is desired.
i did realize that you probably want to still use classes when you are dealing with resources. basically anywhere you’d need to clean up a resource that a struct would hold, use a class instead.
an thought i had while considering all this is that go provides something fairly close to this subset of functionality.