C#. Comes with a first-class dev and debugging experience, a HUGE first-party BCL, cross-platform application support, and one of the best webserver frameworks out there.
TypeScript makes a reasonably-close second, not necessarily because it’s great, but because of how effective it is at making JavaScript usable.
The first-class dev and debugging experience, is this with Visual Studio or Rider as IDEs?
Because I currently do C# with Linux + neovim + Omnisharp as Language Server and it is really slow and bad. Do you have any tips?
I’ve never used it on Linux but Rider seems fast to me on Windows. It’s snappier than Visual Studio + Resharper at least.
VS for me. I’ve heard notbing but praise for Rider.
I know there’s also a lot of popularity for VSCode, if you know what you’re doing and what all extensions you need to setup, but that makes for a much bigger barrier to entry.
Do you know which extensions are good? I used to use 🤪 vscode but changed to helix and then neovim due to the memory and cpu usage vscode does require.
Nope, sorry. https://discord.gg/csharp if you wanna find folks that do.
Rider on Linux has worked great in my experience
I write C++ for a living but all the C# devs around me are very happy about this language.
Couldn’t have said it better myself! Lovely that it’s the most upvoted one.
Funny you list both C# and Typescript because the lead architect of C# also worked on Typescript.
Rust by a big margin.
That thing is rock solid, it’s nearly magical.
I’ll just say it: PHP. I mean the language itself is not really pretty (but came a long way).
But I’ve got a nice side gig running where I help small businesses and schools to keep their old PHP based websites running and secure until they can afford a new system. In that area money is often very tight and there are no “content managers” but a few people maintaining content with next to no technological knowledge and in their spare time. So changing systems is a hard task. Being the really decently priced guy who keeps their PHP ship afloat is pretty rewarding (not really monetarily but personally).
So working with PHP I have a very nice group of customers who are grateful for every bit of help. I love that.
I like php. I can get stuff done in it.
Depends on the task
C#
F# is also nice, but I don’t use it very often
Oddly enough Java. If you weren’t brainwashed to write the “enterprise Java”, it’s surprisingly succinct. More so than Go, whose forced “simplicity” ended up making it more verbose.
How do you feel about Kotlin?
I fucking love Kotlin.
Access to the massive Java ecosystem, and takes away 99% of the boilerplate that everybody loves to hate. AND introduces Optional types to make Null-management better. AND smart, type-aware hinting in the editor so that if you’ve validated once that x is not null, you won’t get warnings downstream - unless your variable could be altered by another thread, which is an important thing to know.
Kotlin is Java with all the suck taken out.
…And the Kotlin compiler is compatible with Java, so you can migrate one file at a time or just try it out in a subsection of your codebase…
It’s just… chef’s kiss
It’s pretty good. I’m trying to use it more in my personal projects.
@DeprecatedCompatV2 @dingleberry I mean…I’m not totally versed, I’m still learning but I don’t hate it.
I’ve heard that the recent versions of Java are a lot more pleasant to work with. I’ll probably still stick to C# though.
It sort of had a renaissance since Java 8. It incorporated all the best features of other JVM languages.
Same here. Java has a great ecosystem of tools too.
Scala 😀
Had to scroll far to find this. Love Scala!
Elm (for frontend). https://elm-lang.org/
Nothing is as easy to refactor, maintain, add new features to, work with after a gap, nothing else is as crashless and rock solid.
No compiler is a fast, friendly, helpful and insightful. Seriously. You don’t wait for the compiler. It’s instant even on huge code bases. And the resulting output outperforms other major frameworks.
Its syntax is weird at first (even stranger than python) and the autoformatter is mad keen on blank lines but after a while it’s just so clear and easy to follow.
You have to let go of your object oriented mindset and stop trying to turn everything into objects and components but everything I hated about maintaining old code evaporated once I did. I used to believe that objects detangled code, I don’t know why I continued to believe that despite the evidence, because apart from pretty small and simple things, OO code gets extremely tangled. Elm is absurdly easy to refractor, so you just do.
It’s genuinely nice to add new features to old code, something I’ve never experienced before in a few decades of programming.
The elm slack is also a very helpful place indeed and you usually get a lot of support pretty quickly.
Adding the link to their front page, I see they call it “A delightful language for reliable web applications” and the first claim is “no runtime exceptions”. I remember thinking that was marketing BS but being intrigued by the bold claim. A few years later and I can honestly say that that accurately describes my experience.
These last few years I’ve rediscovered the joy of coding.
I’ve literally never heard of this before. Are there any major projects which use this?
https://github.com/jah2488/elm-companies Vendr use it too (didn’t spot them in the list) https://www.vendr.com/
I really love Elm, and it challenges the common notion of what it means to be a “healthy” language/ecosystem. It’s a beautiful passion project that can really only be used if you adhere to the vision of its creator, but it’s a really admirable and utopian vision.
The reasons for it not being very popular are pretty clear (slow language evolution, “one way to do anything”, perfectionist design), but it’s an extremely cohesive and friendly language. I’ve never used it for anything serious, but I hope it stays around. Clearly the creator isn’t aiming for widespread adoption, but I hope that the niche it’s created grows nonetheless, because it’s a lovely ecosystem and community.
Clojure. It’s just fun to write.
Firstly, it’s functional and “Lispy”. My code is super expressive. Writing code is like writing prose where I can choose a word (function) from a large vocabulary [1]. I can focus on high-level concepts and modifying states instead of fighting with low-level logic.
Secondly, it runs on JVM - an already robust and performant platform.
And there are so many good things that I cannot simply write in some words. The father of Clojure, Rich Hickey, is a genius in expressing Clojure’s design. You should check out some of his talks [2].
Too bad that Clojure is too “niche” that I haven’t got a chance to make a living by writing Clojure, yet. But learning it is one of the best decisions I’ve ever made in my career. Yes, it’s that good.
C++, I am a library developer with some embedded experience. I can easily interface with c libs and expose my lib with a c interface. With clang, static analysis catches most bugs before runtime. Everything I write can be compiled nearly anywhere with very little dependencies required. Excellent IDE and LSP support with a ton of documentation on the language features available (admittedly, there are a lot). The standard library is gigantic, useful, and well documented. It is used everywhere, so resources and example source code in C++ are very easy to come by. Project configuration (via CMake) is extremely powerful and expressive (though not technically C++).
Some languages have some of the elements I listed, but no other language has them all.
I would also mention support for third-party compiler cache systems. Install something like ccache, set a couple of flags in the CMake project, and your whole project can now reuse build artifacts with barely no CPU load.
If you don’t mind throwing your two cents my way, what’s a good intro to C±± book for those who already have a basic understanding of C?
A tour of C++ by Stroustrup, the latest edition. It’s short but good.
Java. I’ll be the one to say it.
You can leave now.
Rust and Zig are currently my favorite languages.
Zig is really starting to grow on me, it’s basically an unfucked C (screw you, macros) and you can translate C into Zig code…and it has comptime, very nice! I don’t have the patience for Rust in my hobby projects and the standalone-ness of Zig is perfect for embedded/systems programming. it definitely needs to mature more before the masses start taking it seriously, but goddamn it’s nice to code in.
Probably Typescript, it has so many quality of life features that I miss when I’m using anything else. A close second is C#, Kotlin third.
Rust when performance really matters.
PowerShell when scripting and automating stuff. It’s common to hate it because “microsoft bad” but it’s very logical and it feels modern. Funnily enough, I’ve only used it on Mac and Linux.
Racket but I’ll take Guile Scheme as a close second. Then Hy, a lisp dialect of Python. I’m writing a blog written in a DSL of Racket right now, Pollen, that makes authoring a joyful experience. Hy gives me access to the entire Python ecosystem plus access to things like macros. Guile Scheme is the configuration language of the Linux distribution, Guix System. Guile’s G-Expressions are so powerful for writing packages.
Are the differences between racket and guile significant?
I’d say Racket is the most different of any Scheme I know but it’s not hard to get started if you know one or the other. Racket (in my opinion) has more niceties around the development experience than Guile and a pretty dang good IDE if you ask me.
C# is my happy place. Started doing python more over bash scripts for complicated stuff and I like it. I mostly use Java for work and my opinion of it depends on the how much extra effort I had to spend doing something I could have done in C# in a few minutes. Otherwise it has some nice features and project Panama has been a game changer.
For me it’s the exact opposite: Java is my happy place, especially since v17. Due to my job I got started with C# a few months ago and it has been a pleasent experience to say the least. I need to do a hobby project to explore things I can’t do at work and then I might be able to let go of some Java-isms that still creep into it.