Computers at their most basic level are machines that take an input and give an output accordingly. What happens in between the intake of information and the output of a result is where I like to call where the "humanity" resides in a computer. In the form of programs we can bring computers to life to preform tasks limited only by our ability to command them. It truly is an art form.
Programs at their most basic level are sets of instructions that can be understood by a computers hardware to make it preform a task. That's where a kink comes in. Computers cannot understand human languages so to speak. Their processing structure only allows them to work with command values that direct finite operations to data. An example of this would be to add a value to another value in memory or to move a piece of data to a new memory location. These control values take the form of binary numbers of a specific length that are run about a billion per second through the computers CPU. In other words, its impossible to directly put a language like English into a computers processing unit.
But don't despair! There is a solution. Programming languages that make our lives many times easier. These Languages are not directly person speak per-to-say but they are definitely not 8 bit command codes. They are in a place in between that composes of special jargon and syntax that is later translated into information that computers can understand. Some are more "low level" languages that allow you more direct control of the computers direct hardware. Example of lower level languages would be C and its variants. "High level" languages are closer to human languages and logic. This allows for greater focus on the big picture when programing while sacrificing some control and potential performance improvements. Some examples of Higher level languages would be Python and Java.
Programing languages come in many flavors for different purposes. It is impossible to create a one size fit all programing language without creating a bloated mess. David Evans explains this quite nicely in his "Introduction to Computing":
"Programming languages come in many flavors. It is difficult to simultaneously
satisfy all desired properties since simplicity is often at odds with economy. Every
feature that is added to a language to increase its expressiveness incurs a cost
in reducing simplicity and regularity."
Its many times more effective to create programing languages to fit more niche purposes. I would never even dream of using C++ to script web applications. Creating a console application to do my math homework is a much better fit due to its lower level nature. If you want to create web pages HTML, CSS, and JavaScript will serve you well. If want a general purpose language for doing a multitude of useful things, Python and Java are good fits for the bill. If you want bleeding knife edge performance and don't mind losing most of your sanity C, C#, and C++ exist for things like scripting video games and other things that need to go as fast as possible. If you have a interest for computers in the 1980's BASIC is nice to know.
One main thing that separates programing languages is how they are read by the computer. They are either compiled or they are interpreted. A compiled language is put into a compiler which reads the program line by line and converts it into information that the computers CPU can run. C, C++, and Java are examples of this. Actually, to be technical Java compiles to run on the JVM(Java Virtual Machine) which is a program that communicates with the CPU. Java is like this so you compile it once and it will run on any JVM whether it is on a PC or a cell phone. Interpreted languages read short portions of the code you write and compile them real time. This allows you to inspect your code as you run it, but it also slows it down. It also requires a compiler to be on the machine you plan to run you code on. An example of an interpreted language would be Python.
In this blog post you learned what a programing language is, what it does, why they exist, and some real life examples of what some could be used for. If you have any desire to learn a programming language I implore you to go out and seek out the knowledge you desire. There are many fantastic books on how to program in different languages. Some are even free online.
But know when you run into a problem or something you cannot seem to figure out, know that programming requires you to think a little differently. And know that it a good thing.
#import<iostream>
using namespace std;
int main
{
cout << "This is Rafe Habedank signing out!" << endl;
cout <<"Also, if you have any questions leave a comment below!" << endl;
return 0;
}
Citations:
Evans, David. Introduction to Computing: Explorations in Language, Logic, and Machines. N.p.: n.p., 2011.
Hi Rafe,
ReplyDeleteIt was really interesting to read about how much programming actually goes into adding languages to our computers. You must be quite intelligent to be able to work with these types of machines and to help them function. I know at least I would never be able to learn this.
One question that I have for you is that how did you get into this type of field or at least what sparked interest in you for this topic. It seems like a very challenging task and is very impressive that you completed it so well.
Milo, the first step in anything in life is to tell yourself you CAN do something. I would know, I almost quit a few times myself when things got rough. if you stick with anything you can figure it out. But anyways, what sparked my interest would be the creation of video games and how they worked. I wondered how they worked and how I could into making them myself. I hope this helped you in some way.
ReplyDelete-Rafe
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
ReplyDeletewebsite: geeksforgeeks.org