As you all probably know, I just arrived in Israel, for a year-long ‘research’ project as a Fulbright student scholar. Many of you have asked “But what exactly will you be doing?” My answers have been vague because to a large extent I still don’t know. While I plan on taking some art classes at Bezalel academy of art and being in touch with a computer science advisor from the Technion, my actual project is still very much up in the air. But, while I can’t be clear on what I’ll be doing, I can at least give you a bit of what I’ve been thinking about, since that’s sure to play a part somewhere in my project.
Mostly, I’ve been thinking about abstraction.
Abstraction is a process that we perform every second of the day, without even realizing it, and yet it is powerful enough to be the basis of the computer age, mathematics, pretty much all academic disciplines, as well as social and political movements. The general definition of abstraction is the process whereby information is organized into models and categories by focusing on certain details, but choosing to exclude others that are unnecessary or even distracting.
Maybe a few examples will show just how...well... cool this process is.
While we may be the first generation to have grown up with computers around, it’s pretty obvious to all of us that they’ve completely changed society in ways that were unimaginable before this. Ever wonder how a computer works? I probably didn’t really think about it very much till I took a class in computer architecture. (Just so you know this will be a horribly general, and probably somewhat incorrect explanation, but hopefully the point will come across) We’ve probably all heard the word ‘transistor’ before, and I just assumed it was some complicated little piece that makes my computer work. It’s not. It’s not really complicated at all. Its basic function is pretty much that of a little piece of wire. If you input an electric current, it will either output an electric current, or not, depending on which type of transistor it is. That’s it! Then how in the world can that be what accounts for 99% of what goes on inside a computer? How does that account for 3-D video games, wireless internet, google, i-phones and the words you’re reading right now?
Well, what was amazing about that class in computer architecture is that we made our way from that little piece of wire, all the way up to the complex computer programs that are responsible for all of that. From transistors, you can build logic gates - simple circuits that can perform conjunction, negation and other simple logical operations. Those, in turn, can be combined to create simple ‘machines’ which can perform operations like addition, combinations and even store memory. Throw together a good assortment of those ‘machines’ and you can build the processor that is the core of your computer. The language of that processor is pretty unintelligible to humans - just a bunch of 1’s and 0’s known as machine code, but we can get a handle of these codes by building a very simple programming language known as assembly code to perform basic operations. Finally, low-level programming languages, like C can be built on top of assembly, and once you’re there, it’s only a short leap to all of the amazing operations done by our computers.
At each of these jumps (ie - transistor to logic gate, assembly to C, etc) we perform an abstraction. We assume that the underlying machinery will work as its supposed to, so we can just forget about the complex details of what is actually occurring. I can assume that if I put two numbers (encoded into binary) into a simple adder, the outcome will be their sum, and if I type in a web address, the page that comes up is the one I was looking for. I don’t have to worry about which logic gates are used in an adder, or how the internet will manage to send me exactly the information that I want through a complex network of wires and routers. It just works! That is the power of abstraction.
There are a million more examples of processes and phenomenon that can be seen through the lens of abstraction, and are equally amazing. The neurons which make up our brains. The way our minds filter everything we see so that we are only conscious of those details that are essential to our evolutionary survival. The entire field of mathematics. The way an artist chooses to represent the world (not to mention the entire artistic movement dedicated to abstraction). Projections in linear algebra. The senior project I did last year on data compression. All of these things can ( I believe usefully) be seen as acts of abstraction.
Finally, I’ll just quickly mention that following a discussion with a mentor of mine, I began to see the dangers in abstractions that are too general, or leave out some details that just shouldn’t be left out. In computer science, this has been dubbed (by Joel Spolsky) a Leaky Abstraction. When people get grouped into categories based on some commonalities, disregarding the differences between them, the results can be disastrous. This is what racism and stereotyping are all about. It is the reason that some people might assume that if someone is a Republican, they’re bent on killing innocent Iraqis, or if I say that I support Israel, it means that I agree with those people who would love to prevent students from Arab countries from studying in America. ( I wrote an editorial in issue 4 of Kedma which is tenuously connected if anyone is interested - www.kedmajournal.com)
Dangerous, no?
Subscribe to:
Post Comments (Atom)

No comments:
Post a Comment