Programming Paradigms

Computer science is a relatively young field, and it has rapidly evolved ever since its inception. This becomes increasingly evident when you look at computer science being taught versus computer science being used. This is extremely apparent in the misnomer: computer science. CS is more technical art than science.

For a long time, computers had finite computational resources and memory. Today, our average consumer-grade computer is comparable to a super computer from 1985. Thusly, the twenty first century requires programming paradigms far different from those taught in the twentieth century. It no longer pays off to optimize the number of calculations or amount of memory your program uses, unless you are specifically performing mathematically intensive operations. This blog voices that sentiment much better than I can.

So programming now is about implementing an idea. Its easy to rise above the technical nitty gritty details and focus on the concept at hand. Then programming becomes a form of poetry, in which you express your ideas in a structured and rhythmic way. Programming, at a consumer level, is no longer about getting a machine to do what you want; its about empowering people.

Just like a poet spends many hours revising their verses and getting the words to say exactly what is meant, a programmer spends hours rearranging and improving code to fulfill their idea effectively. And like poetry, there are many genres and styles of programming. Unfortunately, programming is also like poetry in the way that many students get turned off to it by the experiences they have with it in school.

Programming should be taught with the main objective in mind: we are here to accomplish a mission. Writing mechanics are practiced and improved, but without an idea behind a poem or story, it is pointless. Algorithms are important, and so is project design and planning. But these are merely implements with which to express the programmer’s idea.

This is why the most successful software is easy to use, is powerful, or grants people an ability they didn’t have before. When you use a program, it doesn’t matter whether all the variables are global, whether the project was built top-down or bottom-up. The functional differences of some of the most disputed methods are miniscule. Optimization is a trivial concern when compared with the user interface. Is the parse speed of one file format more important than the support of a larger number of formats?

Kids want to be programmers because of coding heroes like Notch, the creator of Minecraft. But Minecraft isn’t well-designed. In fact, the program is a piece of crap that can barely run on a laptop from 5 years ago despite its simplicity. But the idea is gold, and that is what people notice. This is why Minecraft and Bioshock, and not COD, inspire people to be game developers.

However, functional programming is the CS taught in schools. Schools need to teach the art of computer science, not only the science. Imagine if writing was only taught, even up through college, in the scope of writing paragraphs. Essays and papers would just be a string of non sequiturs (kind of like this blog). Fiction would have no comprehensible story, only a series of finely crafted paragraphs. Only those who figured out the basic structures of plot, perhaps by reading books by others who had done the same, would learn to write meaningful stories.

In the future, everyone will be a programmer to some degree. At some point data will become so complex that to even manipulate information people will need to be able to interface with data processors through some sort of technical language in order to describe what they want. To survive in a digital world you either need software to help you interface with it, or learn the language of the realm.

Yet children are being driven off in droves because computers are being approached in education from completely the wrong angle. Computers are tool we use to accomplish tasks; the use of computers should not be taught just because “people need to be able to use computers in order to survive in the modern world”, but because children will be able to implement their ideas and carry out tasks much easier if they do have an expanded skillset on the computer. Computer skills should be taught in the form of “how would you go about doing X? Ok, what if I told you there was a much easier way?”

Advertisements

Mediocre Super-heroes

It was just another ordinary day: I was letting Wikipedia impress human knowledge upon me. Suddenly, as happens often, a mildly interesting idea sparked within my mind.

To begin, let me explain some of the things I was looking at. Magnetoreception, for example, is an incredible phenomenon that seems drawn straight from science fiction. Yet, in nature it is fairly common. Of course, we only have inklings about how the mechanisms behind it might operate. To sum it up, many animals have the ability to detect magnetic fields and use them to navigate. This can be seen in migratory animals, for example. In addition, some aquatic creatures have the ability to detect the faint electrical impulses given off by other animals nearby; it aids them in hunting.

Moving into the realm of human-enabled abilities, I was looking at radio-frequency hearing, which is actually a quite common occurrence. As the name suggests, people have been known to hear sounds, ranging from buzzing to knocking (similar to the sounds of tinnitus) and seeming to originate from above and behind the head, when electromagnetic waves in the frequency of microwaves (300 MHz to 300 GHz) are within their vicinity. As it turns out, this is caused not by vibrations in the eardrum but by slight expansion of brain tissue within the skull creating pressure waves which stimulate the inner ear. Pretty crazy, right?

Then I remembered a documentary video I had seen about a guy who exhibited immunity to electricity. I looked it up, and it turns out that there are a couple of people like that. It comes from having naturally thick and dry skin, which increases resistance and lowers the amperes to a non-lethal level. The areas of the body which this applies to ranges from just hands to full-body and mouth.

On the level of increasingly bogus, take a look at this video, in which a Chinese man living in Java claims to be able to control Chi (funky electricity). I don’t believe it myself, but the video was well done and it looked credible enough.

Anyways, this got me to thinking about the show Heroes. Franchises which share that premise, such as x-men, try to explain the super-powers scientifically, but then introduce ridiculous powers (like vortex generation). I think that a movie/show in which both the super-heroes and the super-villains are both relatively mediocre would be excellent. For instance, one person might have the ability to regrow limbs, eyes, and organs not unlike a Caudata; and like a salamander, it would take them 2-3 years to regrow something like an arm. They would be able to afford being stabbed or shot or losing a finger, but they wouldn’t immediately be back in the fight. People could have enhanced magnetoception, RF hearing, electrical resistance, and electrical generation.

On the same thread, I highly dislike explanations that involve either the “10% of the brain” cliche, or the entire “brain wave” concept. Both are unbased in reality and are overused. Powers would be strictly based on phenomena that occur in the natural world. Devices that rely on technological concepts that have been conceived of but not yet well mapped out would be out. As a corollary, Batman-esque powers (i.e. being rich) would be discouraged for super-heroes. Super-villains, of course, almost always need to be rich. More important than riches is genre-sight (or lack of Genre Blindness), and awareness of things like the List of 100 Things to not to do as an Evil Overlord. Their mediocrity would lie in their plans and powers, not intelligence.

That train of thought can be taken a couple of stations farther. The villains may ultimately be more likeable than the heroes. Since the heroes have weak powers, they obviously have personality flaws (like Watchmen) as well (e.g. Superman is almost invincible, so he is almost perfect) and poor planning. Overall, however, both the heroes and the villains are playing a losing game. The villains’ plans aren’t that devastating (except for the occasional climax of a world-threatening plot), and the heroes are disliked by the media due to their imperfections.

Looking farther into the universe, the news of real super-heroes would no doubt spawn a wave of popularity within certain sects. Eccentric individuals or crazed fans would take a low-powered Batman approach and utilize cool pieces of technology for crime fighting, such as d3o or this (the guy made it himself for about $35,000, although prototyping cost him nearly half a million):

That was the essential fabric of my idea, but it could definitely use some ironing.

%d bloggers like this: