Infinite Power Computing Theory

Vladas Saulis
7 min readApr 21, 2023

--

In God you trust…

Photo by Ivan Slade on Unsplash

1. Prehistory

“In corporation religions as in others, the heretic must be cast out not because of the probability that he is wrong but because of the possibility that he is right.“ — Antony Jay

Finally I decided to publish my vision on future computing principles. Excuse me. There is a very moment to do so. Also, please excuse me for my semi-poor English. Globalization came just right out of the corner, so I’m forced to write this paper in English.

I started thinking about the future of systems some time ago, probably in 2000 (on the edge of centuries), by first moments just with shy wonder, and by the time — more closely and with more precise. This theory is not only about infinite power of computing, this is only precausion, but in fact, this theory is more about: how do we program such unlimited and powerful computer systems in not so distant future? What principles of computer systems programming have we to take from the past, and, which is of more importance, what new principles of programming and algorithms are we to invent, when we achieve that incredible computer power?

This paper is also about how we can use an unlimited disk space, random access and other memory(ies)?, CPU cycles, and whatever else we will invent in near future. This paper is not about the very distant future, I cannot predict that far (it can be another paper, not so precise, though). This is about our nearest future, in which we are already in process to step in.

I‘ll try to write this in simple language, using quite simple terminology, as it exactly corresponds the very soul of topic which I‘m taking on. And, of course, it strongly correlates with my current knowledge of English.

Ok. Take a deep breath, we are getting in. To understand the idea of theory, let’s start with:

2. Unoptimal algorithms

K.I.S.S. me…

In the recent 20–30 years, everything we had to fight with computer systems programming, could be converted to one and only one problem — the lack of computer resources. Every single program or computer system was designed with this postulate in mind. The use of more and more sophisticated algorithms and techniques was in need for only to tackle with underpowered computer systems, under-spaced disks and low memory. Probably every student knew, that quick sort is better than bubble sort, never mind it requires more memory for algorithm itself. And more thinking. And more explanation. And more understanding. The whole system design was an infinite set of compromises between human brain limit and limited computer resources. No one person, never before, could keep the whole system’s code in his brain. Not for Linus. Not for Gates. If we only had more computer resources — one could think…

So, here I have good news for you — now we finally are about to have unlimited resources!

In order to understand this my proposition, lets determine what is it, in my means, — the infinite (or unlimited) power of computer system. Yes, sure, — it is a computer system of unlimited resources and speed. Yes, I know that it cannot exist at any times, never ever. So, I’m forced now slightly to easy this definition towards more possible and normal situation. How much power do you need today? How much do you have now? Add 200%. Not enough? Add 1000%. Quite enough? This means, that the today‘s infinite power is, in fact, reachable. And even more — it is not even strictly necessary to reach that power in order to start using the new programming and system design concepts that I’m going to talk about.

Thus, herewith we defined the terminology and the concept of infinite power.

infinite power
Photo by Thomas Kelley on Unsplash

Now we are in infinite power world, and we can start wondering how we can live inside it. In other words — how we can take advantage over this situation?

Lets take a simple common situation. Databases and indexes. Since we are unlimited (in resources and speed), lets think — whether we must continue using binary and sometimes even trinary trees for indexing and searching for information? Or can we just pass through linear text file to search the pattern? If this sounds too terrible for you, — Ok, lets take a step back and create indexes. But should we use the binary structure for them anymore? In the world, where computing power gets close to unlimited, there is no need of this excessive technology anymore. Any other unoptimized algorithm provides the same result in speed and functionality. More than that — it is much simpler and more understandable, thus — manageable and supportable. So, in this world, old indexing practices becomes kind of forgettible technology (technology to forget).

We have a plenty of such forgettible technologies nowadays. Just remember the nightmares of VMM (virtual memory management), memory locking, task switching, multithreaded filesystem access (together with swapping/paging) and so on, and so on… And here I’m coming to another part of my proposal concerning the culture of writing modern and future systems! The KISS principle is not enough! In fact, this principle is more about writing the most possible simple code in our present/past situations, but we need to transform it for writing future, unlimited applications/systems. It took about 30 years in computing history to invent rather logic — WYSIWYG interface paradigm. It was nearly impossible to invent it in starting years (40–60ies). Think why? Correct. The power of computing system had to become adequate for this to happen. And now — another 30 years passed since that invention. And now I’m dare to introduce another shift in computing psychology. This principle is, shall I call it:

3. What You Write is What You (really) Think

I don’t expect you’ll understand me… © Linus Torvalds

Did you ever had a brief look at the Linux kernel code? I cannot ask you to look inside the MS Windows code, unfortunately. But I do expect the similar situation. Guess, what percent of comments on these code-chunks is really about the normal flow of things? In other words — about the normal flow of normal peoples mind flow when they are in situation of examining problems? I’d count only for 10–15%. The rest and the biggest part of comments are about abnormal thinking. And this was quite normal when we spoke about programming all the past years. Every programmer suffer from it, and that’s why normal programmers don’t like to write comments. Ones he had invented pervasive way for solving the problem, he wouldn’t like ones and again explain it in details! For example, when he takes sorting as a problem, he doesn’t dare to solve it in normal flow of his mind! Because the result will be slow. Thus, he forced to undertake his mind and to think, how to do it in more sophisticated way, only to make it working fast. And only few programmers, sometimes, gets down to the Earth, and lets into describing this undertaken mind and write details of his thinking as an algorithm.

D.Knuth is the most notable example of this — in par excellence. Besides his undisputable talent, many, and in near future, — most of his hard work will nicely fit to our forgettible things category. I want to excuse for my such categoric position. Of course, the humanitarian values of his works are and always will be significant. I speak here only about the ultimate thinking princilple of the whole past epoch of programming.

Surprisingly — some things, which were Wrong in the past, suddenly becomes Right in the future! I’d like to relax you — that was happening always. Back to my days when I worked for one bank, we had a very nice joke algorithm. We called it Stepas’s algorithm. Who of us would dare that time even to think, that it can become quite good in some future! The algorithm itself was nothing special, except that it made several passes through the database table in order to print totals for some selected accounts. When launched it was impression, that the whole computer system had been hung, except that sometimes it printed a line of a total for one of the accounts. Yes, we asked Stepas to rewrite this program to make one and only one pass through the account table. And, since then, it was a continuous enjoy about this algorithm perspectives and further abilities.

But now, when I think about Stepas’s algorithm, I become more serious. Why on the Earth, have we to exploit our mind in such erode way, only in favor of underpowered computer, which will never be such underpowered anymore! Why not to think in a straight (let me say — naïve) way, for it to make things simpler, more understandable, and more manageable? Why go opposite direction — away from our [Nn]ature?

I’m not to tell, that from now on we all should write all our programs in Stepas way. I’m only to tell, that some incorrect algorithms suddenly may become correct in some future, especially when we speak in the terms of the task goal, not of the performance.

to be continued…

--

--

Vladas Saulis

Computer programmer, system programming, C, Asm, Javascript, Mongo, Parallel Javascript: http://parallel-js.net:8888