9 ms·
I often wonder why some languages succeed while others falter. Why did Rust break through, for example, while so many other excellent languages didn't. I guess
by rich_sasha 1y ago
I often wonder why some languages succeed while others falter. Why did Rust break through, for example, while so many other excellent languages didn't.
I guess a lot of languages are kind of fungible. If you want a fast, cross platform, GC-based OOP language, the truth is, there are many choices. I'm not saying they are the same, but for 80% of the use cases they kind of are, and there are always good reasons to use established languages rather than new ones.
The ones that make it offer something very unique, not merely better than peers. So Rust, as a memory-safer non-GC language has a clear use case with little or no competition.
Nim doesn't have this luxury. I wish it well, I like the language and often contemplated learning it properly. But I fear the odds are against it.
- rishav_sharan 1y ago> Why did Rust break through, for example, while so many other excellent languages didn't. Unfortunately, a lot of this is just enterprise sponsorship. Rust had Mozilla's backing. React had FB's backing, while Vue doesn't. And so on. There are of course, many other reasons as well, but to me this seems to be a critical one.
- hardwaresofton 1y agoI really feel for new languages that have to compete with Rust. It’s probably easier than it’s ever been to create a high quality new language but to get as good as Rust has become just takes so much time and collective effort that it can be out of reach for most ecosystems/groups of builders. Getting the language features just right (and including novel stuff) is just the beginning. Remember when Rust and Go were comparable? Feels like forever ago when they both just looked like “new systems programming languages” a we know how that turned out. For example Zig is probably the most impressive new language, and it’s got a ton of awesome stuff but the chance that I’m going to adopt it over a language with often comparable performance that is ALSO much safer? Rounds to zero. Maybe some day I’ll have the brain cells and skill to write code in zig and be confident I’m Not introducing a whole class of gnarly bugs, but it seems like I should just focus my limited brain power on writing high quality Rust code.
- GoblinSlayer 1y ago>but it seems like I should just focus my limited brain power on writing high quality Rust code. You're running out of brain for rust?
- pjmlp 1y agoOnly thing impressive about Zig is the comptime abilities, all the rest is basically Modula-2 (1978) safety in C syntax. Pity that it has taken all these years for folks to finally embrace Modula-2/Object Pascal safety as the bare minimum in systems languages.
- ngrilly 1y agoI so much agree with this. When I started using Zig, memories from writing Pascal started coming back, and I realized I was fine writing Pascal with manual memory management, unlike C and C++ where segfaults were a more frequent problem.
- pjmlp 1y agoI was lucky to have gone through a few BASICs (including compiled ones), Z80 and 68000 Assembly, and Turbo Pascal (3.0 - 6.0), before getting to learn C with Turbo C 2.0, although I had already a few books on C, which made be aware that C wasn't the be all end all, that a few decades later many that learned C after C89 kind of propagated as urban myth. Not only I was aware that there were other ways to do systems programming, I was educated that there were safer ways to achieve the same goals. My trasition to C++ came thanks to Borland having the TP/C++ symbiosis, which later became Delphi/C++.
- ngrilly 1y agoIf I remember well, the biggest difference between Pascal and C was that Pascal, unlike C, offered spatial memory safety (thanks to strings and arrays being represented as "fat" pointers including the length), but none of them offered temporal memory safety (heap-use-after-free and stack-use-after-return)?
- rubymamis 1y agoMojo is similar to Rust in that case, isn't it?
- SkiFire13 1y agoMy understanding is that Mojo has yet to prove itself in this space. They made a lot of claims but at the time few of them were implemented.
- 3eb7988a1663 1y agoThey also backed down from the initial claim of full Python compatibility. Which was the entire appeal of the venture. If you cannot seamlessly drop into the Python ecosystem, it is just another scripting language with better architecture to enable faster code.
- ivell 1y agoMojo is not a scripting language in the usual sense. It is a system programming language more akin to Rust. Their aim is to have better ergonomics than Rust.
- nylonstrung 1y agoNobody wants a closed source systems language In practice, Mojo feels like it pivoted to being a pythonic scripting language for CUDA
- xigoi 1y ago> I often wonder why some languages succeed while others falter. $$$money$$$
- hk__2 1y ago> $$$money$$$ Rust (backed by a foundation) won over Go (backed by Google). Oh, and remember Dart (backed by Google)?
- OoooooooO 1y agoRust can do everything Go does but Go can't do the same as Rust can.
- xigoi 1y agoIn what sense did Rust “win over” Go? And since Google loves to kill its side projects fast, no wonder Dart failed.
- brabel 1y agoDart is really successful. Just look at the latest release that just came out. It’s a really great language and now runs about as fast as Go while looking as good as Kotlin.
- hk__2 1y agoSorry, I guess I’m biaised but I see a lot of Rust-based projects on HN and not many in Go, and in the latest StackOverflow survey Rust is way ahead of Go as "admired language" and a language that people want to work with.
- bobajeff 1y agoI vaguely remember a talk given by the creator of ELM called "The Economics of Programming Languages". It's actually really expensive to make a good programming language that's widely used. Forget about syntax or semantics or unique features or whatever. Having money and resources are the most important factor for a successful language.
- zahlman 1y agoWhere does the money get spent? Just developer salaries and marketing?
- colejohnson66 1y agoYes. Writing a language in your free time means juggling work on the side. Or you can be at Google and get paid to write Go for your job, and get free marketing from it. Even Rust had the backing of Mozilla. Until your "pet" language reaches critical mass that you can sustain yourself and quit your day job, you're fighting the giants.
- steveklabnik 1y agoSalaries, hosting bills, CI bills… most languages do not have a significant marketing budget.
- 3eb7988a1663 1y agoThe volume of work required to get a language going practically requires full-time headcount. Language design/compiler, community website, documentation, CI, libraries (json, datetime, regex, database connectors, web server, etc), treesitter IDE plugins. A lot of different required hats. Sure, you can scrape by with a rag tag group of volunteers, but to ever get to mass adoption requires a lot of work and dedicated resourcing. Zig has been in development for how long now, and that is with the designer now working on it full time.
- Imustaskforhelp 1y agoOh boy, I always had this knack for seeing/testing multiple langauges and when I had first discovered nim, I used to watch some nim youtube related content and I remember someone in nim community pointed out about this same video from the creator of elm that you also mention. So, I think that I had watched the video and honestly, I will watch it now once again since I don't remember it clearly but If I remember, I really liked it. A quick search points me to the video, though I am not sure https://www.youtube.com/watch?v=XZ3w_jec1v8 https://www.youtube.com/watch?v=XZ3w_jec1v8
- elcritch 1y agoThe notion that we need to all program in the top 10 popular programming languages seems dead with the advent of LLMs. I program a lot in Nim including professionally and strongly prefer it over Rust or even Zig. Primarily because I just really enjoy programming in Nim and getting things done I wouldn’t have otherwise or be capable of doing. For example recently I needed to automate a GUI app. I tried the Python libraries but found they kinda sucked. Despite pulling in opencv they were slow at finding buttons in a screenshot. Then the one I tried also broke on hidpi displays. Instead I got Claude to write me up a Nim library to find images in a screenshot. Then had Claude add SIMD to it. It’s far faster than the python libraries, supports hidpi, and is far easier to install and use. I still use a small Python app as a server to take the screenshots but it’s a nice balance. > I guess a lot of languages are kind of fungible. If you want a fast, cross platform, GC-based OOP language, the truth is, there are many choices. It’s true, in many cases they are fungible. Though much less so for languages which compile to native code. LLMs do lower the barrier to switching. Nim isn’t really a GC’ed OOP language though it supports some bits of that. It’s really a systems language that can also run anywhere from an embedded device to a web server and as a JavaScript app. The new default memory management is based on reference counting with or without a cycle collector. So it’s great for latency sensitive settings.
- SkiFire13 1y ago> Nim isn’t really a GC’ed OOP language though it supports some bits of that. I'm not sure about the OOP part, but last time I checked the standard library assumed the GC was enabled, so on that side I believe it's much closer to those languages than to C/C++/Rust/Zig
- the__alchemist 1y agoConcur on the [special case] of rust: It's in a domain that only has a handful of competitors (For its core competencies of system performing, high-performance programming, and embedded). It has learned from , and made improvements on them.
- 127 1y agoRust tooling, ecosystem and crates are much, much more mature. Many Nim libraries are unfinished, unsupported or abandoned. The language itself is pretty great, but you have to write most of the stuff from scratch. In Nim it's very fast and ergonomic to write a MVP, but in Rust you have to think of the problem first. I guess it's a double-sided edge: Rust is much worse for explorative programming compared to Nim, but that also forces people to build proper abstractions from the start. Which seems to directly feed into the quality of produced libraries. Just a hunch, not something I've thought through.
- wiz21c 1y agoI happen to prototype in python then move on to rust when things solidify... For those who don't know rust, its compiler is pretty slow. I mean, when you want to add a feature to an existing code base, each "run" you do to test the new feature imply relinking the whole project: that's very slow (or you have to split the project in sub project, but I'm lazy). In that situation, prototyping in python makes sense (at least to me :-)
- kitd 1y ago> I often wonder why some languages succeed while others falter. IME language success has very little to do with syntax, and much more to do with stdlib, tooling, library availability, coverage on StackOverflow and all the other things that make solving problems simple.