I have organized programming languages in 6 categories each containing top 5. This was a research project I have done in 2017 using Google+ surveys. I will try to update this top every year using Twitter since Google+ is gone now. Follow me and vote when I post articles about it. The link for twitter the little bird icon on bottom of this page.
Reference: The languages are ordered by my opinion now in order of value. For independent popularity index you can study the: official tiobe index
A: First class compiled languages
These are very good languages for creation of native applications. These languages have in general static types except Julia that have dynamic types that are converted to static types just in time.
- Rust – Mozilla native language;
- D – disruptive native language;
- Go – default for Google cloud;
- Swift – specific to Apple OS;
- Nim – statically typed system language;
B: Traditional compiled languages
- Assembly – second generation language;
- C/C++ This is the king of computer languages;
- FORTRAN – fast language created by IBM
- Ada – very robust language designed for US army
- Pascal/Delphi – my first computer language;
C: Virtual machine or interpreted
- Python – the most easy to learn language;
- Java – open source language created by SUN and maintained by Oracle;
- C# – default language for Microsoft Visual Studio;
- Erlang – a parallel computing language easy to learn and very fast.
D: Java Virtual Machine (JVM)
- Scala – this is also a functional language;
- JRuby – a dynamic language derived from Ruby;
- Groovy – a dynamic language for website back-end;
- Jyton – a Python dialect that can run in JVM;
- Kotlin – a new computer language created by Jetbrains company;
E: Dynamic Languages
- Python – a very popular dynamic language;
- Julia – is a new dynamic language similar to Python but faster;
- Lisp – a functional language that is very dynamic;
- Ruby – a language created for dynamic website back-end;
- Perl – a scripting language created for command line and back-end programming;
F: Functional languages
- Scala – this is mentioned second time here so it is a functional language for JVM;
- Haskell – this is the most pure functional language similar to OCaml;
- OCaml – one of the first functional languages;
- Closure – this is a functional language similar to Lisp that run in JVM;
- F# – this is a functional language for Microsoft Visual Studio;
Languages that have more then 40 years are considered traditional. That is before the Internet was born. That was the golden age of classic computer languages: Fortran,Lisp,Simula,Algol,Pascal,B, C,Forth,C++,Scheme,ML,Smalltalk.
Two of these languages remain very influential: C family and Algol family. Functional languages are derived from Lisp and Object oriented languages are derived from Simula.
Next computer languages are less then 40 years old. Let’s review some of them. Maybe you will find a language that you can learn to create your next project with it. I will update this list from time to time with new languages I find worthy.
These languages are not yet ready but promising. We are going to research these languages in our programming classes. If you wish you can learn these languages by yourself but only if you are not yet busy working for raising a family or having a busy life.
To describe a computer language you can enumerate it’s features. These are characteristics or attributes that can be compared. Some languages looks like each other and create a family. Here are the most significant features.
|Syntax style||Different syntax styles can create a so called language family.||C, Algol|
|Programming paradigm||Is the programming style or concept.||Procedural, Declarative, Object Oriented, Logical, Functional|
|Execution mode||The way final program works||Interpreted, Virtual machine or Compiled|
|Type system||Data types can be defined during design time or run-time||Dynamic / Static|
|Parameters||The way we can use parameters in procedures and functions||Optional parameters, Variadic parameter, default values etc.|
|Dispatch||The way we identify a function||Function overloading/ Signature|
|Exceptions||The way we deal with errors||Exception handling (try) or not|
|Memory management||The way we allocate and free memory during execution||Manual / Garbage Collector / Reference counting|
|Character set||The characters we can use for keywords operators and constants||ASCII / Unicode|