Introduction
To choose the best programming language for a new project is never an easy task. There are thousands of programming languages and each of them has its own advantages and disadvantages. I often see some discussions at programmer forums like “Java is much better than C++” and “Python is the best programming language ever”. As I can see as a programmer: no programming language is better than an other one. You cannot set an order between them without the real context. And the real context is the project to be done. You can tell that “for this project Java is a much better choice than C++” and to be honest before starting a new project you always need to decide which language is the best choice for the project. To be able to do such a decision you need to analyse the project requirements. So for example if it should run on an Android Phone of course you would never choose PHP or if it is a web service then most likely C is not the best choice. You need also take into account what is the current knowledge level of the team which will work on the project. So if your team has a good experience on Java, but they have never worked with C++ then it makes sense to choose Java even if C++ would be more fitting for the project.
The popularity of the languages is constantly changing. There’s the so called TIOBE index, which is telling the popularity of a programming language at a certain point of time.
I think it is giving a good overview now at the start of the new year to check what were the most popular programming languages of 2018 and getting a brief overview about them.
- Java Java became popular at the start of the century and since that it is always taking any of the first two places on the list. It is an object oriented programming language, mainly used for desktop applications, web applications and mobile applications. Thanks for the Java virtual machine you can run the same application under several different operation systems. It is really a good choice for multiplatform applications. An other advantage is that there are millions of Java developers all around the world.
- C C is really an old language from the start of the 70’s. Since that it is keeps on staying very popular, it is usually sharing the first two places on the TIOBE list with Java. C is a lower level programming language, good for direct memory manipulation etc. Nowadays it is mainly used for embedded systems where low level operations are needed and runtime is in focus.
- C++ C++ is basically an advanced C. It is already more than 30 years old and it is usually on the 3rd or 4th place of the list. It’s main feature in comparison to C is the support of object oriented programming elements and the huge standard library which is supporting several algorithms, data structures and all other stuff. There were a lot of new features introduced to the last 3 versions (C++11, C++14, C++17) which added all the features which are needed by a modern programming language in 2018. It is a good choice for both low and high level tasks. In my view this is the Swiss knife of programming languages.
- Python Python is a script language first released in 1991, but becoming really popular over the last years. Python is the best choice if you would like to reach fast results. Its language elements are making possible to code most of the common issues in several lines. Mainly used for rapid prototyping of algorithms and AI stuff. There’s a high variety of external Python libraries as well.
- C# C# was starting as the "Java of Microsoft". Like Java, it is also working with a virtual machine in the background, but for years it was supported only under Windows systems. Thanks for the Mono project it changed. Nowadays you can use it under almost all of the operating systems. It is a good choice for desktop applications, cross platform mobile applications (Xamarin) or web applications (ASP.NET). It is easy to use and it has a lot of external libraries. But don’t be surprised if the final result will be big and slow.
- Visual Basic .NET To be honest it was a surprise for me to see this language on the list. This language is also an object-oriented language targeting the .NET framework (just like C#) and it is based on the classical Visual Basic. It became popular during the last 3-4 years, most likely because of the multiplatform support by Mono project.
- PHP The story of PHP started in the 90’s and it is mainly used for server side web programming. Around ten years ago it was much more popular, but in the meanwhile it got a lot of new concurrences, so it lost its popularity a bit. There are several frameworks based on PHP. On the other hand PHP has quite often a strange behaviour from language mechanism point of view, most of them are coming from the fact that it is weakly typed.
- JavaScript If PHP is strange, then JavaScript is stranger. Just imagine a language where (Math.max() < Math.min()) is true. On the other hand JavaScript is mainly used for client side web development. It has the big advantage that all of the popular browser engine are supporting it. That’s why it has no real concurrent. There are several framework built on the top of Java Script like Angular JS or JQuery. Since some years it is also used server side web development thanks for the Node JS framework. It is supporting object oriented programming with prototypes. On more important remark: it has nothing to do with Java.
- Ruby Ruby is an object oriented programming language mainly used for web and application development.
- Delphi/Object Pascal Object pascal in the main programming language of Delphi. It is an advanced version of Pascal with object orient support. Earlier it was very popular for application development, that’s why a lot of old programmers are still using it, but it’s loosing its popularity constantly.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
#include
int main() {
printf("Hello World\n");
return 0;
}
#include
using namespace std;
int main()
{
cout << "Hello, World!";
return 0;
}
print("Hello, World!")
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, world!");
Console.ReadLine();
}
}
}
Module Module1
Sub Main()
System.Console.WriteLine("Hello World.")
System.Console.ReadLine()
End
End Sub
End Module
<php
echo "Hello World!";
?>
console.log("Hello, World!");
puts 'Hello, world!'
program ObjectPascalExample;
type
THelloWorld = class
public
procedure Greet;
end;
procedure THelloWorld.Greet;
begin
Writeln('Hello, World!');
end;
var
HelloWorld: THelloWorld;
begin
HelloWorld := THelloWorld.Create;
try
HelloWorld.Greet;
finally
HelloWorld.Free;
end;
end.