Tuesday, August 25, 2020

When programmers deal with the Unintended consequences of programming anything really complex

One way that programmers deal with incredible levels of complexity is to work only in subroutines. But, eventually these subroutines are often glued together in various programming ways with completely unexpected results which often gives you the "Curse of dimensionality" regarding any computer program.

This is one reason why Beta programs exist because when you have complex computer programs you really don't know what kinds of problems will arise when you string all these subroutines together until you test them while they are all put together in the same program.

You know you are going to have Glitches but you hope you are not going to have real crashes where the program completely crashes and doesn't work at all. Glitches can often be overcome whereas real Crashes may or may not be overcome to reach the result you actually wanted. So, often you might have to go with a different result than you originally intended in order to keep your program basically intact. Or you might have to start over completely if the demands of the program are absolute.

So, to come up with a program that absolutely works and designers intended it might take 10 or 20 efforts of a group of people and hopefully then it will work.

However, there are now programs that help with testing programs that are now written that we didn't have in the 1960s and 1970s when I first learned to program and Microchips and Ram are very helpful.

RAM is maybe the single most helpful thing because now with RAM you can access memory from almost any direction which helps greatly in debugging a program.

Before this, memory was very very expensive before Ram and everything was done as a batch which is very tedious and time consuming compared to now.

Also, many programs are basically written by computers and not by humans at all because of this.

Which in the long run could cause human extinction simply because computer programs are NOT intuitive or instinctual enough to preserve human life on earth. They might preserve computer sentience but not necessarily humans or animals or plant life on earth.

Part of the problem of writing computer programs is many people can think of 5, 10, 20, 50 or 100 things at once. However, only a computer can deal with 100,000 or more variables at once. There really isn't any human I know of that can process in a linear way factors above about 100 things at once in any one second.

One way humans overcome this is to write things down within subroutines. But, when you string all these subroutines together they might not get along well much like when you put the wrong people together to work together there is chaos.












No comments: