There are hundreds of different programming languages out there. But are all they all the same? Do they share a common goal? Are they targeting the same audience? This Article is going be going through many of the different types of programming languages out there and where they are used. If you’re new to the computers/programming field, I highly recommend you go through this.
I decided to start with this one because of the popularity of Scripting languages, and an observation that most people aren’t really aware what the term “Scripting Language” applies to. I’ve seen people well into university’s CS degree making this mistake.
Objection Oriented Programming Languages
Object Oriented Programming Languages, also known as OOP Languages, have changed the way we do our programming. First introduced in the 1980’s, the idea of using “objects” in programming only really took with the introduction of C++, a true OOP language. Significant Object Oriented Languages used today include Python, Java, C++, Ruby, MATLAB, Perl and Ruby.
So what really is Object Oriented Programming? It follows a concept that the everything is made out of objects. These objects can contain data, stored in the form of fields, (also known as attributes) and in the form of procedures (also known as methods). Using these concepts, computer programs are made out of groups of objects that interact with one another. There are many types of OOP languages, but the most popular ones are class-based. This means that objects are instances of classes which also determines their types.
I’m sure this all sounds pretty confusing if you’re a new comer. It was that way for me too. The best way to understand is to actually work with them, only then will you be able to fully grasp this concept. See Classes for further details. Other important concepts such as Inheritance, Encapsulation and Polymorphism will be explained there as well.
High Level Languages
High Level Languages are programming languages with a high level of “abstraction”. What is abstraction though? Let’s go through this from the base up. See this programming statement down below? It’s from Python, a popular high level language.
print ("Hello world")
As humans, we easily understand what this means, even non-coders would understand since it’s just simple English. But how would a computer be expected to know what this means? A computer can only understand 1’s and 0’s after all. This is where translators come in. They exist as a medium between us and the computer, converting the English like statements into a sequence of 1’s and 0’s. High level languages will also automate certain areas of computing systems, memory management for instance. Back to abstraction now. Abstraction is basically how “removed” a language is from the core details of a computer system. The more abstraction there is, the more high-level a language will be. Here’s a useful excerpt from Wikipedia
that outlines the features of a High level language.
Rather than dealing with registers, memory addresses and call stacks, high-level languages deal with variables, arrays, objects, complex arithmetic or boolean expressions, subroutines and functions, loops, threads, locks, and other abstract computer science concepts, with a focus on usability over optimal
There you have it. High level languages are easy to learn and use, however, they do so at the cost of efficiency and speed. Now let’s move on to low level languages.
The last type we’ll be discussing here, is Low Level languages. If you were paying attention in the High Level Language section, you’ll probably have already guessed what these are.
Low level Languages have little or no abstraction from a computer’s instruction set. The word “low”, refers to the low abstraction level, hence these languages are sometimes referred to as “close to the hardware”. The key point here is that they can convert to machine code without a compiler or interpreter (types of translators). Some low level languages use a simpler translator called the assembler, which allows the resulting code to run directly on the processor. A program written in a low level language runs much faster, and requires less memory than a high level language would.
Low level languages are simple in nature, however due to the various technical details involved it ends up being difficult to use. Normally, in high level languages you don’t have to worry about this since it’s all automated, hence it’s simplicity. Low level languages are used in situations where performance and memory utilization are important. Examples of such situations are Operating systems and games.
The Spectrum of Languages
It’s not enough to just classify languages as either high and low and be done with it. In reality, it’s more complicated than that. 20 years ago, in the absence of many of High level languages we use today, C++ would be considered a High level language. When compared to assembly languages, C++’s abstraction was significantly more. However, in today’s world there are now many different levels to how “High level” a language is. Hence I think it’s more appropriate to name it a spectrum.
Let’s try to visualize this spectrum. At the top we have scripting languages which are considered “very high” level. Then we have the more typical Programming languages like Java which are High Level. Then we have languages like C and C++. These are followed by low level languages like Assembly language and Machine Code (Code that’s directly understood by the computer). So where do C++ and C lie? Or they High or low level? The thing is, in relation to High level languages like Python, they resemble low level languages. Whereas in relation to Machine code, they resemble High Level languages. In conclusion, it’s best to either think of them as “Middle level languages”.
Opinions over this will always differ a bit. But as long as you’ve understood the spectrum, and it’s more than just saying xxx is high level and xyz is low level, then you’re good.
Other Types of Programming Languages
There are many more types of programming languages out there, such as procedural programming, functional programming and logic programming. However, these aren’t very important or mainstream and chances are you won’t ever need to know about them.
And that concludes our “Types of Programming Languages” article. Any suggestions or contributions are more than welcome. Let us know what you thought about the article in the comments below.