Monday, 3 August 2009

The silence is frustrating me

I don’t mind sitting in a car, or in a room, when the other person doesn’t talk or doesn’t make conversation. Some people find this unnerving or awkward but often, especially with someone you know well, it can be quite comfortable and pleasant. My mother feels the need to fill every silence with words. I don’t.

But what is really frustrating the heck out of me is the lack of output from the computer. Computers should have to give output. Even if that output is “Sorry, I have nothing to say on this topic.” It should be a rule. Otherwise, how do you know whether they’re sitting in quiet philosophical contemplation or whether you should return them for a warranty, or use the Maria-method (a good swift kick)?

I’m starting a computer course now, part-time, which is two subjects, Principles of Programming and Database Systems. The second is far better, maybe because we haven’t got any assignments to do from it yet. The first one is very annoying. I try to write commands in the system. Some are really easy and that is fun, like when you type in a command to see the date and it prints out today’s date. On the other hand I already know what today’s date is. But it would be very helpful if I had sudden amnesia and my computer date in the corner of my screen went haywire but I did remember the command prompt for the date. And of course it makes me feel smart, like I can do something right. So I tested that about seventy times before doing anything else, just for my ego.

Then we got our assignment, had to be done in less than two weeks, gosh almighty I spent several days trying to decipher the assignment.

I have four programs to write for an entirety of ten marks. That seems a bit stupid to me, it’s my first time writing a program and I can hardly do anything besides write “date” in a command prompt. And I am going to have to get my head around writing programs, and if I do only one it will be for a lousy 2.5 marks!

They are all mathematical puzzles where you have to find solutions, that is you have to get the computer to find solutions. So I start to write one of the programs and I am barely writing the first bit when I decide to check it to see if it is ok (like running a spell check only on a program) and it spits out at me 34 errors!

I didn’t know I had written 34 things.

It’s a real shame because I thought it had looked very cute.

After a while I thought I was getting the hang of things so I decided to see if any results could be found for the first part of the first puzzle. Only the first part, thank you.

Nothing. Blank. Caput.

Now, I think this is unfair. I don’t know if the computer is saying “there are no answers” or “you wrote this all wrong” or “I am having a deep thinking session about this interesting, nay, amazing dilemma you put before me” or “Gimme some time while I make myself a cocoa” or “Sod off, I hate this puzzle, I’m going to sulk”.

Computers should have to explain what their silence means. It should be a rule.

Because I sat there glaring at the blank screen, but then I found out, that nobody can out-stare like a computer can. They really win in the out-staring match. I gave up. I ended up sulking and making myself a big glass of Ribena.

This is so uncool.


Friendless said...

What language are you programming in? My programs always print stuff out. Things like:

x = 0
x = 1
x = 0
WARNING: x went down when it should go up!
x = 1
x = 0
WARNING: x went down when it should go up!
WARNING: too many times round loop!

Tell it to talk to you.

James Drax said...

Just count yourself lucky it doesn't keep saying the answer is "42".

Maria said...

I am writing in C.

Well, I should be writing in C but according to my computer I'm not writing in anything in particular.

Maria said...

Drax, I am sitting here wishing my computer would chuck a tanty just because it would be one less tanty for me to have to chuck. Really.

Computers are supposed to do stuff FOR you. Aren't they?

Friendless said...

Ooh, yuk. Yes, there's a fine line between C and nothing in particular. That sounds like a hard language for beginners.

Les Bell said...

Ahh: common misunderstanding. Computers don't actually do anything, except run programs. It's programs that do stuff FOR you.

I've been teaching programming (including C) since the early 80's. It's common for complete novices to panic at first - the concepts involved are so different from anything you'll have come across before. Eventually, enough of it comes together that the concepts will hang together in your brain - but it takes a few weeks for that to happen.

Meanwhile, just remember the words of Fred Brooks, Jr.:

"The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures. Yet the program construct, unlike the poet's words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself. It prints results, draws pictures, produces sounds, moves arms. The magic of myth and legend has come true in our time. One types the correct incantation on a keyboard, and a display screen comes to life, showing things that never were nor could be. ... The computer resembles the magic of legend in this respect, too. If one character, one pause, of the incantation is not strictly in proper form, the magic doesn't work. Human beings are not accustomed to being perfect, an few areas of human activity demand it. Adjusting to the requirement for perfection is, I think, the most difficult part of learning to program."

Friendless said...

Wow, *the* Les Bell of Australian Personal Computer? I had every issue, and most of them had cartoons of you.

I agree with Brooks that what we work with is basically pure thought stuff, but many languages that we encode our thought-stuff in don't resemble thought-stuff at all. C looks like a mouse ran down the top row of the keyboard while the caps lock key was on. That's not at all how I think. I've just spent a week translating Python into Java and I'm getting really bored of converting one-line list comprehensions into multiple lines of code, and of typing brackets and semi-colons when they don't even mean anything.

I don't know why Maria's learning C, but it's almost certainly not something she'll want to do again, unless she suddenly switches from Law to Software Development. It's a shame, because it's kinda cool being able to talk to machines.

Maria said...

I should have looked up the distinction before I started the course and before I demanded the computer to make me a mug of cocoa, or it would regret it for the rest of its little computing life, Les.

Maria said...

"C looks like a mouse ran down the top row of the keyboard while the caps lock key was on."

We found a mouse in our kitchen recently. We had to buy a mousetrap.

I think the programming language looked like its, errh, droppings.

My teacher started off the lessons by never really explaining what the curly braces did and why so I wrote my program just happily sticking them in where they looked pretty.

It was only later that I found out that they weer there for a little more than decoration. I had some idea when I started they were there to look cute, you know, like gold stars on homework or little pink ribbons on a baby's bonnet.

That stuffed me up for a while. It's still stuffing me up. I haven't quite got the hang of them but I figure they are quite vital to writing a program.

Aww, shucks.

Maria said...

By the way, Les, if the programmer is like the poet then this stuff that I am writing looks like very badly written BLANK VERSE.

There is no epic that is going to go down in the ages in here.

I did better when I was composing haikus.

Maria said...

"unless she suddenly switches from Law to Software Development ..."

Mr Coffee suggested learning more about Computing, and I thought it a good idea so I took up a computing course. This is one of the basic subjects.

I was warned off doing Software Development.

I am finding it hard enough just to write this program. Or four.

On the other hand if there happen to be any great conversationalist machines around it is good to be able to talk to them.

Many legal firms specify that to apply you should be fluent in another language. I wonder if saying you are fluent in "C" would count?

Friendless said...

Don't bother with C
Legal firms prefer Latin
Stop blogging, do work.

Les Bell said...

Sorry, Friendless - I'm *the* Les Bell from "Your Computer". ;)

Which programming language is best for a beginner is one of those never-ending debates. C is pretty crude and unforgiving, but conceptually simple. More powerful languages often disguise or hide important concepts, or introduce even more of them (e.g. object orientation). The really hard-nosed CS types advocate Haskell or Scheme as first languages.

I think the long and short of it is that there's no way to avoid that initial period of confusion. I used to teach BASIC to public relations students for TAFE, and the best advice I could give them was to hang in there. Their faith was rewarded after a few weeks when I could see the light bulb above their heads click on as they "got" it.

The really good news is that after the first half-dozen or so programming languages, you start to pick them up quite easily.

Friendless said...

Oh yeah, the other Les Bell... :-). Sorry, it's been a long time!

I used to teach Haskell to 3rd year CS students, and boy, they couldn't cope. It was definitely a pleasure to see them get it. I wouldn't espouse teaching it to beginners though, it's not like anything they've thought about in the real world.

A couple of weeks ago I was compiling some C++ on Windows whereas usually I'm a Java/Python on Linux kinda guy. I had to deal with the linker and memory models and machine architectures... I'd forgotten how hard it was. But I've been thinking since then that it doesn't really need to be that hard. Yes, someone has to write the JVM or Python interpreter or whatever, but those machine details should be a thing of the past for most people. As should complicated syntax.

When I write my program I'm thinking in concepts at a mathematical level. I don't care how many bytes in a word, or whether the machine is big-endian or little-endian. I want to write a program which is as close to the way I'm thinking as possible.

On the other hand, I've written C on a PDP 11/03, and it was kinda cute to see how the language mapped to machine instructions. However I don't think that's what Maria needs. Of course, if this is a first year uni subject or something, I guess she's getting what she asked for!