Why Learn to Program?
There is a whole industry of computer programming, where skilled software developers1 and engineers make it their business to solve the world’s problems from a digital angle. These men and women are trained not only to think in terms of code syntax, but application of concepts to solve given problems. Being the case, is it necessary that you–just a computer user–learn to program at home? Isn’t this wasting your precious time for doing other things?
What is Programming anyway?
Let’s first define what is meant by “programming” to put this discussion in context.
This word is one of the terms that acquires different meanings depending with who uses it and in which situations. In this case, however, we are talking of that art of giving instructions to a computer for it to execute. According to Goel ( 2020), who puts it for the lay person,
Programming is a way to “instruct the computer to perform various tasks”.
and code is used for that.
However, in programming, what is important is not simply to write code and be faithful to its syntax, but it is to solve a problem. As Knuth ( 1968) points out, the way to solve the problem is only made possible by the code being used. Hence the need to come up with a method of the solution, or algorithm (ibid).
Can I do it?
If you can open a document on a computer, certainly you can do it. Using a computer involves giving instructions to it all the time:
- You tell it which program to open;
- Which task to perform in that program;
- How to carry out that task.
For example, here is a simple scenario involving these steps when you browse the web and visit a particular site, say Wikipedia:
|Action||Command to your computer|
|Launch your browser||Telling the computer which program to open|
|Type a web address in your browser||Giving it your task|
|Enter the address to Wikipedia||Where to go (how to carry out the task)|
This is how programming is done. The difference here is that you did not type the code, neither did you compile it before you run it. Instead, these things are already wired into already compiled executables.
So what’s the deal with programming then?
The deal with programming, unlike the way you normally use the computer is that with programming, a computer language of some kind is involved.
The starting point of computer programmers is the problem to be solved:
- Point A
- what is it that we want our computer to do that it isn’t doing
at the moment?
- Point C
- How should it be done by the computer?
The programmer’s job is at Point B: making sure that what isn’t being done by the computer be done.
A computer language is used as a way to carry the instructions to the computer’s processor. However, as the computer understands only machine language,2 and almost all computer languages aren’t that, it means that the code written by the programmer has to be translated by another program.
This program that does the whole translation from a computer language to a machine language is a compiler or an interpreter.
A programmer writes her or his program in plain text, and this is known as source code. So the process is like this:
- We start with the source code, which is plain text;
- That code is compiled into machine-readable code (executable) by a compiler or interpreter;
- The final product is shipped to users in machine-readable form.
There are many computer languages such as C, C++, Java, Python, and even those specially designed for statistics such as R, Stata and SPSS. whichever language you choose to learn, it gets translated to the same executable that makes what you want to be possible from a computer’s angle.
So is it necessary to learn programming when not a Programmer?
The answer has to do with what do you think of programming. Some folk that I came across think of big money that can be made by knowing how to program, others think it from a practical point that programming helps you control your computer better than someone who can’t.
I subscribe to that latter notion:
- If you think of so many things that you can do for yourself at home
that would have been done by a person, you should have no problem
starting to program today even if you are a non-programmer.
- You type your own documents instead of taking them to a professional typesetter because you can.
- You can cook your own food at home instead of buying from some restaurant because “it is natural that way”.
- You grow your own vegetables rather than buying from the market because you enjoy this.
- You do all the above tasks because you want to accomplish certain tasks without thinking of commercialising these chores.
- This does not mean you do not reap any rewards from these tasks. Instead, you enjoy doing these chores because they make you understand the tasks better, and save you some money in the process 😄
So, in short, you should consider learning some programming language to start with. However, to make the process exciting, consider something that solves your immediate need.
You can start with Macros and Application Scripts
This automatically takes us to the reason why most programs have got some extensibility features built into them: the developers of those programs were realistic that their applications could not accomplish everything that an end-user would expect.
the moment you get frustrated by how your office program is failing to design a cover in a way you would like, before you give up, why not start poking around to see whether it has or has no scriptable component?
This is true even of browsers, mail programs and even music players.
Both Microsoft Office and Libre Office are scriptable. With Office applications, you learn Visual Basic for Applications (VBA)3. VBA is popular when it comes to Excel when you need to add some functions that aren’t built into Excel, usually when doing data analysis.
Even screen-readers support extensions:
- NVDA comes with Python modules you can subclass to create your own add-ons. This is the same with ORCA on Linux.
- Jaws uses Jaws scripting.
Before you think of any profits you can make out of programming, think of problems you can solve for yourself and your friends. In fact, the best way to study computer internals is through small programs you write, often on the command line. No matter which language you choose to start with, your aim should be to be more productive than yesterday.
After all, if you think of the thrill of playing a game, whether an action or adventure game, you will have no problem with programming. It is just trying to find a way how a computer can carry out a task you have for it. You communicate through source code, and hopefully will start today to take up the challenge.
Goel, A., 2020. What is programming? A beginners guide.
Knuth, D., 1968. The art of computer programming: Volume 1: Fundamental algorithms. Addison-Wesley.