9 ms·
I don't use Rust much, but I agree with the thrust of the article. However, I do think that the borrowchecker is the only reason Rust actually caught on. In my
by eigenspace 1y ago
I don't use Rust much, but I agree with the thrust of the article. However, I do think that the borrowchecker is the only reason Rust actually caught on. In my opinion, it's really hard for a new language to succeed unless you can point to something and say "You literally can't do this in your language"
Without something like that, I think it just would have been impossible for Rust to gain enough momentum, and also attract the sort of people that made its culture what it is.
Otherwise, IMO Rust would have ended up just like D, a language that few people have ever used, but most people who have heard of it will say "apparently it's a better safer C++, but I'm not going to switch because I can technically do all that stuff in C++"
- mr_00ff00 1y agoThis is also somewhat backed up by the fact that OCaml (to my understanding) is basically GC Rust without a borrow checker, and yet it’s basically a hobby language.
- dismalaf 1y agoHobby language? Plenty of commercial and important software has been written in OCaml. Hell, the early versions of the Rust compiler were written in OCaml...
- littlestymaar 1y agoRealistically unless you want to work at Jane Street or Inria (the French computer science lab where Ocaml was made), if you want to use Ocaml, it's going to be as a hobby.
- School-Cotton 1y agoThere is also Ahrefs.
- dismalaf 1y agoYou can say that for almost any language that's not C/C++, C#, Java, Python and JS. Rust is just barely beginning to become "corporate". Even Ruby, which is pretty mainstream, has relatively few jobs compared to the big corporate languages.
- littlestymaar 1y agoNon-hobby languages is a narrow club, yes. Your list is at least missing PHP, Typescript, Swift, Go, Lua, Ruby and Rust though. But Ocaml really doesn't belong anywhere close to this list.
- dismalaf 1y agoUmmm Lua? It's a nice little scripting language, but literally never seen a job ad for a job using mostly Lua. It's almost the definition of hobby language... OCaml runs software that billions use, is used by financial and defense firms, plus Facebook. But Lua? By that metric I'm throwing in every language I've ever seen a job for... R, Haskell, Odin, Lisp, etc... Edit - this site is basically a meme at this point. Roblox is industrial strength but Facebook, Dassault and trading firms are "hobby". Lol. Also, I'm not dissing Lua, there's just irony in calling Lua industrial but not OCaml...
- School-Cotton 1y agoLuaJIT is widely used for writing Nginx plugins.
- maleldil 1y agoLua is widely used for scripting in games. It might not be the main language of the project, but it's still very common.
- zoky 1y agoRoblox apps are built in Lua.
- epcoa 1y ago
- vlovich123 1y agoHow may be the wrong word, but it’s definitely a niche language and significantly less software is written in it
- mr_00ff00 1y agoMaybe I’m wrong, but I only really know of Jane Street for OCaml, meanwhile FAANG all has at least some rust code. Also I would argue the rust compiler started as a hobby project
- airstrike 1y agoAlso Bloomberg: https://news.ycombinator.com/item?id=28278553 https://news.ycombinator.com/item?id=28278553
- dismalaf 1y agoFacebook Messenger's backend was/is OCaml... React was originally written in SML, then OCaml, then whatever it is now. And a bunch of places use it for various things. https://ocaml.org/industrial-users https://ocaml.org/industrial-users
- one-note 1y agoReact is and has always been javascript…
- shakna 1y agoNot what the author of React says: > Yes, the first prototype of React was written in SML; we then moved onto OCaml. > Jordan transcribed the prototype into JS for adoption; the SML version of React, however great it might be, would have died in obscurity. The Reason project's biggest goal is to show that OCaml is actually a viable, incremental and familiar-looking choice. We've been promoting this a lot but I guess one blog post and testimonial helps way more. https://news.ycombinator.com/item?id=15209814 https://news.ycombinator.com/item?id=15209814
- one-note 1y agoSure, a prototype of an idea that would eventually become React was rewritten into JS to create the initial seed of the software that would eventually be called React.
- nine_k 1y agoRather, an academia language. Also, OCaml had trouble with multithreading for quite some time, which was a limiting factor for many applications. Facebook made a large effort to thrust OCaml into the limelight, and even wrote a nice alternative frontend (Reason). Sadly, it did not stick.
- creata 1y agoI had the impression that SML was more popular in academia, and OCaml in industry. Old but funny comparison: http://adam.chlipala.net/mlcomp/ http://adam.chlipala.net/mlcomp/
- pyrale 1y agoSML was a generation before ocaml. I would say the two languages from the same generation that competed for academia's mindshare were ocaml and Haskell.
- creata 1y agoTimeline-wise, sure, but I was referring to their present-day use.
- coldtea 1y agoIf by "popular in industry" you mean a handful of companies use it, but has 1/100th the momentum and community and resources of Go or Rust, then yes.
- creata 1y agoI meant among ML-family languages. > 1/100th the momentum and community and resources of Go or Rust I think even 1/100 would be pretty generous.
- creata 1y agoI think there are two other big differences that also helped Rust become popular: * Rust has a C++-flavored syntax, but OCaml has a relatively alien ML-flavored syntax. * Rust has the backing of Mozilla, but I don't think OCaml had comparable industry backing. (Jane Street, maybe?)
- shakna 1y agoFacebook and their Reason?
- dgfitz 1y ago> rust has a C++-flavored syntax I do not at all agree with this. Rust is by far the most complex language in terms of syntax that has ever become popular enough to compare it to anything.
- packetlost 1y agoI 100% disagree with this. Typescript is syntactically far more complex.
- TylerE 1y agoComplex isn't the same thing as hard. The rust syntax often times looks like a cat walked across the keyboard.
- oneshtein 1y agoIn my eyes, Rust code is as simple as Python code or even simpler in most cases, but it also allows to create and maintain complex pieces of abstraction, when necessary, then hide them in a library or a macro. :-/ Can you show example of "written by random cat" code you often see?
- deleted 1y ago[deleted]
- packetlost 1y ago
- pyrale 1y ago> and yet it’s basically a hobby language. The difference between academia languages such as ocaml or haskell and industry languages such as Java or C# is hundreds of millions of dollar in advertising. It's not limited to the academy: plenty of languages from other horizons failed, that weren't backed by companies with a vested interest in you using their language. You should probably not infer too much from a language's success or failure.
- estebank 1y agoYou're making it sound like the success of a language is determined purely by its advertising budget by pointing at languages that had financial backing, which disregards that financial backing allows for more resources to solve technical problems. Java and C# have excellent developer tools which wouldn't have existed in their current state without lots of money being thrown around, and the languages' adoption trajectory wouldn't have looked the way they did if their tooling hasn't been as good as it was. A new language with 3 people behind it can come up with great ideas and excellent execution, but if you can't get enough of the scaffolding built in order to gain development momentum and adoption, then it is very hard to become mainstream, and money can help with that.
- pyrale 1y ago> which disregards that financial backing allows for more resources to solve technical problems. No, I'm not talking about financial backing in general, I'm talking specifically about advertising the language. There's no doubt that a big ecosystem helps a lot, Python is a good proof of that ; but this is not what i was talking about.
- coldtea 1y agoC, C++, Python, Perl, Ruby, didn't have "millions of dollars in advertising", and yet. Java and C# are the only one's that fit this. Go and Rust had some publicity from being associated with Google and Mozilla, but they both caught on without "millions of dollars in advertising" too. Endorsement by big companies like MS came much later for Rust, and Google only started devoting some PR to Go after several years of it already catching momentum.
- mavelikara 1y agoThe first version of Rust compiler, I think, was written in OCaml.
- comonoid 1y agoIt was a bootstrap implementation.
- amelius 1y agoIdiomatic programming in a functional language requires garbage collection. There is a reason languages like OCaml and Haskell have a garbage collector. Without it, programming in these languages would be completely different. If you look at it from that perspective, then Rust is the hobby language.
- zx8080 1y ago> Without it, programming in these languages would be completely different. How different?
- zozbot234 1y ago> Idiomatic programming in a functional language requires garbage collection. Rust has functional programming features and no garbage collection, because the borrow checker can tell when a closure will outlive the references in its captured environment. We used to think that would not be feasible other than perhaps in very special cases - hence the need for GC to keep that environment around - but Rust proved that wrong quite convincingly.
- amelius 1y ago"Having FP features" does not mean "allow an idiomatic FP programming style". If this were the case, we'd be seeing a revolution in functional programming now. It's not like the FP community is slow to adopt good ideas. In fact, many innovations that lead to the invention of the borrow checker came from the functional programming world (linear, affine types, effect systems).
- coldtea 1y agoI wouldn't read too much into its lacking the borrow checker. It's not about not having a C-like syntax (huge mainstream points lost), good momentum, and not having the early marketing clout that came from Rust being Mozilla's "hot new language".
- roland35 1y agoI'm not sure.. without the borrow checker you could have a pretty nice language that is like a "pro" version of golang, with better typing, concise error handling syntax, and sum types. If you only use things like String and Arc objects, you basically can do this, but it'd be nice to make that not required!
- eigenspace 1y agoThat's my whole point. Without the borrow checker it would have been a nice language, but I believe it would not have gotten popular, because being nice isnt enough to be popular in the current programming language landscape.
- MaulingMonkey 1y agoAs a Rust fan, I 100% agree. I already know plenty of nice, "safe", "efficient" languages. I know only one language with a borrow checker, and that feature has honestly driven me to use it in excess. Most of my smaller projects don't benefit so much from the statically proven compile time guarantees that e.g. Rust with it's borrow checker provide. They're simple enough to more-or-less exhaustively test. They also tend to have simple enough data models and/or lax enough latency requirements that garbage collectors aren't a drawback. C#? Kotlin? Java? Javascript? ??? Doesn't matter. I'm writing them in Rust now, and I'm comfortable enough with the borrow checker that I don't feel it slows me down, but I wouldn't have learned Rust in the first place without a borrow checker to draw me in, and I respect when people choose to pass on the whole circus for similar projects. The larger projects... for me they tend to be C++, and haven't been rewritten in Rust, so I'm tormented with a stream of bugs, a large portion of which would've been prevented - or at least made shallow - by Rust's borrow checker. Every single one of them taunts me with how theoretically preventable they are.
- ameliaquining 1y agoRust's original author agrees with you: https://graydon2.dreamwidth.org/307291.html https://graydon2.dreamwidth.org/307291.html
- oneshtein 1y ago
- gdbsjjdn 1y agoAgreed. As a comparison Golang was sold as "CSP like Erlang without the weird syntax" but people realized channels kind of suck and goroutines are not really a lot better than threads in other languages. The actual core of OTP was the supervisor tree but that's too complicated so Golang is basically just more concise Java. I don't think this is a bad thing but it's a funny consequence that to become mainstream you have to (1) announce a cool new feature that isn't in other languages (2) eventually accept the feature is actually pretty niche and your average developer won't get it (3) sand off the weird features to make another "C but slightly better/different"
- pif 1y ago[flagged]
- xyse53 1y agoI think that's harsh. IME Go excels in a business setting where the focus is on correct, performant, maintainable, business logic in larger organizations, that's easy to integrate with a bunch of other systems. You can't squeeze every last bit of low-level performance out of it but you can get ... 9x% of the way there with concurrent code that is easy to reason about.
- TylerE 1y agoWhat matters is being 100x faster than python, not 5x slower than C++ or 2x slower than Java. Performant enough that IO (or network) rather than CPU is the bottleneck (in my limited experience). Personally I just far prefer to work in a GCed langauge. Much simpler mental model.
- pif 1y ago> correct, performant, maintainable, business logic That's the requirement for 100% if professional software development.
- mcdoogal 1y agoYikes, language flamebait in 2025?
- duped 1y agoAbout 20 years ago your choice of language basically boiled down to what you were going to pick for your web server. Your choices were - Java (popular among people who went to college and learned all about OOP or places that had a lot of "enterprise" software development) - Ruby on Rails (which was the hot new thing) - Python or Perl to be the P in your LAMP stack - C++ for "performance" All of these were kitchen sink choices because they wound up needing to do everything. If you went back in time and said you were building a language that didn't do something incredibly common and got in the way of your work, no one would pick it up.
- spacechild1 1y agoNot everybody is writing web applications. In fact, all of the languages have been invented years or even decades before the internet became popular. Except maybe for Perl, they have been designed as general purpose programming languages.
- notjoemama 1y agoWow. By your other comments I know you "know things". But this...this you do not know. Rails was "hot" 20 years ago? lol, and you have completely missed IIS, .Net, and (dun dun duuuuuuuuunnnnn!!!!!) PHP. I bet you don't even know what ASP was. Also...wth with C++ or python on a web server...20 years ago? Ok maybe this is entertaining now. Since you know so much, tell me about the framework libs needed for C++ web apps 20 years ago. eats popcorn <- that...is from BBS, maybe look that up too. Are you an LLM bot or real person? You're not just kind of wrong here; you're not just a little wrong; you're "having a bad day" level of wrong. Take the afternoon off, and drink a Jamba Juice. Maybe call some family and tell them you love them.
- deleted 1y ago[deleted]
- johnnyanmac 1y agoIt was interesting towards the latter half of the article where the author talks about how much of the correctness may be culturally enforced: >More amorphous, but not less important is Rust's strong cultural affinity for correctness. For example, go to YouTube and click on some Rust conference channel. You'll see that a large fraction of the talks are on correctness, in some way or another. That's not something I see in Julia or Python conference talks. And it creates an interesting chicken and egg approach. The borrow checker may indeed be too strict (and of course, has its edge cases and outright bugs), but its existence (rather than the utility it brings) may have in fact attracted and amassed an audience who cares about correctness above all else. Even if we abolished the borrow checker tomorrow, this audience may still maintain a certain style based on such principles, party because the other utilities of Rust were built around it. It's very intriguing. But like anything else trying to attract people, you need something new and flashy to get people in the door. Even for people who traditionally try to reject obvious sales pitches.
- eviks 1y ago> but I'm not going to switch because I can technically do all that stuff in C++" That's exactly what people say about Rust: just get good, use some tools, and be careful - and you can achieve the same memory safety.
- hinkley 1y agoJava, especially after generics were introduced, was a pain to use because of the type system. That’s not my opinion, I always found that claim a bit overwrought but it’s true that it was fairly widespread. Dealing with the type system got progressively a bit easier as the language evolved and certain types could be inferred. From the release notes I’ve seen I’ve gotten the impression that similar things have happened with the borrow checker. But people who have gone through the gauntlet have trouble reframing that experience and it’s always difficult to tell if the reputation is still accurate or not. I am curious what the second language with a borrow checker will look like.