5 ms·
Progamming language evangelism is basically a zero-sum game. Some languages don't really intrude on one another's territory — e.g. not that many people are rew
by muglug 3y ago
Progamming language evangelism is basically a zero-sum game.
Some languages don't really intrude on one another's territory — e.g. not that many people are rewriting Ruby programs in Rust — but some very directly compete.
So if you want to convince someone to use F#, you have to convince them it's significantly better than some other closely-related language. And that's hard!
I have a strong suspicion that the next decade will see a reduction in programming language diversity. JavaScript/TypeScript and Python will become even more popular, to the detriment of everything but Go, C++, and Rust.
Platform-specific languages like Swift will persevere, as will Java, which is unkillable, but the vast array of languages will become less vast.
- Semaphor 3y ago> JavaScript/TypeScript and Python will become even more popular, to the detriment of everything but Go, C++, and Rust. Why do you see the popularity of C# waning?
- lostmsu 3y agoRust might take its place if the tooling would be on par. Personally I'd jump.
- pjmlp 3y agoGood luck having the whole .NET Windows ecosystem rewritten in Rust.
- lostmsu 3y agoEh. It is vast, but the tide is shifting. Non-UI components were never that good. WPF is in maintenance mode. And there is a growing need for deep learning which is currently a total lackluster in .NET
- pjmlp 3y agoStill, more likely to be Python and C++ than Rust. See ONYX, DirectML and ML.NET announcements at BUILD.
- lostmsu 3y agoPython and C++ aren't replacements for C# due to different issues with them (which are not present in Rust). Neither ONNX, nor DirectML, nor ML.NET excel at deep learning. TorchSharp is the closest to what is needed for the modern ML work, and there is almost no investment in it - I believe there's just one person working on it, and even that is part time. The only thing that keeps me on C# is lack of Rust debuggers that would be able to evaluate arbitrary Rust expressions including full support for traits.
- throwaway2037 3y agoYou are the first person I have heard mention the desire to transition from C# to Rust. Usually, it is C++ to Rust, or Java to C#. if the tooling would be on par I am betting person, and I say: "It never will be." It is easy to overlook the importance of better developer tooling. It directly translates into higher developer productivity. Every time I am forced to use a language with worse developer tooling, I am reminded of this performance hit. This is why Microsoft spends so much time and efforts on its developer tools. Also: Better tooling means below average developers can level-up to average. This is most of corporate computing, so a win for the bean counters. Also: There is not single, commercial, controlling force behind Rust, like Java and DotNet. Don't interpret this post as anything against Rust. I think it is a brilliant language.
- KingMob 3y agoAgreed, I think people are sleeping on the relative disparities in tooling between langs, and it will only get worse. I feel this daily as a Clojure programmer. I've been playing with Copilot, and it's astonishing how much worse Copilot is at generating Clojure code, than say, Js. The difference is probably due to training volume, and if AI-assisted coding is worth it at all, the benefits will primarily accrue to the largest languages.
- throwaway2037 3y agoAt the office, a teammate and I recently had to write some C# again using Visual Studio. (Normally, we write Python and Java using JetBrains' IntelliJ.) Even then, we could both notice the developer experience was slightly worse in Visual Studio, than IntelliJ. That said, there are lots of nice (new) language features in C# to make-up for the difference!
- recfab 3y agoIn case you haven't seen it already, JetBrains also makes a C# IDE called Rider [0]. Personally, I find the JetBrains IDEs overly complicated. More so than Visual Studio, but that may be familiarity. (Also, I use VSCode for .NET these days so full IDEs feel heavy to me anyway.) [0]: https://www.jetbrains.com/rider/features/ https://www.jetbrains.com/rider/features/
- physPop 3y agoRust and C# do very different things
- IshKebab 3y agoThere's a huge amount of overlap. They are both general purpose languages - as such they are in competition. I would say there are more applications where either would be a reasonable choice than there are where one is the obvious choice and the other isn't a reasonable option.
- local_crmdgeon 3y agoAgreed. Tweaks: I don't think C++ is going to be relevant for much longer, Rust solves the problem space better. Python ... maybe? It's so different than the rest, I can see it going the way of Ruby once AI bindings improve in other languages. I can also see Julia dominating the AI space. The "better than X" languages though? C#, F#, Scala? Done. I don't even hear about Kotlin that much anymore, Java is starting to adopt the good stuff from them.
- ta-run 3y agoThere's also MojoLang[0] that brands itself as a alternative to Python, and Google will look to release Carbon soon as well. It'll be interesting to see how these two grow. There's also Odin[1] that looks promising. I don't think C# is going anywhere, F# on the other hand :shrug: is at the mercy of MS - they always seem to be on the fence about it. [0] - https://www.modular.com/mojo https://www.modular.com/mojo [1] - http://odin-lang.org/ http://odin-lang.org/
- abstractcontrol 3y agoMojo is a language that thinks it will impress the Python programmers with its ability to implement matrix multiplies directly in it. I don't think it will be that easy, but it might replace Cython.
- Tehdasi 3y ago> Agreed. Tweaks: I don't think C++ is going to be relevant for much longer, Rust solves the problem space better. I would say that in the domain of game development C++ (which is where I'm guessing that most new C++ development is done) has such a moat that Rust in it's current form will not be able to displace it.
- girvo 3y agoI would love for Rust to take over C/C++, but in embedded it's still got a while to go, and it's not even really Rust's fault per se. It's the tooling and third party driver problem that's the real issue. It's getting there, sure, but it's getting there by rebuilding the world, which is... like I said, it's a while away, IMO.
- BSEdlMMldESB 3y agobut also, some languages really overlap directly, like elixir and ruby, or C and java and javascript. so maybe is not "zero sum" between every langauge and even more so for beginners, most languages only show their differences at a much deeper level.
- phamilton 3y ago> not that many people are rewriting Ruby programs in Rust Just an anecdote (and definitely not "many") but one thing we've found is that ruby and rust actually fit fairly well together. The way I express something in Ruby (often FP stuff like `map` and `filter`) translates very well in Rust. Much better than it translates into (as an example) golang. Beyond expression, the tooling in rust (cargo) feels very familiar and intuitive. Ruby -> Rust in that regard has felt much more natural than Ruby -> JVM/golang/C++. Don't get me wrong, it's not a trivial jump, but I've been pleasantly surprised by much of the developer experience.
- faitswulff 3y agoYou might find it interesting to know that Yehuda Katz, author of bundler, was hired to write cargo. There has been a lot of cross pollination between the Ruby and Rust communities.
- phamilton 3y agoYep. Katz, Klabnik and many others (whose names surely don't start with K) have a cultural presence that is certainly felt.
- jayd16 3y agoC# will stay because Microsoft will push it. Honestly what makes Go so special? I could see another language or even Java or C# get their AOT story together and retake what was lost to Go.
- xmonkee 3y agoGarbage collected "modern" language that builds native binaries? There is very little that can compete with that. I don't really like Go, but if I ever need to write a binary I will reach for it, because I don't really want to do manual memory management (even the rust type). My needs are rarely that performance oriented.
- jayd16 3y agoLike I said, Java and C# have single binary AOT builds coming down the pipe. Shops could end up gravitating away from Go for this reason.
- pjmlp 3y ago> Honestly what makes Go so special? Google branding, and yet another language from UNIX creators. None of its direct influences, Oberon-2 and Limbo, achieved market success when ETHZ or Bell Labs were pushing them. Docker and Kubernetes successes made Go unavoidable on DevOps space.
- freilanzer 3y agoCrystal, for example, would be a better Go for me.
- fulafel 3y agoLanguages are so fundamental, it's philosophy, and tools of expression. Debating better ways of doing these things is something that naturally happens in our heads and by extension in discours - the motivations aren't necessarily extrinsic. Even if your suspicion is right - since so many new programmers enter the field, absolute community sizes can still easily grow and hence we get more real-world viable languages. Personally I think we've witnessed an acceleration in the coming and going of languages. Go, Rust, TypeScript, Clojure, Elixir, Zig, etc. And C++ is being dethroned in many more application areas than seemed likely only few years ago. And the GPU realm is still nearly entirely untouched territory. Plus the AI craze may yet stir the soup significantly.
- galaxyLogic 3y agoThe thing about AI generated code is it may do what you want or it may do something else. It's hard to know which is the case. That means you the human programmer must verify the AI generated code. And to be able to do that, you must understand the code written by AI. That suggests that languages which are easy to read )i.e. to understand) will have an advantage in the AI era.