About programming languages
Tags: programming, languages
Published: 2020-04-07 17:05:34

So, I've been trying to focus a little bit more on my training, being that I am a junior and all. 

My current goal is to finish a chapter a day of a book recommended by our CTO "[Metaprogramming Ruby](https://pragprog.com/book/ppmetr2/metaprogramming-ruby-2)". While I achieved my goal today, it has required a little bit of focus. The book seems quite interesting and concentration was good until one question popped in my mind. 💡 What other metaprogramming languages do I know? 

<blockquote>"Metaprogramming is writing code that writes code."
<br><small>Excerpt From: Paolo Perrotta. “Metaprogramming Ruby 2”.</small></blockquote>

Of course I lost concentration and I went asking almighty google. And the non-less almighty wikipedia readily answered. Well, not directly to my question but still... And I found out that there are no less than 50 kinds of programming languages!! Some of them are sub-categories and classifications from different angles but still... 50! 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/0gn2k40rlsb2v87wo462.jpg)

So I started wandering around the wikipedia classification and identified some languages I knew (oh, yes, forgot to say I'm not a "real junior". I was a developer before, but I'm a junior at web development). 

While checking that, and learning more about types of programming languages, some rather nice and interesting memories came to mind. And I felt like sharing them, cause, you know... 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/hj7oun5so82vsm9mf3xc.jpg)

What surprised me the most was the amount of different types. Of course a certain language can fall under different classifications, but still. I barely remembered compiled and interpreted languages from my university days. Maybe also procedural rang a bell... but that's about it. 

So, here it comes. My thoughts and  memories from working at a certain point in my life with some of those languages. 

If you came here looking for a thorough description of all categories or a very technical-ly post, sorry to disappoint you... this ain't it. Look at it more as a recreational walk through my "programming life". 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/wjbdelvwwt9d6j3ph8w5.jpeg)

**Let's start with COBOL**

[COBOL](https://en.wikipedia.org/wiki/COBOL) falls under three different classifications: [Compiled](https://en.wikipedia.org/wiki/Compiled_language), [Imperative](https://en.wikipedia.org/wiki/Imperative_programming) and [Procedural](https://en.wikipedia.org/wiki/Procedural_programming).

This language was designed in 1959 and yes, my friends, I've used COBOL. It was back in... oh gosh, it was so long ago that I would need to calculate the dates... Anyhow, I remember it was before university, at technical high school. And I remember writing code one day, leaving it compile overnight, coming back the next day and finding out the results of either the execution or the errors printed in a gigantic perforated-paper printer. Yes, I am that old... 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/6x6ig7x8ramu2uh6yast.jpg)

You can imagine how complicated that was. We were doing small simple programs, we were students but still, a small mistake would mean having to wait yet another day to have the results. 

It has obviously evolved over the years and since 2002 it has become an  [Object-oriented](https://en.wikipedia.org/wiki/Object-oriented_programming) language since then.

**Next in memory lane is ADA**

[ADA](https://en.wikipedia.org/wiki/Ada_(programming_language)) falls yet again under many classifications: [Compiled](https://en.wikipedia.org/wiki/Compiled_language), [Concurrent](https://en.wikipedia.org/wiki/Concurrent_computing), [Imperative](https://en.wikipedia.org/wiki/Imperative_programming) - [Procedural](https://en.wikipedia.org/wiki/Procedural_programming), [Multi-paradigm](https://en.wikipedia.org/wiki/Programming_paradigm#Support_for_multiple_paradigms), [Object-oriented](https://en.wikipedia.org/wiki/Object-oriented_programming)  and System programming language with manual and deterministic memory management (no link for this, sorry, look it up 👀).

The only thing I remember about ADA is that it helped me pass my Operative Systems exam in my last year of university. I remember it was a simple language (it might be because of OO). And I remember telling my friends that studying ADA could actually save us from failing the exam. I thought of it as a low investment high ROI. Turns out it was a good strategy... for me. Many of them didn't listen... and failed. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ev8tc71k0p7cot8vtbez.jpeg)

**Lets talk about C**

Not that I like [C](https://en.wikipedia.org/wiki/C_(programming_language)), in fact this is the only subject I dropped in university. I simply hated it. My sister though, loved it. I remember having to write some code to simulate a typewriter. Having to manipulate all the memory directly and all that complicated stuff, I just simply couldn't stand it. Always found it way too complicated. Hate, hate, hate. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ff7a6lzq5b16ip7rwn4x.jpeg)

C is also [Compiled](https://en.wikipedia.org/wiki/Compiled_language), [Imperative](https://en.wikipedia.org/wiki/Imperative_programming) - [Procedural](https://en.wikipedia.org/wiki/Procedural_programming) and System programming language with manual and deterministic memory management (did you look it up before?). 

I'll skip a few years and languages, cause I guess you have a life and things to do other than reading this, right? 

**Let's move on to ABAP**

This is an easy one, only one category. As it turns out, [ABAP](https://en.wikipedia.org/wiki/ABAP) is a [4th Generation language](https://en.wikipedia.org/wiki/Fourth-generation_programming_language) (4GL). I didn't even know that existed...

ABAP is the language created and used by [SAP](https://en.wikipedia.org/wiki/SAP_SE). The all-mighty says *"It is extracted from the base computing languages Java, C, C++ and Python"*, but I would have compared it (at least in the first years) with COBOL... but what do I know... I didn't even like C!

Do I like it? Well, I didn't dislike it, to be honest. I worked with it for about 20 years, so I guess the answer might be yes. It is the only language I've actually used professionally (other than Ruby), so I don't think I have much criteria to compare. Or maybe I do...? 🤔

**Ruby. It's a wrap.**

In the end this is the language at the origin of this post. If you are a web developer you most likely know [Ruby](https://en.wikipedia.org/wiki/Ruby_(programming_language)). If you don't it's never too late. 

Did you know that Ruby is an [Functional](https://en.wikipedia.org/wiki/Functional_programming) (impure), [Imperative](https://en.wikipedia.org/wiki/Imperative_programming), [Interpreted](https://en.wikipedia.org/wiki/Interpreted_language), [Object-oriented](https://en.wikipedia.org/wiki/Object-oriented_programming), [Meta-programming](https://en.wikipedia.org/wiki/Metaprogramming) language? Well, know you know.  

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/mwvmdphro4lkq5ejzbv9.jpeg)

I found learning Ruby was easy. It took a while to get used to the fact that so many things where just so easy to achieve. At the beginning of my training I would develop methods to do simple tasks to later on learn they already existed. Now, I am learning that most of those methods exist thanks to Meta-programming which seems fascinating to me. 

Well, well, well, after all these interesting facts it is now time for me to go back to learning. There's so much to discover! Ups, almost forgot! Check out the [wikipedia link](https://en.wikipedia.org/wiki/List_of_programming_languages_by_type) that brought me here!

What are your favourite languages? Any memories worth sharing? We would love to hear about it. Share your thoughts in [Twitter](https://twitter.com/codegram).