About programming languages

This page is mostly rambling about what I like and what I dislike about various programming languages. As a warning I'm somewhat new to programming and will make over generalizations and possibly even full mistakes, feel free to send corrections to me if you find anything wrong.

What I like

Error checking

I know a lot of people dislike checked exceptions but personally I feel like checked exceptions solve a real problem. I have worked on a project that stored a lot of paths to files where the paths were user supplied, the project was written in a programming language without checked exceptions and when the program encountered a missing file it promptly crashed. The fault took long to notice because most of the paths were valid and as such most of the time the program worked fine. If the program in question had been written in a language such as Java the FileNotFound exception would have been checked and handling for such cases would have been written at the same time as the other code for found file paths.

Go is often ridiculed for its use of the "if err != nil" pattern but this makes the user to check for possible exceptions, at least in theory. I think the only problem is the tooling around the error checks being lacking. For example Rust has very similar way of handling errors with the "Result<T, E>" type but there is not similar discussion around Rust because of the tooling the language provides simplifies error checking into a single question mark that propagates the error forward with minimal extra code, if Go had similar shortcut would it have the discussion around the way of handling errors it at the moment has? If Java had a way to indicate that the function can throw errors without forcing the programmer to specify all the possible exception while still maintaining the type of the thrown exception would checked exceptions been more popular?

Verbose syntax

I think having the syntax for programming language be a little on the verbose side is a good idea, it makes the code easier to understand without knowing the specific meaning of each and every character in the source code.

Runtime efficiency

Performace matters, even if you don't think it does. Faster running program means less servers are needed and user does not need to wait as long for the program to respond to input making for a better user experience.

Modularity

Modular systems help share code between projects, namespaces help in the extereme case that two dependencies in a project share name by specifying the dependency name on import per source file. Namespaces also provide a suprising reduction in required typing by being able to autocomple

Ecosystem

Ecosystem might be the most important factor for a programming language to become mainsteam

About various programming languages

Java

Java is really verbose and there is no way around it one will have to write some boilerplate code with Java but with a good IDE the amount of manual work can be minimized. Performace of Java is overall decent JVM is bit slow to start and does use somewhat much memory but otherwise there is not much to complain about the speed on program execution.

C#

Python

Rust

Rust comes very close to being ideal programming language for me, it is strongly typed, compiled, fast and has good enough ecosystem and decent standard library.