First Step into Programming

In this article I am going share some information, which I believe it will help people who plan to start programming. It is going to cover some terms, definitions and comparisons. Let’s start.

Motivation

It does not matter what you are trying to do, in my opinion the most important thing is the motivation. What is the motivation driving you into this? I have taken lots of courses throughout my education, and just a few of the lecturers were taking their time to explain what the course was all about, why there was that course, what was going to be outcome etc. If you do not know why you are doing what you do, sooner or later that’s gonna all fly away, leaving you some of precious time wasted. So at this point for someone deciding to learn about programming, he/she should have some solid and strong reasons to do this.

It could be just for fun, it may take 2 weeks. It could be just to pass the course, it may take one semester. It could be just to earn some money, it may take some year. However, it could be to change something, to solve some big problems, to change the world it will take years, even a lifetime.

You should not spend your time on looking around for which programming language is better, instead go and search about what people have achieved or trying to achieve with computers, feed your brain enough with real examples, so you will have a bigger space to imagine. If you have one, why do not share with us in comments!

How computers work?

It will definitely help to have some knowledge on how computers work. It does not have to be in such a deep level but knowing about the some important parts will help along the way. It could even make your life easier while fixing your computer or buying a new one. For now I am going to share a little about CPU, RAM and Binary System.

CPU (Central Processing Unit)

CPU is where all the magic happens in a computer, every instruction(command) goes through this part. It is the brain of a computer. It controls other parts of the computers, tells them what to do. It is always in action, an important resource. There are techniques to keep them busy and do work all the time, otherwise it will be wasting resources. It loads programs from the disk into RAM, reading instructions from the RAM, taking some other actions based on the instructions. These actions could be showing something on the screen, printing something, calculating etc. You can say that basically a CPU processes given instructions. These instructions come from different sources like RAM, disk, cache, registers. They will be explained later.

It processes one instruction too fast that not to waste the resources we need to feed the CPU with instructions really fast. CPU is like an instruction-processing-monster.

There are various techniques to make instructions reach to CPU faster. For example, the main storage of a computer is disk(these days can be hdd, ssd or hybrid), it is cheap but slow. Instructions are moved from disk to RAM. RAM is the secondary storage. It will be explained later. It is faster than disk but more expensive. And there are steps goes like cache level, registers. Storage is getting less but price is going up.

memory-hierarchy

RAM (Random Access Memory)

This is an interesting part of a computer. It may not be so hard to understand how RAM works, because I am going to tell about it after sharing an analogy. In computer engineering and generally programming, analogies are sometimes to best and easiest way to explain some concept. So lets imagine that we have a room. There is a table, a shelf full of books, and you. You are a book worm. And not to forget the chair. Story goes like this: you go and grab a book, open it on table and start reading. After some time, you get bored and leaving that one on the table, and grab another book from the shelf. If you keep going in this way, you are not gonna have enough space on the table in order to open and put another one there. You decide to close some of them put back in the shelf so you will create some space for coming books. Computer works in a similar way. The room is the computer, the shelf is disk, the table is RAM, you are the CPU. Books are the programs on the computer. You may use different strategies to close the books for new ones, computer has similar strategies to pick which program to close or move somewhere else.

I hope now you have an idea why your computer gets slower. If you use some memory-monster programs like Photoshop, Eclipse, Auto-CAD and similar, you will feel your pointer does not move so smooth. In such cases, either you should close some of the programs you do not use at that moments or increase the amount of RAM you have.

Binary System

Computers have their own world and somehow it is different than ours. We use decimal numbers(0-9) and computers use binary numbers(0-1). We also have alphabetical characters, even it seems that computers have them too. But that is not accurate. Only thing that a computer understand is either 0 or 1. Everything is based on these two numbers. Everything is built on 0 and 1. They are on and off. At this point it is important to know the abstraction concept. When thing are going forward/up from 0 and 1 to all other concepts becoming abstractions on them. Abstraction helps us in a great way so we do not have to deal with other lots of deep level operations. For example, in this post sometimes I am using letter ‘a’, and imagine if I had to represent the letter ‘a’, each time in binary format(01100001). And not to forget for capital letter ‘A’ it is going to be in another combination of  0’s and 1’s. Would you be happy to write this blog post in that way? I don’t think so. So the take-away is that people are abstracting some concept to make other people’s lives easier.

One should also know that being aware of the reason behind a concept it will make the concept to be understood much better. We should always ask ‘why’. Why this is like this? Why it can not be like this? If you keep asking similar questions, while you understand things in a greater details, also there is a change you will end up creating another abstraction for yourself and for the rest of us.

Finally

Now we know how important it is to have motivation, and we can be motivate ourselves by searching and reading what other people have done and have been doing. Being motivated enough should be the first step before doing anything else. Then knowing the basics about how computers work, in this article just a little bit of it was covered. One should always be hungry for knowledge. Great thing about learning is that you start with a keyword or a concept but end up with dozen of other unknowns. It is an endless learning journey. Do not feel like you should learn or understand everything in the first time. Gradually things will fit in their places.

In the next blog post, I will write about some programming languages not to start a war of which one is better, instead discuss who brought to table what. So with that knowledge one can pick their own path of learning.

Congratulations if you are into programming, I promise you that it will be lots of up and downs but eventually is something fun. Share your opinions in the comment. Good luck!

image source