This Week in Programming: When to Choose F# Over Rust
What’s better than watching the polls, whether we’re talking presidential elections or programming language popularity? Well, debating why we choose one programming language over another, of course!
This week, that discussion comes from Paul Biggar, founder and CEO of Dark Lang, a programming language (with built-in infrastructure) that promises “deployless” deployments and a time from code to production of fewer than 50 milliseconds.
Originally, Dark was written in Python before moving to OCaml, but now Biggar says they are leaving OCaml behind for a number of reasons, including a lack of tooling, libraries, and a difficult learning curve. In looking for a replacement, says Biggar, he had long expected that the rewrite would happen in Rust, as it does have “excellent tooling, great libraries, a delightful community, etc.” but after a month working with Rust, it was clear it wasn’t meant to be. At that time, he offered a direct comparison of OCaml and Rust, noting that “all programming languages suck, especially whichever one is your favorite,” and those seem like sage words for any such discussion herein.
That said, Biggar decided that Dark’s new backend will be in F# for somewhat of a simple reason: F# is “OCaml backed by the world’s largest and most experienced creators of programming languages. And in the areas that OCaml is great, F# is also great! Sum types, static typing, eager execution, pipelines, immutable values, all of this is really great.” Beyond the ease of transition between OCaml and F#, however, there were some Rust-specific reasons for why Dark didn’t choose Rust, a blog post that he also said could be simply titled “you’ll never believe just how much a Garbage Collector does for you!”
So, after briefly addressing why it was also a no-go for Clojure, Haskell, and Scala, Biggar tackles why the increasingly trendy Rust didn’t end up as the language of choice, as he had once expected. Put simply, “it came down to a few major things: missing a GCP library, and the low-level nature of the language.” Along with that, he notes that the pattern matching isn’t particularly great, there are too many ways to do things, the language isn’t immutable, and that “having to do memory management sucks.”
In the end, he boils the decision down to one that might apply to many considering Rust: “I think most of us don’t need Rust. I think Rust is a wonderful community, ecosystem, and tooling, wrapping a language that nicely solves a problem very few of us have. It’s just so nice over there, until you actually write code. […] By having a GC, we don’t have to do any of the stuff that causes all these problems in Rust. Maybe that costs performance, but I need the ability to quickly write code a lot more than I need the extra performance.”
I wrote code today, and it felt so goddamned good that I want an “I coded” sticker
— Bryan Cantrill (@bcantrill) November 5, 2020
This Week in Programming
- Python Surpasses Java in TIOBE: This month’s TIOBE Index, a ranking of programming languages according to search engine results, has come out with the attention-grabbing headline that “Python is unstoppable and surpasses Java.” According to the write-up, this is the first time that Java and C aren’t the two top languages — although C holds number one this month, Python has replaced Java for the number two spot. As for why, they offer that Python’s new popularity on the list “has to do with general demand” and not simply the boom in data science. “Programming skills are needed everywhere nowadays and there is a lack of good software developers,” TIOBE CEO Paul Jansen writes. “As a consequence, we need something simple that can be handled by non-software engineers, something easy to learn with fast edit cycles and smooth deployment. Python meets all these needs.”
Hope everyone is enjoying their week-long stint as a data scientist, the most glamorous tech job of the last 10 years, supposed to be spent analyzing sophisticated models, but really spent mostly monitoring those few stray batch import jobs that haven’t finished yet.
— Vicki Boykis (@vboykis) November 6, 2020
- Recapping Kotlin 1.4: The latest release of Kotlin came as part of an online event taking place over three days in October and now everything is up online for those of you who missed out. JetBrains, the company behind the popular language, has written up a Kotlin 1.4 online event recap with a playlist of videos from the event, including the five most viewed, which include a look at new language features, a look into the future, and an examination of the state of Kotlin in Android, and update on coroutines, and a look at Kotlin Multiplatform Mobile. Beyond videos, there was also an AMA session on Reddit for the Kotlin team, which provided answers to the more than 700 questions posed during the event.
- TypeScript 4.1 Release Candidate Adds Template Literal Types: Following the August arrival of TypeScript 4.0, Microsoft has announced the TypeScript 4.1 RC, which it says has “some exciting new features, new checking flags, editor productivity updates, and speed improvements.” InfoWorld, meanwhile, writes that TypeScript 4.1 brings template literal types, and dives into the new features a bit, which include key remapping in mapped types, recursive conditional types, a number of breaking changes and more.
My entire consciousness is currently reduced to a tight loop making blocking io calls
— Paul Morie (@cheddarmint) November 5, 2020
- Travis CI Restructures Pricing Model: Earlier this week, we saw the long-awaited changes to Docker Hub go into effect, and at the same time, Travis CI has said they are introducing a new pricing model that it says will offer faster build times and greater flexibility, while also noting that the change will “not affect most Travis CI users who run their builds on public and private repositories using Linux and Windows OS.” The list of who will and will not be affected by the changes is detailed, so make sure to click through, but suffice to say that the changes came about because “abusers have been tying up our build queues and causing performance reductions for everyone.” As a result, they say that they “are implementing some changes for our public build repositories” that should make things fairer for their users.
- Amazon Web Services Ends .NET SDK Support: AWS has announced the end of support for the AWS SDK for .NET version 1, which will take place on April 1st, 2021, ending updates and releases, including critical bugs or security updates, at that time. While the code will still be available, they recommend migrating to the latest major version — AWS SDK for .NET version 3 (v3), which does include some breaking changes if you’re migrating directly from v1. For more details, check out the migration guide.
Newsflash: Monoliths aren’t bad. Poorly architected software is bad.
Newsflash #2: If you thought poorly architected monoliths were bad, just wait until you see poorly architected microservice meshes.
— James Shore (@jamesshore) November 3, 2020
Amazon Web Services is a sponsor of The New Stack.
Feature image by Steve Buissinne via Pixabay.