I have found this video by Mark Rendle (2024). I think this is a valuable presentation of hysteory of programming languages. Learn about Fortran, Algol, Lisp and the engineers that created these languages. Mark Rendle is experienced mentor and developer I recently follow on Twitter and Linkedin. I love this video. Is very informative.
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/ Gradual |
Scope Model | How sub-programs and functions store local scope variables. | Dynamic (stack)/ Static (hip) |
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 |
Computer languages can be categorized by the complexity and purpose in [1-5] generations:
A: Close to machines
B: Close to humans
We 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.
These are very modern languages. We advice beginners to start with one of these languages. Our opinion consider criterias like readability, quality of documentation, features and performance. We do not look at popularity or community or business perspective. We are more focus on learning computer science concepts and fundamentals of programming when we recommend these languages:
Scripting languages are easy to learn because they are more or less interactive. That is a huge advantage over the compiled languages. Is not a bad idea to start programming with one of these languages, but maybe is even better to learn some of these languages second. You can understand most programming concepts with any of these languages:
Traditional languages are just amazing. We study these languages to understand the hystory of computing. We study old features that influence our thinking. We like to descover and reconsider long established features. Learn these languages if you are looking into low level system programming and advanced computing.
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.
Ace-1945 Computer
design by Alan Turing
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/ |
1986 | Erlang | https://www.erlang.org/ |
1990 | Haskell | https://www.haskell.org |
1990 | Ruby | https://www.ruby-lang.org/ |
1991 | Python | https://www.python.org/ |
1993 | Lua | https://www.lua.org/about.html |
1995 | Racket | https://racket-lang.org/ |
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 |
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/ |
2016 | Zig | https://ziglang.org/ |
2018 | ELM | https://elm-lang.org/ |
2022 | Carbon | https://github.com/carbon-language |
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++, Objective-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 highly recommend this speech 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!
Prediction: In the future, programmers will avoid regulations and will create disruptive new, open source programming languages. There will be always rogue programmers. Rogue languages will be learned quickly by smart individuals who need jobs and will become influential because they will work better. The government do not like to spend money on technology so they will chose open source languages, that can't be regulated.
AI is designed to replace programmers. However, English is not a good programming language. So far, AI has failed to produce executable meaningful software. We have try our best to create tutorials for learning the fundamentals of programming. If AI manage to create software without using programming languages then in the future we will no longer use traditional programming. That is likely to happen next centiry.
Read next: Prompt Engineering