IAWTS Blog Home >> Programming >> Programming Overview

Programming Overview

"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." Tony Hoare. Computing professor, implemented ALGOL 60, searcher at Microsoft Research.

The primary reason for registering the domain name for ItAllWorksTheSame.com; after familiarizing myself with not only several Programming Languages (Education) but realizing that, pretty much no matter which Programming language that you choose to learn, although each might vary in their Means to an End, they are all used for the most part to accomplish the same goals.

For those who are interested in learning to program and expecting this to be a tutorial of sorts, it's not in my plans for this article. Here I plan to start at the beginning on what peaked my interest and the things I had to learn along the way in order to get to this point.

Also, please keep in mind that if your goal is to become a Programmer, it is not necessary for you to also become a Web Developer, but in my case, it has Everything to do with where I began...

About 15 years ago when I first became interested with Web Development and building websites, which involved learning HTML, I found myself looking at the Source Code and wondering if I would EVER learn such a Scripting Language.

Meaning, up until a few years prior to this, I had only sat at a computer maybe a handful of times in my life...

In fact, it wasn't until moving back to Mississippi from Cancún, Mexico with my family in the early 90's that they even remotely interested me. My neighbor and friend came over to help with some of the computers we had from my mother's previous businesses and began snatching the cases open and pointing out the hardware.

He not only knew the inner-workings of the computer but about the hardware and could repair, replace and perform upgrades where necessary...

That seemed somewhat intriguing to me, and I used to call and chase him down every single time I had a computer issue or wondered how to do something, following him around with paper and pen in hand, "Okay.., wait, so I go... to... Programs, Accessories, System Tools and then... WHERE???"

Looking back, I honestly wasn't sure when taking the notes exactly where on the computer to find those things, and one day he did me the best favor anyone could have done and just started saying, "Um.. I don't know, man, maybe you could look it up?"

This sent me scurrying to find the answers and scouring the Internet for online Resources for information, and before I knew it, I had questions in several forums regarding computer issues and was being guided by other forum members to solve these issues.

What I believe helped me more than Anything on figuring out how to do things and perform basic tasks was the day I found myself.., well, sort of Thinking Like a Computer...

"This is a computer, capable to doing all sorts of things for me, so how exactly would a computer do this and that, knowing what I know about a computer?"

Well, It wasn't long before I performing all sorts of technical tasks and regularly editing the Windows Registry, customizing the Start Menu, SentTo Menu, Taskbar and much, much more...

Soon after this the desire to have a website became a daily thought; at first it just seemed overwhelming and extremely confusing to learn all the things needed to have my own website, but I was determined to have some web pages online.

This meant that I would either have to break down and actually learn source code or find some software that I could just type and it would create the code for me.

Immediately I began looking for the easy way out in using a WYSIWYG editor and other software such as Word Processors and a couple of Email Clients with this built in function. This would be so much easier than having to actually study and learn the stuff and allow me to just stay focused on writing.

I tried a few programs and it seemed to work well for the most part, but thankfully before I began really using any of these editors, my Linux group and other web developers began emphatically criticizing the use of HTML editors and HIGHLY RECOMMENDING that I take the time to learn RAW HTML code.

They went on and on about how HTML editors would lie to you about the code and how badly things could go if you didn't actually break down and learn the code from scratch using a Text Editor. Everyone was giving the same advice and talking about what a pickle I would find myself in if something went wrong with the code and I couldn't fix it.

Although since birth I have been somewhat stubborn and really was overwhelmed when viewing the code, one day I just decided that I was going to learn this no matter how difficult it seemed to be.

For ANYONE starting out working with ANY code, I cannot stress enough that this was by far the absolute BEST ADVICE Anyone has EVER given me; thanks to those who blasted editors and convinced me to not Copy/Paste or reply on an editor to write my code for me!!!!!!!!

This sent me looking for tutorials on learning HTML. The first couple to a few tutorials were slightly confusing and began making me doubt my ability to wrap my head around it all, but then I stumbled across one that seemed to break things down so simply that my brain started getting it.

Hard to believe at that time, but I was actually beginning to understand how HTML worked and was creating my first "Hello World" web page within 10 minutes of reading.

Oh, I was SO very excited - I could now create a web page and view it in the Web Browser! It seemed that my brain WAS actually capable of learning this foreign code. Within a day or so I was creating multiple pages linked to each other with unique page titles, varying sized and styled headers and paragraphs with colored, bold and italicized text, unordered and ordered lists with bullets, embedded styling and much more...

Next I began learning the basics of CSS in order to organize my styling in separate documents, which kept each individual page from having redundant code. This was cool! Not only was I not repeating the same code and with the head so cluttered, I could also make site-wide changes to styling by editing only one file.

In addition, I could split up the CSS files and have each of them contain the styling for various unrelated things and call on all of them or only the ones which applied to that particular page, which made things even that more organized and editable.

Boy, I really thought I had it all figured out and was really ready to start designing my own software using this newfound scripting knowledge. Now I could take all of the inventions and products (over 20 in all), which up until then existed only on paper and some in mind and create CDs and DVDs, not only to promote and solicit those projects but start teaching others what I had learned along the way.

I started telling everyone how I would soon become extremely prosperous and successful and make my Mark in this World...but, I was a long ways from programming...

The next thing I discovered that was truly unique and fun to play around with was Javascript (not to be confused with Java!) and there were so many scripts available to do all sorts of neat stuff such as changing font/text and background size and color to much more. The visitor could then select customize their reading experience to, as mentioned, much more.

The only problem was remembering the visitor's preferences so that they wouldn't have to keep adjusting things on each page was that they had to be signed in and a cookie set, something at that time I was just not very familiar with, but still, it was fun to play with and Javascript is a very powerful tool used by most all web developers today. There are tons of free scripts available too, but please do be careful!!

Anyway, one day in posting to my Linux group, after a few forum posts asking for advice on how to create a software that could serve the End User with my awesome HTML pages more efficiently than simply adding an Autorun to load an index page, I seemed to have attracted the interest of someone in the group who wanted to meet up with me in person to speak more about my ideas.

We did meet and almost instantly struck up a business relationship. He took me under his wing, gave me my first playing field on a Web Server that cost me only $2.00/mo, put up with my stubbornness, intense stupidity and became my partner, confidant, mentor and friend to which I respectfully referred to as Master.

Unlike myself, someone who was willing to do tons of ridiculous things in order to keep clients happy such as free lessons, hanging clothes, cutting their grass and giving them 100% free technical support for all of their computer needs to offering literally free almost Anything, he was always professional and expensive, which probably added to me having so much more of a deep respect and admiration for him.

In fact, if it were not for this man coming to my rescue on many, many, MANY occasions when attempting to learn PHP and helping me solve problems when I found myself pulling my hairs out and wanting to S-C-R-E-A-M, Web Development might have very well been another Something I started and just gave up on.

Moreover, if it weren't for me being so stubborn and actually adhering to more of his advice, there's no telling how successful I could have been by now...

Learning PHP Programming was quite a bit more difficult to learn a server-side scripting language, much more difficult that a Markup language like such as HTML and CSS style sheet language for sure, but it also opened up a whole new world from where I began.

The best aspect or convenience for me at that time was that it enabled me to connect to a Database and split up my web pages into parts or sections and make Dynamic web pages.

For instance, I no longer had to create Static web pages and could have my header, footer and sidebars as separate documents and do all sorts of Auto-magical stuff that just wasn't possibly using HTML and CSS alone. As with the convenience of CSS files, I could now make site-wide changes by editing one single file instead of having to edit each individual document just to make one change.

This was Awesome! I could actually build a Website, add content into the database using a Web Form and call on it whenever and wherever it was needed. Click on Buick, Cadillac, Chevrolet, Dodge or Ford and the page automatically fills up with the inventory.

Click on Barbecue, Beef or Chicken and the page fills up with all of the applicable recipes. Too, customizing your web form allowed an almost endless array of choices to pull data from the database.

What made it even more super awesome was that now I only had to have one index page, one automobile page, one recipe page and all of the content and links would then be controlled and accessed from information stored in the database, all by using PHP. Trust me, for a would be web developer, that was and still remains to this day, Pure Awesomesauce on steroids!

For those who came to this page looking for more specifics on Computer Programming and stuck with my babbling, this is where you might find an interest. This website will cater to much more than just Programming.

As mentioned earlier, although Computer Languages can be compared in a variety of technical ways, they all begin with Variables and Datatypes.

At the core of any program there are variables where all of the dynamic information is actually stored. I mentioned databases earlier, which is where information is stored and we use, in web development, web forms to enter information into the database.

For instance, whenever you fill out a web form and place your name in it, your name is what is known as a variable, or to be more precise, a String Variable, which is basically a String or an Array of Characters.

However, do keep in mind that there are many different types of variables, not all the same, but most any programming language will have some type of variable.

A string is basically a series of words, or characters placed in a particular order to give meaning to the code and can be added to other strings. For instance, you could have multiple numeric variables stored and add them together (e.g. "16" and "2" would be "18"), or you could also do this with words (e.g. Hello and World would be "Hello World").

It is equally important to understand that variables have Types which help to open up whatever "sort" of things and define what we can do with the information inside the variable. Although you can perform mathematics on numbers, you cannot on names, so it is important to have types (bool, char, float, wchar and a mixed or unknown/Any Type); getting to this...

Anyway, some are single Character Variables such as (char; e.g. 'a', 'b', 'c', '1', '2', '3', '!', '^', etc), but you probably won't end up with a lot of single characters, although they do exist in the core of programming, so you need to know that first.

Various programming languages will also use a float which is typically used to define a variable with a fractional value (e.g. 16.12). Numbers created with a Float declaration will have digits on both sides of the Decimal Point.

It is generally used by programmers before the variable; a second line of code can declare a value for the Float Variable by adding an Equals Sign (=) and following with the value and can change a value within a program unless they are specifically declared as Constraints or Static Variables.

A Float Variable is typically used to include a Currency Value in the program. For instance, you can designate a particular number of Placeholders after the decimal point by using additional commands on the float variable. They usually use the same Operators as Integers, basically in the same way and can use the Addition, Division, Multiplication and Subtraction of the variables.

An Operator is basically a Character that represents an Action (e.g. x, +, -, etc). In programming, one of the most familiar set of Operators in the Boolean Operators, but you also have Assignment Operators which assign a specific value to another value, Relational Operators which compare the two values, System Operators (sysop) which is the person running the Server and I guess it's fair to mention the term Computer Operator which is the person who actually manages the computer systems. More on this later...

The Syntax for a Float Variable on C, for instance a single float variable { float variable_name1 [= value1]; } or it could be declaring multiple float variables { float variable_name1 [= value1] [, variable_name2 [= value2], variable_name_n [=value_n]]; }. You don't necessarily have to add a value, as this is optional, but in that example, the name2 and name_n would be declared with the same C type. I'll get back to floats later...

An Integer (int), which is a whole number, and by "whole," I mean only that there are no digits after a decimal point that can be written without a fractional component. (e.g. 16 would be considered a valid integer, whereas 16.12 would be invalid). Also, as confusing as this might seem, all integers begin with 0, not 1 as you might expect.

A set of integers consists on zero (0), the Natural Numbers (1,2,3,...), also called Whole Numbers, and their Additive Inverses (the Negative Integers; -1, -2, -3, etc)...

I mentioned an Array above. Although there are varying types of arrays, an array is basically just a sequential list or collection of other variables of the same type (e.g. 1,2,3,4,5) and might be stored as an array (length of 5) containing integer variables. From there, you can access each variable in the array using an index, which is zero (0).

By storing integers in an array, we can access a collection of them and send them around the program where they are needed, as well as repeating this process, which is called Iteration. Allow me to reiterate, "as well as repeating the process," as in a computer, a sequence of instructions in repetition until a desired condition is met.

One of the simplest Data Types to get used to Boolean (bool), which is essentially a variable to represent a value of true or false (keywords not strings 'true' and 'false'); although it could also mean on or off or even 0 or 1 (shortcuts instead of keywords="bad practice"), but generally it is best to use this as the aforementioned true or false as some programming languages allow you to use this for more but, IMO, it's just best to leave this as true or false as to not get confused... I'm leaving this one until another time...more on that elsewhere.

Although there are several types of programming, such as Structured Programming, it is necessary for you to know what this is and how it is used. Structures are more or less a means of creating more complex Data Types than the basics, adding more clarity, quality of time and efforts by making extensive use of Subroutines, Block Structures and for For and While Loops.

Basically, this allows the programmer to build upon the software, making for bigger and more interesting collections of data by naming the sub-parts of information. Data structure simply put is a particular way of storing and organizing data so that it can be easily located. Just think for a second about your closet or dresser and the word Structure. Organization come to mind?

For instance, say you are developing a structure to keep up with your renters or tenants.., or better yet, a school keeping up with students that owe their tuition. Each student's name would be a String, their age an integer and in order to keep up with whether or not they have paid their tuition, we would use a boolean of true or false. Can you already see why I suggested not using 0 or 1 for true or false?

If it looks like a boolean, smells like a boolean, then why not let it be a boolean? True or false?? However, I feel it fair to point out that Boolean Operators could also include &&, And, Or, Not, Near or even And Not, = or :=, ., ::, not to mention XOR, which is Swap but.., that's getting WAY too far off of this article...

Actually, you have two main types of Structures in programming to be concerned with and that is Control Structure and Data Structure. Unlike data structure, control structure is essentially a block of programming that analyses the variables and then chooses a direction to go, based on the given parameters. The term Flow Control or Control Flow details the direction the program takes along the way.

Basically, the control structure is the decision-making process, and the flow control determines how the computer will respond when given certain conditions and parameters. When your program is running, the code is essentially being read by your computer, line by line, from top to bottom, and usually left to right, as with reading a book in English, simply known as Code Flow. As it is reading down through the code it may hit point where it must make a decision, which could make the code jump to another location within your program, or it could force it to re-run a piece of the code again or just plainly skip over a bunch of code.

Think of it this way; when you read a book or visit a website, you read down to where it refers to another section of the book or has a link to another part of the website. You click that link and find yourself elsewhere in the virtual book, or eBook.

Just like, you could decide to keep reading this article I'm writing, but ultimately the subjective decision at this point is up to you, as it would be in your program for the computer to decide. The major difference is that the your program has an explicit set of rules to determine which direction to go. The decision. This decision that the computer must take will in essence effect the flow of control, or more applicably put, the Control Structure.

In Java, for example, you could have an If Statement that specifies that if you are older than 12 yet younger than 20, you are still a teenager, Else, you are Not a teenager(e.g. if (yourAge < 20 && yourAge > 12) { // you are a teenager } else{ // you are Not a teenager }). The variable would be "yourAge," and it is being compared to (less than <) 20 and (greater than >) 12.

If you are a teenager ("If" the code in the first segment is met), it will will skip the second segment of code and execute whatever code is there for the first segment, but if you are Not a teenager (Else), then it will execute whatever code is inside of the second segment. I don't want to get deep into Syntax now, just know that there is a means in programming to "Choose" which line of code to "Execute," depending on the "State of the Variable" (Value of the Variable) inside of the "Control Structure."

We will get more in depth later/elsewhere with If...Else statements and While Loops, but a While Loop would be, for instance, an extra set of code to execute the some code in the case you weren't 20, over and over again until the Condition becomes false, the condition being that you are at least 20. If you're 20 or older, an Adult, it will just skip whatever your "too young to play" code might be and continue on below that while loop control structure.

Variables are widely considered the "Backbone of Any Programming Language," your Storage with an associated Symbolic Name, which contains some possibly known or maybe an unknown quantity of information, which is a Value.

I mentioned Syntax but didn't explain, and I'm truly getting tired here and babbled for too long before getting to the gist of what this article was to contain. Syntax is basically a particular layout of Symbols, or really more accurately, words and symbols. An email address might be a good example of a syntax. Whenever you see an email address (e.g. me@mysite.com), your brain automatically associates that with an email rather than a website which could have a whole host of varying extensions (.biz, .com, .net, .org, .us, etc).

Although an email address could contain more characters and integers, they all have the Ampersand between the user name and the website's Domains Name. In the W.W.W. of doing things, an email has a particular set of rules when it comes to email addresses. Programming is quite the same.

Let's see, so far we have looked a only a few but very important programming concepts and data types; Array, Boolean (bool), Character (char), Control Structure, Data Structure, Float, Float Variable, Flow Control, Integer (int), Operator, String, String Variable, Syntax, Variable and Value if I didn't miss any. I believe I mentioned Conditionals and Loops too (e.g. If, For, Else and While), Subroutines and Block Structures, but there is so much more to cover...

In thinking about exactly how to end this one article, realizing that I have not even scratched the surface on programming and only slightly introduced Variables and Datatypes, Assignment and testing for Equality, Conditional Testing, and I don't believe I even mentioned Functions, Output, Parameters and Return Values, Strong and Weak Typed languages, much less making a discernment between Types of Computer Languages or useful Tools.

You can study beginning with Computer Science, Programming Language Theory, Comparisons of Programming Languages and Comparisons via Basic Instructions or by Syntax. For those willing to learn, the Internet is a wonderful place to Learn Computer Languages.

There are literally thousands of free Tutorials on Programming, Software Tutorials and tutorials on web-related topics (e.g. ActionScript, Ajax, asp.NET (the .NET Framework, Bash, CSS3, various Frameworks, Git, HTML5, Java, Javascript, PHP, Python, Ruby, SQL, Web Server, Google's Go, C, C++, C#, Object C, R and much, much more)...

I guess it is also fair to mention at this point that I am mostly interested with Web Development, which will consist of mostly markup and scripting languages, but I do have a strong desire to write about other programming languages. Sadly, my current dilemma is Time, meaning the Time needed to focus on maintaining several websites and providing content, especially when the weather is nice.

Crazy, but it just took me about 3 hours to plug in the links after this article was finished ;)

That said, and gosh there's just SOooo many things I neglected to even mention here, this will conclude the Programming Overview until I can get back around to this. In the meantime, just know that I am busy working like a turk offline, both on WAMP and here on the property but not yet giving up...

Hoping everyone is doing well and enjoying the New Year 2017! Steven R. Ward (Kosyman)
KosyDomains.com Owner/Admin