Abstraction & Programming Languages part 2
Tags: abstraction, languages
Published: 2019-12-09 14:52:07

## High level languages
Finally we have arrived at our high level languages that most of us use today. At this level we have taken our abstraction one step closer to how we use language today. Here we have popular languages like C, Java, Python, Ruby and too many more to count. These languages operate by putting the code through a compiler or interpreter that will translate it into assembly language or another form of machine readable code. These languages are more abstract because it isn't just a simple one to one translation that can be done with them but a more complex process. Compared to the low level languages, these languages are considerably slower due to the work needed to compile them, but considerably easier to use as they resemble human language and are portable across multiple different architectures and operating systems.

## Outside the box
Now that we've covered the concrete side of code, lets take a look at some of the more abstract side of things. When thinking of how we interact with computers, one of the farthest ways from machine code and binary that we do this is through GUIs or Graphical User Interfaces. You are actually using one right now to even be able to read this. This form of interaction is so far removed from how computers understand things that it would be easy to assume that no coding can happen in this form. Well in comes Drag and Drop programming, which is exactly what you might think it is. Here we have programs like [Beetle Blocks](http://beetleblocks.com/) and [Scratch](https://scratch.mit.edu/) that operate entirely through a GUI and don't need any code to be actually written. Just like with the leap from low level to high level languages, there are benefits and tradeoffs. These ways of programming are perfect for beginners or for people who don't need to go as in depth in to programming as full on developers, but can also be more limiting in what can be achieved with them.
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/j014disiyjv1zxqacg04.png)

Next up we have esolang or esoteric programming languages. These are a bit of an oddball and take abstraction to a whole new level. Esolangs are languages designed as a proof of concept, a joke, or as a way to push the boundary of how we program today. These include languages such as LOLCODE, one designed to look like the speech of lolcats, or Shakespeare Programming Language, designed to look like a Shakespearean play. Here is a "Hello World!" script in LOLCODE:
```
HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
```
As you can probably tell, these languages are not as used for modern programming as the finely tuned high level languages we have, but rather these serve to push the conceptual boundaries of what we can do when creating new programming languages and can help spark the more creative side of programming.


## Final thoughts
This is just a brief overview of how our modern programming languages have evolved and the direction in which they are still going. It is by no means a comprehensive explanation but hopefully enough to satisfy your curiosity on the subject.

And now here is a "Hello, World!" script in the esolang of COW:
```
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
 MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
 MoO MoO Moo MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo MoO MoO
 MoO MoO MoO MoO MoO Moo Moo MoO MoO MoO Moo OOO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
 MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
 MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
 MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
 MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo MOo
 MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo
 MOo MOo MOo MOo MOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo MoO MoO MoO Moo MOo MOo MOo MOo MOo MOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo
 OOO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo
```