For me, as a programmer, it has long been a fix idea to understand the inner workings of what we use day in and day out. After all, what we write on is often just abstractions over abstractions that are needed for other abstractions. Perhaps if this were a “technical or more thematic” blog, I would write a longread about how these two numbers are the foundation of almost all technical devices that function in a binary system. But here I am more sharing my thoughts. Quite recently I had a chance to meet a funny game Turing Complete, where in essence you have to solve a sequence of tasks to understand the workings of the simplest logic gates to a computer with its own assembler. And I can safely argue that there are plenty of such games and so on. But hang on to that. I’ve always been a supporter of the essence of realization rather than its ready-made solution, and this is where all the beauty of not just this game, but of people’s cleverness in general, is revealed. It is still a mystery to me whether this interest in everything is given from childhood or acquired in the course of life, but imho, the essence is so:
No matter if you are a programmer or have a passion for any other activity, I strongly recommend you to go much further than “oh, it works, it’s cool”. I have accumulated quite a number of cases when an idea put into implementation gives a very big impact in life. I’m willing to bet that I can find your number from 1 to 100 (considering more/less) in no more than 7 tries. I don’t know if one person would write to me, but I’ll tell you the gist of it:
Here is a simplified explanation of binary search.
If we go from 1 to 100 one by one, the chance that we will hit the nth try is 1\100 and there are up to 100 such tries. But if we start to reduce our range by 2, i.e. 100\2 = 50, we get into a different situation. Usually in such disputes do not say more / less, and in this case, this feature would not work, but since everything in the canon we are screening exactly half of the possible answers. Let’s say our number is 13, in which case you’d answer less. The next iteration is 50\2 = 25, again half of the answers are eliminated and on the next try our answer. And now it took me 3 steps to find the desired number :D It seems that the idea is not such a “wow”, but reading a book on algorithms it so caught me that it still does not come out of my head. And that’s the beauty of the idea. Here you can make a small correlation with books, because they often give grounds for reflection. Reading them obviously won’t make things worse, but there are other sources of information, so it’s all to your taste. Even in the game I could see the complexity and coherence of logical schemes in general. To summarize.
Sometimes just to make something your own you need to learn a little bit of someone else’s. Eniway, if you don’t believe me, believe the people who built quantum physics based on Newton’s mechanics, or those who created modern encryption algorithms based on simple ideas from number theory. So if I’ve seen further, it’s only by standing on the shoulders of giants.