The Programming Languages guide Part 0: Intro
Tags: programming, beginners, computerscience, help
Published: 2022-04-24 19:03:52

### Introduction

Today's world is fully dependent on Technology. It's tech-driven world, literally Technology has a full impact on almost everything in our daily life. That means One thing the world needs more Developers, people to develop and maintain the fast-base growing Technology.

### General Overview - *definitions,  Terminologies & etc.*

just like we communicate each others using different languages, so are the Programmers. they communicate with the computers using Programming languages - their way and languages of communicating with machines(computers) for them to develop and/or produce the desired outputs. 

A Programming Language is any set of rules that converts any written instructions(normally Strings) or Graphical elements(in case of [Visual programming language](https://en.wikipedia.org/wiki/Visual_programming_language) into various kinds of Machine code outputs. they consist of instructions for computers to execute to implement algorithms.  They are the intermediary between the human language and the Machine language(binary - **0**s and **1**s)

A computer program - Is a collection of instructions that performs a specific task
when executed by a computer. there are probably thousands of Programming languages and more  created  continuously so the loop is endless for a programming languages.


### Types and Categories of Programming languages

Programming Languages can be grouped or categorized in many different forms, let's take a look at some the common forms:

 #### - Low Level Vs High Level

in terms of levels, Programming languages can be grouped into three categories

- Machine Languages
- Assembly Languages
- High-level Languages

Now let's discuss them in detail with some examples

Machine languages are written in binary formats (that is **0**s and **1**s) which are understood by the CPU, hence the CPU executes machine languages directly without Compiler or translator which means they are high-performance.

Assembly languages are written in some-what like-English, its basically commands (normally written in abbreviated form) which are hard for human beings to fully understand and neither does the computer understands at all😀*(Ironic right?)*, they are compiled into machine code for execution. these type of languages are mostly used to program embedded systems for low hardware and high-performance.

Both Machine and Assembly languages are also commonly called as low level Programming languages because they are more 

High-level languages are understood by human beings, they are the most commonly used Programming languages. They are called high level languages mainly for 2 reasons:

1. They are easy to understand, infect close to human language, they have to be compiled
 or translated into machine code for the Processor to execute them.

2. They don't require  hardware handling such as memory management by the programmer, [garbage collection](https://www.freecodecamp.org/news/a-guide-to-garbage-collection-in-programming/) handles this task  allowing the programmer to focus on the Program itself.

Both Assembly and High-L=level Languages are either compiled or translated at run time.

#### - Compiled Vs Interpreted

The picture below from [bournetocode.com](https://bournetocode.com/projects/GCSE_Computing_Fundamentals/pages/3-2-9-class_prog_langs.html)  simplifies Translated Vs Compiled Programming Languages


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fsqafpj2vfvplys6gtqx.PNG)

**So what exactly are Compiled and Interpreted languages**

**Compiled Languages** are converted into machine code that the CPU(Processor) can execute directly. Think of the as pre-translated for the Processor, just like a Booked translated from one Language to another(in this case from high-level or Assembly language to Machine language)

**Interpreted Languages** are not converted into machine, instead the program is translated line-by-line to the CPU for execution, think of them as a friend of Yours reading and translating the book for you 

I know it is still confusing *so here is  a simple Example to really understand them better*

assume there's is this Book everyone is talking about how great it is and you really want to read it but unfortunately the Book is written in Arabic and you don't understand Arabic(its just by example🤗). Well too bad for you right?

Actually there are many ways you can get the content of that book among them are .

1. There is an already Translated version of the Book (in your mother-tongue), so you go ahead and get that version to read it

2. Or there's a great friend of yours who's really good at Arabic so he translates it for you as he reads it or summarizes it for you after he reads.

The First Example is Compiled You were the CPU, The person who translated it was the Compiler  and the book was the Program, its already translated, you just read it, the content are ready made for you so its faster.

The Second Example is Interpreted, You were the CPU, Your Friend was the Interpreter And The Book was the Program, It takes some time, it's a process, Your friend conveys the message the way you understand it.

hope you understood it by now☺


### What I will be covering in these series of blog posts

 Throughout These series of blog posts I will be covering Programming languages guide and for each Programming Language I will mainly focus on 

- An intro and a brief history
- What it's used for
- Which popular Companies uses it
- Some Popular Softwares/Websites/Apps that uses or built in

It's also important to note that the above mentioned points may change, I may add or leave a point(s) for some a programming, it will really depend on the context of The language I'm on the table for that particular post.


### Disclaimer

In these series of a Guide to Programming Languages, The Term  **Programming languages** isn't explicit,  infect I may use it for even a framework or library,  so in this series I mean it anything that can be used to program a program, *still confusing huh?*,  What I'm saying is that, the Term will be generalized so don't wonder if I cover things like ASP,  ReactJs or so on throughout this series of blog posts, I am targeting anything is used to a program a computer program


### Conclusion

That brings us at the end of the Intro of what will be a really long list of blogs and Well it was quite a ride, I really didn't planned it that long way🙂 but I'm proud as a long as its helpful.

Thanks for reading, hope you found it helpful, don't forget to like and spread it and of course this will be a series of Blog Posts so stay tuned for the journey ahead, my aim is to help out even if it's 1%.

You can follow me and or hit me up on [Twitter](https://twitter.com/Annaati17) or  [LinkedIn](http://www.linkedin.com/in/Annaati)