18 – Higher Level Language

18 – Higher Level Language

I normally try to get these articles out by or just after the middle of the month.  This one was delayed, and for several reasons. First, in case you haven’t noticed, it’s really hot these days.  It’s the kind of environment that has people waiting until sunset to start to feel like doing any work, and by then there’s a lot of it.  Second, I gave two presentations in the course of about two weeks, and so I wanted to focus on those, and also to potentially have something to mention about them here.

The first presentation was a talk at a mathematics symposium hosted by another educational institution, in which I spoke about mathematics as the foundation for all knowledge, and therefore an essential component of everyone’s educational experience.  If you’ve taken a class with me before, or you’ve been paying attention while reading these articles, you probably already have a pretty good idea of my main points, so I don’t need to repeat them here.

The second was a joint talk with our very own Dr. Harrison, and this one involved a research project that she and I are working on to examine the impact of educational games on the logic and reasoning skills of very young students.  As long-time readers of these articles may recall from about a year ago, I have an interest in writing software that is both entertaining and educational – at least, I learn a lot from writing them and getting them to function.

In this case, the program we are using to experiment on children (which sounds a lot worse than it is) is called G.E.A.R. 1.1.  It is a fairly straightforward game program that I wrote a couple summers ago, and it has players navigate a little virtual robot (pictured here) through a series of obstacles to move from one level to the next.  The robot is given instructions through something called a “visual programming language,” which simply means that a set of image-tiles with meanings like “move forward one square,” “turn clockwise 90 degrees,” and “fire the lasers” are arranged in a sequence to describe a potentially complex series of steps to be performed.  The impact that using this program for a few weeks will be measured by means of some tests that we’ve developed.

Even though the project is still in its data-gathering stage, and therefore has not yet produced any actual “results” to speak of, the methodology we presented was very well received, and we look forward to being able to provide some significant findings very soon.

So what do these presentations have in common?  Well, from my perspective, talking. With some visual aids like Power Point slides, I had to articulate, clearly and to a real-life audience, my ideas.  Every presentation, regardless of the topic or audience, is at least partially an exercise in persuasion. At the very least, I have to persuade a room full of people to remain in their seats until I am finished, and I would hope to leave them with a good impression of the topic that I have chosen as my subject.

What I often find with my own students when they are giving presentations is that, rather than focusing on their audiences, their reactions, their body language, and their level of interest, they are more occupied with the fact that they are being judged.  It’s certainly true, and there’s no getting around it, that presentations are opportunities at which you are inviting others to judge you; your instructor, your peers, and maybe the people looking in through the windows… they are all getting to know you better through your public speaking, but that’s really not such a bad thing.

The word “judgment” certainly has a lot of powerful, and often negative, connotations, from the courtroom to the church house.  If you’re guilty of something, then of course, judgment is something to avoid. If you aren’t, though, then judgment is good. You get to show off your skills, talents, and knowledge.  Sometimes you even get to dress up for class.

As I often say, every course you take at Galen – in fact, every course you’ve ever taken – is a communication course.  Not every class will require you to stand in front of your fellow students once or twice a semester and speak, but your assignments, your test papers, and even your emails, are valuable occasions to practice your writing and/or speaking.  I’ve spoken before about the difficulties that instructors sometimes have deciphering the alien encryption byproducts that some of you folks call emails, and if you think that’s bad, you should see some of the hand-written midterms and final exams I’ve had to deal with just a few weeks ago.

No matter what your area of study happens to be, you’re going to need to communicate the results of your work to others.  Giving presentations is good for you, and if you’re fortunate enough to be in a class this semester that allows you to do that, then take advantage of it – give it your best shot, and practice it… don’t let the moment you begin to present be only the second time you’ve ever seen those slides or talking points (the first time being when you made them).

There is a concept in Computer Science known as the “level” of a language.  A low level language is composed of basic symbols that a technological system can use.  This includes binary or machine language, which encodes data as a series of 0s and 1s. A high level language, including the programming languages that our CS majors learn during their time here, is one that uses human-like expressions to convey meaning.

If I say “011010101011101111,” you probably won’t know what I mean.  That’s because it is in a lower level language that we would need to “translate” into our normal communication conventions.

If I say, on the other hand, “IF (x > 4) PRINT ‘Hello,’” then even though most of you aren’t programmers, you can very easily get the idea that if some value I am calling ‘x’ is numerically greater than four, the system should print the word “Hello.”  We can understand it, even without specialized training, because it is a high level language.

Essentially, the closer a language is to human speech, the “higher” the level of that language.

The highest level, of course, is actual human-to-human communication through standard speech, and so in a very real sense, your English classes are teaching you to interface with the extremely advanced technology of your fellow human beings.  This involves syntax, semantics, connotations, denotations, text, subtext, and context. And you thought you were just learning what a “gerund” was…

Sometimes, and especially in the introductory programming classes, I’ll have a student approach me and say, “I am trying to get the computer to do [some programming task], but it doesn’t want to work.”  My reply is, “Well, of course it doesn’t want to work; it’s a computer.  It doesn’t want anything; it’s doing exactly what you are telling it to do.  The problem is, you aren’t telling it in a way that it can understand.”

When the exasperated look on their face fades, because I definitely enjoy giving that answer more than they enjoy hearing it, I help them to communicate with their computer more effectively.

If I was in charge of all of Galen’s programs, I would consider adding a basic programming class to every pathway.  It wouldn’t have to be anything complicated, but it would get each member of the student body to learn the importance of proper spelling and punctuation.  Computers require precision in order to properly interpret an instruction, and it’s perhaps one of those ironic laws of the universe that the higher a language’s level is, the more tolerant it becomes of ambiguities.

We can say one thing, and two different hearers may receive two completely different (and potentially valid) meanings.  This is one of the things that makes human-to-human interaction both complex and interesting; it allows for humor, poetry, and the language “arts” in the truest sense of that word.  Trying to speak to a computer, even a very advanced one, has significant problems, some of which I’ve outlined in earlier articles – like the time it would take to compute an answer – but there’s another problem as well.  Even if we could teach a computer to recognize the symbol involved in a high level language, we would still need a way to teach it to move beyond its need for unambiguous terminology, in which one thing can only mean one thing.  For a computer, if I say “= 5,” then until I change that equation, x is always going to be equal to 5.  For a human, if I say “x = 5,” he or she might accept it, reject it, or say, “So what?”

There’s a principle that, the closer we get to replicating human appearance and mannerisms in an artificial system, the better we relate to it – up to a point.  If we get very close, but not exactly right, our response to it falls off sharply; this is a phenomenon known as the “Uncanny Valley,” which is a good name for a band, and I may talk about that in some detail next time.

Ultimately, there are lots of things we wish we could teach computers to do.  If they could speak, there are probably a lot of things computers would wish to teach us to do as well.  One of the things I am sure they would tell us is, “Speak clearly, and express yourself properly.” It’s not a bad idea at all, and again I would say that the opportunity to speak in public, whether in your courses or in some larger forum, is an excellent place to practice doing just that.

P.S. To be honest, that “011010101011101111” binary message was just me typing in a bunch of random 0s and 1s.  It probably doesn’t mean anything; but that’s part of the point… you didn’t know that!

David Aguilar
Assistant Professor of Computer Science and Engineering
Galen University