Thoughts on programming languages
that no one asked for.
5 September 2024
Go
Seems perfect in the beginning, but there are some flaws. The common ethos in the community is, 'use the stdlib and go write it yourself'. So open source libraries are often lacking. Such was the case with Gorilla which was archived but thankfully brought back. Although it prides itself on simplicity, I believe codebases will start to get much more complex as Go project grows.
C#
Overlooked it at first, but it's actually pretty good. Entity Framework Core provides first party support for maintaining database schemas and migrations, and for keeping code models in sync with the database, and Dotnet Core Identity provides authentication out of the box. It also provides first party support for hosting with Azure. However, the language itself feels verbose and requires a lot of context when developing, and the ecosystem tries to funnel you into funding Azure at every turn.
Typescript
Generally positive. It has opposite problem with Go where people tend to install a thousand npm packages and it becomes hell to maintain. It's (optionally) statically typed, so I prefer not to use it when interacting with databases.
Python
I don't like the dynamic typing, whitespace syntax, and the slow speed. I would rather use Typescript/Javascript if I can, but I will use it if I must for the AI/ML libraries and ecosystem. Hopefully Mojo, a superset of Python with static typing, will become stable and take off.
C
It's fine. Good for learning memory management and dealing with function pointers, but haven't personally found a strong use-case for it. It's my choice for when memory management is required.
Other languages
In summary for web projects, I would choose Typescript, C#, and Go, hosted on Azure/Google Cloud/Cloudflare. Popular languages I don't think I'll ever learn (maybe except for work) are Java, Ruby, and PHP as I already know other languages that fit their use case. The other languages I think I'll eventually learn and use are Swift, and possibly C++ or Rust.