What is your personal opinion about the top 5 Tiobe languages (Java, C, C++, C#, Python)?
Java: Solid, but verbose.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
The language itself is fairly simple and straight forward. You almost never find something that surprises you and that is a good thing. The community has built some really high-quality libraries and frameworks for java. It works well with back end services such as databases and messaging engines.
The main criticism I have with java is how verbose it is. Every day things like having a data class require tons of boilerplate code, which hinders productivity to some extent. See the hello world app? only 1/2 line is related to printing hello world, the rest is pure boilerplate.
It is really good for enterprise applications.
C: Fast and simple, but primitive.
#include<stdio.h>
main()
{
printf("Hello, World!");
}
C compiles to damned good machine code. It is nearly impossible to beat C on performance.
The language is relatively simple to understand.
C is not a particularly productive language. It does not have object-oriented or functional features. It does not have a garbage collector. There is no high-level abstraction for common data structures such as lists and strings. There are no features for error handling, generic programming, functional programming, etc. People reinvent the wheel over and over. C gives you plenty of rope to hang yourself with. It is basically portable assembly. You need a competent developer to avoid buffer overflows, dangling pointers, and memory leaks.
It is great for low-level programming: kernels, drivers, microcontrollers, video codecs, etc...
C++: Fast, but complex
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!";
return 0;
}
C++ is a superset of C (almost). It has really good performance and addresses some of the shortcomings of C. It includes a standard library with common data structures such as associative arrays, lists, and strings, which help productivity and make the code easier to read.
They tried to keep backward compatibility with C, which means it has a lot of C baggage and suffers from some of the same problems.
C++ is a beast, it is probably one of the hardest languages to learn because it has so many features and a massive library. It suffers from feature creep. It is hard to find competent C++ developers, so a lot of code out there is poorly written. If you are good at C++, you are at the top of the food chain.
It is good for writing portable high-performance applications. Really popular for game development. Popular for desktop applications such as browsers, media players, office suites, etc…
C#: elegant and practical, but windows first
using System;
Console.WriteLine("Hello, World!");
C# is a great competitor to Java and it is clearly inspired by it. C# fixes many of the problems that java has and adds useful features such as reified generics, value types, async/await, unsigned types, code generators, and stack allocations. It also adds syntax sugar that improves productivity such as null coalescing, pattern matching, auto properties, records, LINQ, and top-level statements.
C# started as a windows only language. As of this writing, there are still features that only work on windows, most notably the GUI frameworks. For many years java was therefore preferred by open source enthusiasts. As a result, java enjoyed a much larger community and there are many frameworks and libraries for java that have no equivalent in C#, or are of inferior quality.
It rocks for writing windows desktop applications. It is also great for gaming with Unity.
Python: Easy but slow
Java: Solid, but verbose.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
The language itself is fairly simple and straight forward. You almost never find something that surprises you and that is a good thing. The community has built some really high-quality libraries and frameworks for java. It works well with back end services such as databases and messaging engines.
The main criticism I have with java is how verbose it is. Every day things like having a data class require tons of boilerplate code, which hinders productivity to some extent. See the hello world app? only 1/2 line is related to printing hello world, the rest is pure boilerplate.
It is really good for enterprise applications.
C: Fast and simple, but primitive.
#include<stdio.h>
main()
{
printf("Hello, World!");
}
C compiles to damned good machine code. It is nearly impossible to beat C on performance.
The language is relatively simple to understand.
C is not a particularly productive language. It does not have object-oriented or functional features. It does not have a garbage collector. There is no high-level abstraction for common data structures such as lists and strings. There are no features for error handling, generic programming, functional programming, etc. People reinvent the wheel over and over. C gives you plenty of rope to hang yourself with. It is basically portable assembly. You need a competent developer to avoid buffer overflows, dangling pointers, and memory leaks.
It is great for low-level programming: kernels, drivers, microcontrollers, video codecs, etc...
C++: Fast, but complex
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!";
return 0;
}
C++ is a superset of C (almost). It has really good performance and addresses some of the shortcomings of C. It includes a standard library with common data structures such as associative arrays, lists, and strings, which help productivity and make the code easier to read.
They tried to keep backward compatibility with C, which means it has a lot of C baggage and suffers from some of the same problems.
C++ is a beast, it is probably one of the hardest languages to learn because it has so many features and a massive library. It suffers from feature creep. It is hard to find competent C++ developers, so a lot of code out there is poorly written. If you are good at C++, you are at the top of the food chain.
It is good for writing portable high-performance applications. Really popular for game development. Popular for desktop applications such as browsers, media players, office suites, etc…
C#: elegant and practical, but windows first
using System;
Console.WriteLine("Hello, World!");
C# is a great competitor to Java and it is clearly inspired by it. C# fixes many of the problems that java has and adds useful features such as reified generics, value types, async/await, unsigned types, code generators, and stack allocations. It also adds syntax sugar that improves productivity such as null coalescing, pattern matching, auto properties, records, LINQ, and top-level statements.
C# started as a windows only language. As of this writing, there are still features that only work on windows, most notably the GUI frameworks. For many years java was therefore preferred by open source enthusiasts. As a result, java enjoyed a much larger community and there are many frameworks and libraries for java that have no equivalent in C#, or are of inferior quality.
It rocks for writing windows desktop applications. It is also great for gaming with Unity.
Python: Easy but slow
👍1