News for hackers. Stuff that matters.
Re:Why your F# evangelism isn't working by muglug on Tuesday May 30, 2023 @10:25PM (#36133775)
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.

Re:Why your F# evangelism isn't working by Semaphor on Tuesday May 30, 2023 @10:30PM (#36133809)
> 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?

Re:Why your F# evangelism isn't working by lostmsu on Tuesday May 30, 2023 @10:53PM (#36133965)
Rust might take its place if the tooling would be on par. Personally I'd jump.
Re:Why your F# evangelism isn't working by throwaway2037 on Tuesday May 30, 2023 @11:48PM (#36134253)
You 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.

Re:Why your F# evangelism isn't working by KingMob on Wednesday May 31, 2023 @03:40AM (#36135592)
Agreed, 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.

Re:Why your F# evangelism isn't working by throwaway2037 on Wednesday May 31, 2023 @04:12AM (#36135790)
At 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!
Re:Why your F# evangelism isn't working by recfab on Wednesday May 31, 2023 @02:25PM (#36141888)
In 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/

Re:Why your F# evangelism isn't working by pjmlp on Wednesday May 31, 2023 @05:13AM (#36136199)
Good luck having the whole .NET Windows ecosystem rewritten in Rust.
Re:Why your F# evangelism isn't working by lostmsu on Wednesday May 31, 2023 @08:49AM (#36137739)
Eh. 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
Re:Why your F# evangelism isn't working by pjmlp on Wednesday May 31, 2023 @09:31AM (#36138198)
Still, more likely to be Python and C++ than Rust.

See ONYX, DirectML and ML.NET announcements at BUILD.

Re:Why your F# evangelism isn't working by lostmsu on Thursday June 01, 2023 @12:14PM (#36153291)
Python 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.

Re:Why your F# evangelism isn't working by physPop on Wednesday May 31, 2023 @09:23AM (#36138084)
Rust and C# do very different things
Re:Why your F# evangelism isn't working by IshKebab on Thursday June 01, 2023 @02:07AM (#36148026)
There'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.
Re:Why your F# evangelism isn't working by local_crmdgeon on Tuesday May 30, 2023 @10:31PM (#36133813)
Agreed. 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.

Re:Why your F# evangelism isn't working by ta-run on Tuesday May 30, 2023 @11:07PM (#36134045)
There'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

[1] - http://odin-lang.org/

Re:Why your F# evangelism isn't working by abstractcontrol on Wednesday May 31, 2023 @03:18AM (#36135451)
Mojo 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.
Re:Why your F# evangelism isn't working by Tehdasi on Wednesday May 31, 2023 @12:59AM (#36134633)
> 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.

Re:Why your F# evangelism isn't working by girvo on Wednesday May 31, 2023 @01:15AM (#36134710)
I 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.
Re:Why your F# evangelism isn't working by BSEdlMMldESB on Tuesday May 30, 2023 @10:38PM (#36133853)
but 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.

Re:Why your F# evangelism isn't working by phamilton on Tuesday May 30, 2023 @11:06PM (#36134037)
> 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.

Re:Why your F# evangelism isn't working by faitswulff on Wednesday May 31, 2023 @01:13AM (#36134701)
You 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.
Re:Why your F# evangelism isn't working by phamilton on Wednesday May 31, 2023 @11:44AM (#36139666)
Yep. Katz, Klabnik and many others (whose names surely don't start with K) have a cultural presence that is certainly felt.
Re:Why your F# evangelism isn't working by fulafel on Wednesday May 31, 2023 @12:55AM (#36134606)
Languages 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.

Re:Why your F# evangelism isn't working by galaxyLogic on Wednesday May 31, 2023 @01:50AM (#36134941)
The 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.
Re:Why your F# evangelism isn't working by jayd16 on Wednesday May 31, 2023 @12:56AM (#36134614)
C# 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.
Re:Why your F# evangelism isn't working by pjmlp on Wednesday May 31, 2023 @05:13AM (#36136196)
> 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.

Re:Why your F# evangelism isn't working by freilanzer on Wednesday May 31, 2023 @05:55AM (#36136476)
Crystal, for example, would be a better Go for me.
Re:Why your F# evangelism isn't working by xmonkee on Wednesday May 31, 2023 @02:04PM (#36141528)
Garbage 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.
Re:Why your F# evangelism isn't working by jayd16 on Wednesday May 31, 2023 @02:16PM (#36141726)
Like 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.