Sage-Code Laboratory
index<--

Programming Languages

A language once implemented can’t be changed too much, or if you do you can loose your customers. So to make improvements you need to create a new language from scratch. Therefore today we have numerous computer languages competing for usability or performance.

Language classification

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.

Disclaimer: In next classification, the languages are ordered of our estimated technical value not in order of popularity. For independent popularity index you can study the: official tiobe index

A: First class compiled languages

These are very efficient languages for creation of native applications on diverse platforms. These languages have static types and all are curly bracket languages from C family except Nim.

B: Traditional compiled languages

C: Virtual machine or interpreted

D: Java Virtual Machine (JVM)

E: Dynamic Languages

F: Functional languages

Historic Languages

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, C++, Forth, 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.

Alan Turing Designed Computer

Ace-1945 Computer
design by Alan Turing

Traditional Languages

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.

Year Name Homepage
1983 Ada http://www.adacore.com/
1980 Python https://www.python.org/
1990 Ruby https://www.ruby-lang.org/
1986 Erlang https://www.erlang.org/
1990 Haskell https://www.haskell.org
1993 Lua https://www.lua.org/about.html
1995 Java https://www.oracle.com/java/technologies/
1995 JavaScript https://www.ecma-international.org/ecma-262/6.0/
2001 Scala http://www.scala-lang.org
2009 Closure http://clojure.org
2009 Go https://golang.org

Emerging Languages

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.

Year Name Homepage
2011 Dart https://www.dartlang.org
2011 Elixir https://elixir-lang.org/
2012 Julia http://julialang.org
2014 Rust https://www.rust-lang.org
2014 Swift https://swift.org
2014 Hack http://hacklang.org
2014 Crystal https://crystal-lang.org/
2016 Nim https://nim-lang.org/
2016 Kotlin https://kotlinlang.org/
2018 ELM https://elm-lang.org/

Language features

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.

FEATURE DESCRIPTION DETAILS
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

Future development

Why are we creating so many new computer languages? I will try to clarify this subject. To do so, I have search YouTube for a relevant video about the "future of programming languages" and I have found one. It is all about learning from history.

There are many computer languages out there and takes a lifetime to learn them all. The languages with the strongest position in software industry are: Fortran, C, C++, Onjective-C and Lisp. New computer languages are created because old computer languages can not be fixed.

Once a computer language was used in production it is needed unchanged for support. If is changing too much then it becomes a new computer language. This is what happen to Niklaus Wirth languages. They have evolved too fast: Pascal, Modula, Oberon. All genial, all forgotten.

For developers is very difficult to switch from one computer language to another. Every new computer language promises to correct previous issues from other languages. Some languages may have new paradigms that may be even harder to grasp.

Next video is about 1h +20min. If you have the time, I higly recommand this speach about the future of programming languages. This video is very popular it has now 23k views. I have enjoyed watching, it is very informative and fun!

Programming

Conclusion from this video: Sooner or later programming languages will be ruled by politicians. We will have regulations surrounding programming activity and probable the government will approve one or other language for most critical applications.

My opinion is different

New programming languages should be constructed to improve communication between humans. We write and read the code, not the computer. The computer can do whatever we tell him to do. It should be able to compile any kind of language. The strive is to make languages that are efficient to compile but also user friendly.

In the future, programmers will refuse to be regulated and will create disruptive open source programming languages. There will be always some rogue programmers doing amazing new languages. These languages will be learned quickly by individuals who need jobs and will become influential becouse they will work better. The governments do not like to spend money on technology so they will chose open source and that can not be regulated.


Read next: Software Architecture