#567
It is no measure of health to be well adjusted to a profoundly sick society

Understanding Abstraction

It's been a while since I posted about my thoughts and musings. I've finally found some time to just sit back and write out my thoughts. So, here are my thoughts about abstraction and how complex things become easy.
Kia Kroas :=: 29 Nov, 2009 02:45:30


Semantics first. I will take the definition that an abstraction is a collection of methods or tools to facilitate quicker, easier, and/or more efficient utilization or access to a collection of more basic or primitive methods or tools. Therefore, multiplication is an abstraction of addition. Given the task of summing the total number of items in 7 sets of 12 items, why take the tenuous route of 12+12+12+12+12+12+12 versus 7*12? As another example, currency is an abstraction of the barter system.

Abstraction is only a result of the pattern recognition that is so finely tuned in the human mind. I will not venture to the point of describing every level of interaction as an abstraction level. (I could, of course, but that is not the purpose of this article.) We try to learn new things and do useful stuff. Repetitive tasks tend to not be very useful nor fun. So, when possible, we group together sets of related tasks and find some way to make it better and faster. Abstraction is an attempt to minimize and simplify something too simple to be made useful. By minimize I mean to say minimize amount of knowledge and thinking required to make use of or to use whatever is being abstracted.

This is especially true in the case of computer science and programming. We have come a long way in a very short time frame because of the many abstraction layers that have risen as need came along and the patterns recognized. The first computers had to be fed sheets of punch card paper. Those punch cards held the instructions that the computer has to operate. Back then, the hardware had direct access to the software; the hardware read its instructions directly.

Nowadays, the layout has changed. The computer hardware no longer has direct access to the programs it is being used to run. Inside the computer hardware, there is firmware. In essence, firmware is the core operating system of that piece of hardware, and is only concerned with the operation of the hardware and any interaction it may have with other pieces of hardware based on some standard protocol. The BIOS is a quick example of a computer firmware. But hard drives, graphics cards, routers and modems have their own firmware as well--it's just not exposed to the end user. On top of the firmware is the operating system (which is practically a type of firmware that handles interaction with other hardware). Windows, Linux and Mac are the big three in the computer operating system war. Then there's the software. Binary assembly commands gets abstracted to hexadecimal gets abstracted to API/kernel calls gets abstracted to programming languages gets abstracted to libraries gets abstracted to frameworks...and it continues.

Obviously, people really should not attempt to make things more complex. Other people will never pick it up. But there's a point where if all people know is the higher layers of the abstraction, they no longer know the basic building blocks and fundamentals of how those higher layers work. At that point, people only learn to use something instead of learning to make use of it. The difference between using and making use of something is when you are using something you are limited to only what that something was made to do, whereas when you are making use of something you are using that thing to do something it was not made to do--but still perfectly excels at doing. For example, a book is made to be read, but it can also be burned to keep warm or be used as a dumbbell. Stack enough of them up and you have a table or chair.

People are skipping out on the core, choosing instead to jump into the higher abstraction levels. After all, that's where the business is. And where there's business, there's money. However, if there aren't people to manage the low-level intricacies, the higher level of abstractions will fall apart very quickly. Using something without knowing how to make use of it is inflexible. If no one dwells looking at inefficiencies of the old systems, they will never get fixed or replaced or updated. We then linger on outdated abstractions.

Luckily, the influx of 21st century population increase wipes all worries about lack of availability of people. The accumulation of all the world people's lifetimes is enough to do some amazing deeds. Consider 6.6 billion people of the world, for every second that passes in realtime, 209 years of life has gone by. Think of all the untapped potential with all that time! The ability of these people on the other hand, is highly questionable. When I take into account the current state of entertainment media in the developed world, and lingering economy in the newly industrialized countries, and lack of everything in the developing world, all that vast potential seems so wasted and lost.

As I understand it, in the current state of affairs, the developing world is living in the technological dusty shadows of the developed world. They use the old technologies too inefficient to be used in the developed world. If the developing world (particularly the newly industrialized countries) had the time and need, I believe they would be perfectly capable of handling the lower abstraction layers for the developed world. However, I do not know whether the developing world knows how to make use [side note 1] of the things they use or whether the developed world just dumped the trash on them when the new inventions came. The undeveloped world--if I am allowed to be blunt as I always am--may be better off as is.

When I say undeveloped world, I mean those small tribes or nomads or groups of people who do not partake in global commerce and have no sake in doing so. These peoples--who number too few in modern times--hold on to the roots of the primality of man. They represent the cultures that could have been, the origins of all the modern abstractions.

If it is possible to keep the developed world as the knowledge store of high level abstractions, to make the developing world the managers of lower abstractions, and to leave the undeveloped world alone then we all will be in a good condition. (There should be room of interchange and mixing of duties. In a country of millions, it would be impossible for at least one to not want to dig deep into understanding.)

There is the issue of a developing country becoming a developed country. Sooner or later they will abstract the lower abstraction layers of which they have been making use. And they will become a developed country. What to do when all the developing countries become developed? First, I will state that I do not ever believe anything of the sort will happen. Some country will always be behind another in something. Second, countries fall from being a developed country to being developing. Third, having everyone be in the developed world does not force everyone to use the higher level abstractions. (At least I hope not.) It may actually be better because the knowledge and information about each abstraction layer is available.

[side note 1] It is a horrible generalization to group entire groups of countries and say the people don't fully understand something. When I say this, I mean that the general (majority) populace does not understand it.

:: Comments ::

Comment on this story
Name, Nickname, or AKA :


Message :


Copyright Kia Kroas 2009