Truth And Programming
The following is a flow of Consciousness I had one morning right after waking up a few weeks ago.
It might not make any sense and I don't want to edit it because frankly I don't know what I was talking about for some of it.
But I had some neat revelations. Maybe you'll have some too, otherwise enjoy the ramblings of a madman.
BEGIN RAMBLINGS
Every program will do a thing, that's a truth. Sometimes you don't know the truth, i.e you think you know the truth but when measured (i.e, the program is ran with perceivable outputs) it doesn't match your understanding of the truth. This is called a bug. You then need to revisit your description of truth(grammar, language, programming language, code) to match your outcome.
You don't need the full truth to be successful in a goal.
But you need to be able to determine the full truth if you're unable to achieve your goal, and determining the entire truth should solve your goal.
The truth you're determining can expand multiple programs, or an extension to a program, or through some non-computer related action.
Truth description varies from language to language with different facilities to better describe truth or to obscure it. Types are a common facility in static languages. Pattern matching is common for functional languages. Dynamic languages still communicate truth, but with more possible deceptions. Kind of like when you're talking to your friends or a significant other you can say a lot more with fewer words.
What about abstractions? Abstractions are deceivers, but with the benefit of simplifying a more complex truth.
Perhaps you should minimize abstractions.
Perhaps you should abstract only when the truth of the program is better testified by that abstraction. Is that even possible? It's certainly not economical to never use abstractions, time is better spent deceiving somewhat.
Truth is complex. When taken far enough, impossibly complex. Truth May be impossible to know completely, but that's okay.
How might do we do truth seeking in the world? We describe our experience of reality with our bodies. We can use language to communicate to other people. We can speak truthfully and dishonestly. We may not be malicious in our dishonesty.
You could say everything in a way that maximizes truth, but that's inefficient for most goals of humans, so we take an economic action and use abstractions when we feel it's useful to use.
Sometimes we feel it's useful to not use abstractions.
"That movie was funny" vs "The part where he fell was hilarious". The latter is more specific and can back up the former, but the former is the truth you're trying to get across. Is one more truthful than the other? In this scenario I think they're equivalent. The only way to measure this is to experience the emotions of the author, so if they're saying both, we can assume to them it's true.
You could make it more universally truthful to say "I think that movie is funny", but in casual language this was the implied statement.
We develop more effective language with people we spend more time with.
Language is not completely verbal.