Programming: What is it?

learning programming
"Most good programmers do programming 
not because they expect to get paid or get
 adulation by the public, but because it is fun
 to program."
Programming, by definition is the art of giving a computer a set of instructions, and having those instructions processed and acted upon.  In definition alone it sounds quite simple, but in practice it gets confusing, beyond definition level of complicated, yet it still maintains simplicity.  Only at the higher levels of programming, getting down into the nitty gritty machine code, and binary signals does it become complex.  Most programmers though don't really bother with machine code though, and its highly doubtful anyone even programs in it anymore.  Here is why you should, learn programming.

Machine Code?

At the very essence of any program there is a level of excessive simplicity that we'll never obtain,  As computers don't have the ability to function in an abstract manner, like you or I, they exist in a very binary existence.  Hexadecimal, and binary is the way they work, they can follow instructions by using 1's and 0's in random assorted fashions.  Really that's all that a program is within a computer, an endless slew of bits crossing the intricate hive that is a motherboard.  Within certain components of a computer the combinations of 1's and 0's are identified, computed, and forwarded to the required device or system.  When it comes to learning programming, machine code is hard.

Assembly Language

David-Wheeler-Goblinbyte.jpg
"All problems in computer
science can be solved
 by another level of 
indirection, except of
course for the problem
of too many indirections."
-David Wheeler
Without a doubt, most anyone reading this has absolutely no interest in becoming fluent in 1's and 0's.  Binary math at a network level is fine, but learning routing protocol in the language of 10010110 and no words what so ever is beyond complex.  So a man named David Wheeler devised a way of taking the rudimentary binary code and compiling it into a set of common instructions.

The obvious solution to the problem is programming in 1's and 0's is beyond complicated, and even when trying to convert to hexadecimal, it still maintains a level of difficulty.  01100011 01101000 01100101 01100101 01110011 01100101 isn't any less complicated than 63 68 65 65 73 65.  Both translate to the word "cheese", but time would be required to convert that into an understandable language for humans to read.

Instead short commands were introduced like HLT for Hault, or XCHG for Exchange data were introduced.  Much more readable and capable of understanding, and the computer would take the input information, convert it into binary, and process it as it's designed to do.  Not the easiest type of programming to learn, but it can be done.

High Level Programming Language

Now with assembly languages being more understandable, they are still excessively complex for the average individual.  Yes we can probably comprehend that HLT on a process can be good, but the rest is very complicated and confusing, working at the assembly level means you have to work within the confines of the hardware itself.  Assigning which memory address to send to, which part of the computer to go to, it all can get a bit overwhelming.  This resulted in the next level up above the assembly language to be developed.  More abstract ways of functioning in a programming sense.

At the high level of programming, languages such as Python, and C lump together assembly language codes into fully functional tasks.  Tasks like Print() or If() statements become available, all by taking the given assembly language, moving codes together, and making a readable input/output platform.  Assembly languages are what higher level programs are assembled from.  High level is where to start when learning programming, not as complex, but a composition of the prior two programming

Instructions

Programming, as stated before, is the art of giving a computer instructions on what to do, doing so at the higher level is much easier to do, and reads much more like a discussion than assembly or machine languages.

map-goblinbyte.jpgAs an example, lets assume your home was 123 main street, and you needed to get to a party at 1414 other blvd.  After calling your friend for directions they tell you this.
  1. Turn east onto Main street from your driveway
  2. Go east for four blocks
  3. Turn right on Other blvd.
  4. Drive three blocks
  5. House is on your right
  6. If the route is blocked at James ave
  7. Turn right for 1 block
  8. Left on the next
  9. East for 1 more blocks
  10. and turn right
  11. Drive 2 blocks
  12. House is on your right.
Easily understandable set of instructions, By following you can get from point A to point B, and this is exactly how programming languages work.  But would look more like this.
Program-cloud-goblinbyte.jpg
“There are two ways of constructing a software
design: One way is to make it so simple that
there are obviously no deficiencies, and the other
way is to make it so complicated that there
 are no obvious deficiencies. The first method
 is far more difficult.”
-C.A.R. Hoare

Turn Right;
Drive 3 blocks;
If James ave == blocked(
     Turn Right;
     Drive 1 blocks;
     Turn Left;
     Drive 1 blocks; 
     Turn Right;
     Drive 2 blocks;
     Address on Right
Else:
     Drive 1 blocks;
     Turn Right;
     Drive 3 blocks;
     Address on right;
)

May not look as fluid in terms of conversation, but still comprehensible.  Than a line of binary code.  This here is where and what programming is, in terms of the above "program" you'd be required to define what "right" meant, or what "drive" meant, so there would exist more instruction than that of verbal discussion.  Although its a bit more information, you are given control over creating the rules.

What Can It Do?

Programming is limited to the mental flexibility of the programmer themselves using the given tools to create a masterpiece.  The tools available and libraries are quite vast, defining mathematics equations, using port numbers, making simplistic databases and email, all of which can be created with a collection of a few commands.  With modern programming growing so widely, libraries of new commands have available to create endless possibilities of what can be created.

From anything like the regular "Hello World" python script, to full fledged operating systems with "snap" and moving backgrounds can be created.

Should I Learn Programming?

learning how to programNow this question depends on your interest.  I myself as a network administrator and security enthusiast find it to be extremely helpful, having the ability to create my own tools unique to my specific needs and desires greatly warrants a need to know something.  Learning programming does require some mental flexibility though, it's not something that jut anyone can pick up, rudimentary "hello world" can be done quite simply, but when loops, if's, and's, else's and the long list of other commands start to come in, a lot of memory and problem solving is required to create the final result.  If you're not afraid of a little challenge, I would encourage you to give it a try, the ability to manufacture your own programs is fun.  If puzzles and challenges fit inside your definition of fun.

Conclusion

Programming isn't for everyone, it is complex yet simple.  Programming is a way of giving instructions to a computer to output a desired action.  If you're a fan of a challenge or a puzzle, having a little mental acrobatics, it's definitely something worth giving a shot.  If you want to learn programming, or if you don't want to learn programming, knowing the basic fundamentals of programming is pretty good to know.

If you have any comments, questions, or concerns, let us know in the comment section below.  And as always, be safe my fellow goblins.
SHARE

About Unknown

    Blogger Comment
    Facebook Comment

0 comments:

Post a Comment