So we agree your smartphone is a computer. Did you know your flip phone was also a computer? Is your analog clock also a computer, or does that enter the machine territory?
I am going to try to talk about this in a way that requires no prior knowledge whatsoever.
This isn’t a technical blog (yet), but let’s introduce two definitions.
- A computer, according to Subrata Dasgupta’s “A Very Short Introduction to Computer Science” (which is an excellent book), is “the centerpiece of computing”, which is to say an organized system of programs.
- And a program, the interesting part of a computer for a Software Engineer, is (in my words) instructions to solve a problem in the form a computer can understand.
Sometimes those instructions are closer to the “10010101011” you see on cool t-shirts, and sometimes they are very close to plain english language.
Let’s go back to the analog clock. Your father had one. Maybe he still has one. It keeps track of time once you have told it where to start, right? How does it know that? Because it follows certain rules, like “after 60 seconds, move the minute arrow,” and those rules are translated (like a language) in the watch in physical cogs and wheels. When you use a watch, you notice is is 8:15 PM and you start the watch at that time. But without a software engineer solving the problem of “how do you tell time starting at an arbitrary time,” no one would know what to do with the cogs and wheels. That solution to that problem is the program.
That’s the argument that an analog watch is a computer. You may have noticed I entered dangerous territory here: now lots of things could be called computers, and lots of things could be called programs. It’s a Pandora’s box! That’s where the fun of being a computer scientist begins.
After all, the definitions I gave you were highly abstract. But there is power in abstraction! But you know what isn’t in abstraction? Concrete metal and wires and screens. That’s someone else’s job.
Because here’s the thing: as a Software and Data Engineer with a degree in Computer Science, people assume I am good with computers. Family members ask me for tech support. My dad wants me to resurrect his favorite video game that is out of print.
But what I do day to day is write programs. All I do is solve problems. Sure, I get my hands dirty with more machine-oriented problems, like overheating or the disorganization of the many machines a company uses, but my solution is, yet again,
- instructions to solve a problem in the form a computer can understand.
So no Dad, I cannot write a game that no longer exists, not without a lot of connections, and no, I don’t necessarily know how to reroute the router (try googling it mom!). I don’t get my hands dirty actually touching wires. I’m not tech support. I’m not a gamer. I’m a computer scientist.
There’s a lot of beauty and poetry in what I do. I hope I have given you a glimpse of it.