There’s so much to talk about just to assure that we’re on the same page. Hat’s off to wizards who know far more than I’ll never know about computer tech. But I’d be doing a big disservice if I talked over the heads of those who know less.
So bear with me while I share my thoughts about Comp Sci 101. Wizards can giggle in embarrassment, correct me, or nod heads knowingly.
In some ways it’s all embarrassingly simple:
Computers are all about switches. Computer software is a ladder of abstraction.
As with most things, the devil is in the details.
Consider a table lamp. Turn the switch on—we have light.
The simple act of flipping that switch changes the state of the world:
- On —> Light
- Off —> Dark
But we could, should we wish, interpret the state of the switch in many ways:
- On —> 1
- Off —> 0
- On —> Yes
- Off —> No
- On —> Good
- Off —> Bad
- On —> Fast
- Off —> Slow
- On —> Feast
- Off —> Famine
- On —> Cows
- Off —> Sheep
A switch, in the abstract realms of computer tech, is simply a signal. Mortal humans, we, impose the meaning. Meaning, in other words, is not inherent in the switch. The position of the switch is idiosyncratically assigned to whatever meaning serves our selfish interests of the moment.
Noted linguist, psychologist, semanticist, teacher, writer, and one-time U.S. Senator Dr. S. I. Hayakawa talks about the ladder of abstraction:
- Four-legged thing in the field
If Professor Fancy-Talk says milk the assets, miscommunication is bound to follow.
If, the other hand, we can only point toward the field or into the barn when we want to prepare a profit/loss statement, where would we be?
When we express ideas, Professor Hayakawa says, it helps to climb up and down the ladder of abstraction.
Keep the thought in mind, and...
Check out Dr. Hakawa’s book *Language in Thought and Action,* a must read for every writer.[footnote: Hiakawa]
But this is why some programmers and software documentation writers send those of us trained in the humanities up the wall.
They write things like:
(defun hello (name &key happy)
"If `happy' is `t', print a smiley"
(format t "hello ~a " name)
(format t ":)~&")))
What in the world are they talking about?
## Back to Switches
Now suppose we have three switches. We turn them randomly on and off. What meaning can we possibly assign?
NOTE: The pipe character below, |, stands for “or.”
- Off Off Off = 0 | A | Pigs | Stand Still
- Off Off On = 1 | B | Ducks | Run
- Off On Off = 2 | C | Chickens | Jump
- Off On On = 3 | D | Cows | Hop About
You get the idea.
Note that a short row of switches can not only mean something, that is, stand for something—it can represent a signal that initiates action. Should it stand for action, we call the sequence of switches a command. Programming languages are simply a corpus of commands plus syntax for stringing them together.
Press the letter A on your computer keyboard and your computer flips eight switches somewhere in its innards to off on off off off off off on, that is 01000001 or, if you prefer, 65. The computer then reads the state of the switches and displays A on your monitor.
Hey, given enough switches we can count to billions, represent all the alphabets in the world, distinguish every animal in the bestiary, display a picture of Mona Lisa with Tupac Shakur blaring though the speaker, or—program a computer.
It’s up to us to assign meaning to the state of the switches.
It all comes down to abstraction—tiny switches etched in silicon at the bottom, commands strung out according to rather strict rules at the top.
So where are we?
By flipping two switches, we can count to 2.
- THIS switch off and THAT switch off —> 0
- THIS switch off and THAT switch on —> 1
- THIS switch on and THAT switch on —> 2
Homework assignment: Suppose we have three switches, how high can we count?
If we can count, we can do arithmetic.
By flipping switches, we can even perform feats of logic:
- IF this switch is off THEN we are NOT wasting electricity.
Suppose we have three switches, A, B, and C. Switch A represents means, B rmotive, and C opportunity.
Now we can do:
- IF A is on AND B is on AND C is on, THEN the butler is a suspect.
- IF A OR B OR C is off, THEN the butler is not a suspect.
The main memory in your notebook computer likely has four trillion or more tiny switches tidily lined up in rows. Each row of 64 switches can be uniquely addressed by another row of switches.
Your hard drive likely has many many more such rows.
And more, your notebook computer can flip those switches willy nilly trillions of times a second.
This, then, is the wonder, the boundless potential, of the digital computer. It’s a meaning machine without limit. Well, except— assigning meaning to all those off-and-on-and-off again switch patterns is not as easy as it sounds. And this is where software comes in.
And more, this is how a smidgen of computer programming skills vastly expands self-publishing efficiency.
## So Let’s Talk About Programming
From personal experience I’ve seen how the word programming induces some folks to run screaming for the exits. But think of programming as nothing more than creative application of micro skills. (Ha! Pun in there somewhere.)
What’s a micro skill?
A micro skill is simply a nugget of applicable knowledge that you can pick up in a matter of seconds and integrate into your life survival strategies.
A micro skill is similar to a hardware switch. It alters the state of your mind—advances your understanding and competency.
Here are seven micro skills, basic insights if you will. You can learn them all in a minute or less, guaranteed, and they will open for you vast new vistas of computing power:
- A shell program enables you to directly control your computer
- You can create and run shell programs in a terminal
- A terminal is like a text editor except, when you type in a command, the computer responds
- The command line prompt urging you to type something in the terminal looks like this: $
- Type the command “cal” just after the prompt like thus: ‘$ cal’ you’ll get a calendar for the current month
- If you launch a terminal on your computer and enter the following command: ‘$ info cal’ you’ll learn everything you need to know about the shell command cal to do some quite useful things
- This micro skill wc is a blessing for writers paid by the word. Say you have your latest short story in a file called mystory.txt. You type wc like this at the command prompt and press return: ‘$ wc mystory.txt.’ You’ll get… hey, try it. You’ll kiss your computer in gratitude.
- cal, info, and wc are just a few among scores of shell commands that confer tech superpowers.
Oh, by the way, how do you launch a terminal? That’s yet another easy peasy micro skill.
Figure it out.
Spoiler, I’ll demonstrate in a future post.
Let me mention just one more micro skill, this one also a simple insight:
Programming is about three basic patterns:
- A sequence of commands, one after another
- Conditional statements: IF some row of switches represents TRUE, THEN execute this sequences of commands, ELSE execute that sequence of commands
- Loops: Execute some sequence of commands over and over again until some sequence of switches says stop.
Fact is, we carry out such patterns of behavior in our daily lives every day without giving it a second thought.
That said, with such simple patterns, attorneys and scientists construct awesome edifices of abstraction that are as inexplicable as sizable computer programs to inexperienced mortals.
But no worry. We’ll write programs in posts to come. But they’ll be small and easy to understand.
## Bottom Line
Face it. You don’t have to be a licensed carpenter to learn how to drive a nail. Similarly, you don’t need a master’s degree in computer science to wrest significantly more value from your computer.
Need another metaphor?
Look down at a lowly brick. Now look up at a stately Victorian-style courthouse—an elegant structure built one brick at a time.
Now consider: Given a pile of bricks, how hard can it be to build a brick wall?
TIP: No need to learn everything at once. Draft a road map. Take your time. Play.
The Creative Space of Play
Programming as play
The good news is that you don’t have to give up anything you already know to learn new skills.
I’m building my Publishing Empire like a child with Legos, micro skill by micro skill—one micro skill at a time.
Happy to share my road map and construction plans as I go.
[footnote: Hayakawa, S. I. Language in Thought and Action. 1939. Enlarged ed. San Diego: Harcourt Brace Jovanovich, 1978. Originally published as Language in Action.]