I realized something a couple days ago: the computer industry is built on "extendability". This is an oversimplification, but I find those are useful for talking about stuff. =)
First off, a commenter on Nils' blog posted a very interesting link to The Escapist about the future of gaming being procedural. The article also had a link to an interesting youtube video of a "pixel city" the author created using procedural algorithms. This got me started thinking, on a couple of fronts. Today, I figured I'd just stick to the philosophical part of it.
Computers are based on transistors; basically digital switches, though they can also be used for amplification purposes. Engineers started out linking those transistors together with other components to create various electrical devices, most of them analog. Then they used them to come up with logic gates, the basic unit used for building digital devices. They then linked those logic gates together to create various simple logic units; an example might be a simple circuit for adding two binary digits together. Then they linked those units together to create larger units, like a circuit that adds two large binary numbers together. Then they linked those together with other units to create basic processing units. Then they worked on making those processing units bigger (figuratively speaking), by putting more of those subunits together, and allowing them to make more calculations and more quickly, resulting in today's CPUs.
Putting CPUs into computers lead to it being the programmers' turn. Starting out with simple instructions, they created a machine language that was standardized for working with the computer devices and CPU at the lowest level. Then using that language, they created more complex languages, such as Basic. Then using some of the simple units of those languages, and machine language, they created more complex languages, eventually reaching today's level of compexity, which C++ is a good representative of. Then programmers used the basic units of C++, things like ints, floats, chars, and arrays, to create classes, such as strings, lists, stacks, queues, and trees. Using these various data types, they created more complex data types and functions. Now, using all those subroutines and data structures, programmers create complex programs that fulfill all sorts of functions. And they set up ways for different programs to communicate with each other, with their operating system, and with other computers across networks.
Every step along this entire description is a case of people taking smaller pieces and making something of them. Not only that, but then making it so that their creation can then be used as a piece in still larger creations. This is called extendability.
Ultimately, everything in computers is a representation of reality. And everything is extendable. No single person understands all the details of every step listed above. That's like knowing the job and duties of every single individual in the US. However, that segues nicely into a common function of computers: representing the real world. Everything from simple arithmetic, on up to simulations, info search (read: Google), and virtual worlds; they're all representations of the world in various forms.
However, the world itself is "extendable". Collections of atoms form molecules, which then form proteins, which then form organic cells. Those cells group together to form organs, which then work together to make our bodies. Individuals form friendships and families. They also form companies, and teams and organizations, and institutions. Institutions form the basis of state and provincial governments which combined make up countries and nations. Finally, those nations (try to) work together as the United Nations, while also trading across boundaries and forming extra-national institutions, and dealing with multi-national corporations.
No one understands all of this, and there's no way to represent it all. That's why any discipline that focuses on understanding the world around us works at focusing on only parts of the whole in order to simplify and make things understandable for an individual. However, we should always keep in mind that no matter what our understanding is, it is always partial, incomplete, and imperfect. In other words, the world is BIG, and there's no way to get it all - but we'll keep trying.