💾 Archived View for soviet.circumlunar.space › julianrota › languages.gmi captured on 2023-05-24 at 18:21:37. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2021-12-03)
-=-=-=-=-=-=-
There's no shortage of digital ink spilled in comparing programming languages these days. I've been around long enough to at least know that there's no one perfect language, and each one has some things it excels in and others it's not so good at. I've done projects in most of the popular ones at some point, so I thought I'd spill a little more on my thoughts.
My current day job is Ruby/Rails web apps. Ruby has some warts, but if I'm building a new webapp with significant backend functionality, Rails is likely to be my first choice. Nothing I've seen in any other language or framework can match the functionality and simplicity you get with Rails, and the sheer variety of well-maintained gems and how well they integrate into Rails.
That said, I'm not sure of any other type of project that I'd pick Ruby for. It's still a fine language outside of Rails, but it doesn't seem to give much reason to pick it over other options. It's relatively rare to find Ruby installed on a random host, but there's usually some version of Python installed.
For me, Python seems like the best duct-tape language. It's around everywhere, and it's usually pretty simple and well-supported to connect any random two things together. It's not the fastest, and it's dependency management is still pretty awful compared to anything else, but just being pretty good and ubiquitous does a lot.
I usually reach for Python first when it's time to make a one-off script to try something out. At least, assuming that thing I want to try doesn't need a ton of dependencies specific to some other language, or have some other kind of deployment issues.
I've tried out Go a few times. Initially, I was a little meh for a few reasons, mostly the highly verbose error handling, poor dependency management, and generally the lack of really interesting language features. I also think the way that pointers and nil-ability are handled is kind of clunky, and the module system and file locations still seems confusing. I have to admit though that Go has grown on me some in the last few months. That's more about the easy cross-platform compilation, single-file deployment to any platform, and the massive standard library. Also the Gemini world seems to be rather keen on Go.
I got enthusiastic about Rust for a while, because it's great at the things that Go, and most other compiled languages, aren't good at. Innovative error handling and great dependency management, and you can do pretty cool tricks with Macros too. Downside is that the practical ability to compile for other platforms is pretty bad, and the package ecosystem is somewhat fragmented and immature, particularly for web-related tasks. I still want to use it more, I just don't have many project ideas that it's a great fit for.
Java is a pretty dull language I guess. Everything I try to do in it seems to be drowning in the worst enterprise-y verbosity with heaps of XML everywhere. I guess it's all right if you can stick to the best parts and the latest version. I've used it occasionally for Android stuff and to help out with a friend's web project. I don't exactly hate it if it's really the best choice for something, but I can't think of anything I'd want to build in it.
I've done a good amount of work in C#. The best you can say for it is that it's a lot like a cleaned-up version of Java with great integration with the Microsoft ecosystem. I still tend of think of it as the language that's great for making Windows (only) desktop apps, and meh for everything else. Though I haven't really taken a close look at it since the new .NET multiplatform stuff came out, maybe it's a more solid option for web stuff these days that I'm giving it credit for.