What is computer programming?

Writing computer programs means writing instructions, that will make the computer follow and run a program based on those instructions. To explain how programming works, I will give a brief history. The basic instructions are composed of a sequence of ons and offs, that the computer follows as it runs them through the processor, turning switches on and off. The ons are coded (meaning written in programming) with an 1, and the offs with a 0. Numbers and letters are also represented by this; 0000=0, 0001=1, 0010=2, 0011=3, etc. In the beginning, programs looked like "1010100100101111010101010101". Someone realized that since the purpose of writing programs is in order to make life easier, why don't we write a program that will take a kind of code that is easier to create, and the program will translate it into computer code (1s and 0s). So, assembly language was created, where the code then looked like "add $5, $7, $8 #comment", which although not completely readable, it was a lot better than "010101". The program that converted the assembly language into computer code was called the assembler. Then someone decided, why don't we make a program that will translate English-like words into assembly language, so we can write code in English. Thus modern "third generation" code was created. Now the programmer can write code like "x = 5 + 8;" or "String stupid = "You are not smart;". (The first piece means that x will equal 5 + 8, and the second means that whenever the program writes stupid it means the words in the quotes. However, that is not important now, the important thing to realize is that programming is more "Englished" and understandable than before".) Now, a compiler will translate the new code into assembly language, to which an assembler will translate into computer language, that the computer will execute into a series of ons and offs. This new way enabled writing more complex code, as it was now more readable and easy to program. Java is one of the newer languages that uses this third generation code writing technic.

In short, writing code means writing a bunch of instructions. Each instruction is relatively simple, yet because of the computer's speed, it is able to run millions of instructions in a second. In order for a complex 3d game, like for example Diablo, millions of little code lines are being executed per second, as each code line only does very little. Your job as a programmer is to be able to not focus only on what the end product looks like, but on how each little piece runs, and then being able to write all of the little lines of code that enable the whole program to run. When you learn how to program you learn how to break up the objective into different chunks, and work only on that chunk at a time. This is in order to focus on what you need to do right now, and that which you don't need to know is pushed off to be done at a different time. For example, when you are writing code for a game, when you are focusing on the good guy fighting, you ignore the rest of the game, and only focus on getting the guy to swing the sword, etc. When you are writing the code on how the good guy finds and picks up treasure, you write only the code for that, ignoring, the code on how he fights. Then, you take a step back and put the pieces together. Although this seems hard, it is one of the basic aspects that you are taught when you write programs, and you become extremely used to it. This is known as abstraction.

One writes code with a specific terminology for the language that he is programming in. The different terminologies can be grouped into the few categories of keywords, variables, operations and predefined classes (in Java). (This is an oversimplification, as I am trying to make this easy to be understood for beginners). Keywords are the words that have a specific meaning to the compiler. For example, "if" tells the compiler that "if the condition is true then run the next piece of code". Operations are symbols that give specific meaning. For example, the operation of "+" can be used to add two numbers together. The operation of "=" means that the operand (the thing using the operation) on the left "gets" what is on the right. Variables are the values that you give to a word that you make up. For example, in Java the keyword "int" means a number. If you write "int sum = 8 + 7;" you are telling the compiler, I want a variable called sum to get the value of 8 and 7 added together. From now on until you change it, whenever you write "sum" in the program, the compiler reads it as "15". For example if you were to write "if (sum==15)" means if that variable called sum equals 15 (which for now it has not been changed) then run the next piece of code. (for more see the terminology section.) Also, in Java you have already made classes that will do a huge amount for you. All you have to do is bring them into your code, and it will save you a huge amount of programming.