Programming Diaries — Day 6 — Procedural Thinking
Getting back to learning programming
#CS50, #Computer, #Computer_Science, #Learning, #Procedural
Finally, coming back with the programming that I had left for a while. I was intrigued with learning German, as I am quite keen on learning new languages, and I’ve been diving quite deep into it. As I desired to learn it as deeply as I could, with a huge interest in being able to read the language at as high a level as possible, I had been occupied with this language for more than a year.
This interest naturally transitioned into learning about a language that is not only used among humans, but also that of the machine: computer programming language. It is the language that has actually begun as means to communicate with computers, which are the biggest modern partners of today’s businesses and entertainment.
I happened to have taken on a new role in the embedded IT sector, not as a programmer, but as a project manager. Even so, understanding how the system works and how it can be developed is quite a necessity of such a responsibility. In the end, knowing how the machine works especially any form of a control unit, AKA computer, is an inevitable requirement for me to become more prospective professionally. Coming back to the world of programming seemed only destined for me.
Then what should be the topic that I should get back to first? As soon as realizing that the word “computer” begins with the letter “C”, I realized that it stands for a language that has been the most widely used in the world of programming. The language has been the reason why I avoided programming since encountering it in my university days, due to my incapability of grasping it, is actually the one that one needs to conquer in order to be really proficient in software development.
Now that I have been befriended with programming with the help of Python, an interpreted language thus far the closest to a human-form language, thus is one of the easiest ones to get to know, I felt that I am now ready to tackle more of procedural one like C. A procrastinated challenge has come back to haunt me in about 12 years!
Thinking procedurally
Thinking in a procedural way is not actually very difficult. One of the biggest paradigms of modern programming is “divide and conquer”, a programming methodology of dividing a problem into the smallest units to solve them individually and combine them to obtain the final wholesome solution. If you break down a problem into smaller tasks, then you can see a set of ways to solve it.
For instance, you are asked to pick up an apple under a tree in an orchard that is in your sight. There are a set of tasks to be completed to achieve the goal:
- recognizing the location of the apple
- moving towards the apple
- picking up the apple
- coming back to where you were.
Then you can see that, naturally, these little tasks would have a certain sequence. Listing out these tasks in sequence would naturally lead to a set of procedures. In this way, you are solving a problem in a “procedural” way, in which tasks are outlined in a certain sequence to achieve a goal.
As long as “C” is a procedural language, I presumed that understanding how to approach a problem in procedures after breaking down a problem into smaller pieces, could ultimately approach the fundamentals of the language that it is based on. I suspected that language cannot essentially digress from its innate nature, and machine language cannot be an exception to this truth either. Reminding myself of this fact helped me to build some confidence in facing C again.
I can’t wait to “C” again. It’s like the little math problems that I got intimated when I was young now seems like a piece of cake. Although whether the problems that I “C” again would be that easy, is a matter of a question that I can only find out soon enough, realizing that it is based on a set of procedures would hopefully be able to let me see a big picture of all relevant problems of C language.
So here I come. “C” you soon!
Reference:
(1) https://pixabay.com/photos/coding-programming-working-macbook-924920/