This regulatory change is not new, it has been going on for years and will take more years to finish. And even without a regulatory pressure, the migration would happen eventually. Look at the cars. As they get more features like adaptive cruise control and various driver assistance features, the need for software that runs with no lag and is reacting to surroundings correctly and quickly becomes absolutely critical. Car companies now can go out of business simply because their software is buggy. The car vendors now produce more software than ever, and they are in dire need for better programming tools than ever.
Languages like Java, Scala, C#, Go, etc. cover many scenarios like cloud services and, for example, car entertainment system. But for devices, microcontrollers, real-time low latency systems etc. C and C++ have been the go-to languages for decades, and now it is starting to change, because turns out it is very, very hard to write correct, bug-free, safe, and secure software in these languages.
Rust is one language that is getting into this market: Rust Foundation established a Safety-Critical Rust Consortium last year, for example, and Ferrocene compiler has a bunch of certifications done already. Ada is another option that would work for many such use-cases, too. The selling point of Ada is that it's been around for a long time and many vendors already have established compilers and tools with all appropriate certifications and qualifications done for all sorts of industries.
So, it's not really "Ada is interesting" and more "Languages that can replace C and C++ are interesting".
https://web.archive.org/web/20250118013136/https://www.white...
The page was moved to: https://bidenwhitehouse.archives.gov/oncd/briefing-room/2024...
C and C++ are too difficult, Rust is also hard. I think my best bet is Zig at this point.
These assumptions just aren't made with rust.
The language has a lot of corners though -- not so much messy edge cases like C++ but just emergent complexity from its sophisticated grammar and type system.
As with all such languages: you do not have to make use of all language features everywhere, and in fact you should not.
For example, although one can use pointers in D with abandon, it's better to use slices, where array bounds overflows cannot happen. Array bounds overflows are the #1 cause of security bugs in shipped C/C++ software.
> C and C++ are too difficult
I want to like D, it definitely came up in my research but I just don't see the ecosystem as vibrant enough to lead to where I want it to .
Either building cool things, or better employment opportunities.
It is encouraging to see a language so loved folks are proselytizing for it.
My vote is for Haxe! But that's also a very high level language.
I haven't experienced a memory corruption problem with it in maybe a decade, and I write D code every day. That's a big change from my days writing C and C++.
I also haven’t had as much fun learning another language in a long time. Keep with it! It’s worth it.
I know you said C seems too hard - I felt the same way some 30 years ago. Then I learned Pascal, and found learning Ada to be a bit of a breeze after that. After that, coming back to C was a different experience - very natural. You don't have to force anything, and you can learn whatever you want whenever you want (or not at all).
Sometimes your capabilities can quickly level up in unpredictable and exciting ways - which I find to be one of the most fun parts of programming. And it tends to unfold like a horizon - you learn low-level stuff, then you get interested in high-reliability software, or real-time systems, or highly parallel / functional systems, etc. This is all great, and no one brain is big enough to hold it all - so have fun!
At least that's how things clicked for me when I came from Java and I already had to debug lots of concurrent code before.
Similarly, if one has fought with a garbage collector and thought about efficient memory representations, where things get allocated and deallocated that transfers to some extent.
If you have been living blissfully in effectively-single-thread-land, then yeah, there'll be a bunch of new concepts to digest.
I couldn't really grass programming until I found JavaScript. Even now my criteria for learning a language is one of two things .
One, do I want to build something and this language would be the best tool .
Or, two, is this language going to make me a ton of money.
I really want to find a good use case for Rust that isn't superseded by what I can do in the languages I already know. I might take some time to make a game in Rust one day...
I don't think any language per se is ever going to make you a ton of money. Even COBOL is not enough to make a ton of money. What might make you a ton of money at some point is being highly skilled at developing in some broad area where that particular language happens to be used.
> I couldn't really grass programming until I found JavaScript.
This is a bit surprising to me, because JavaScript is not at all an easy language to work with. You might want to look into TypeScript as a way to make quicker progress in that same domain, with Rust as more of a side-project to help you grok lower-level programming in general.
> I might take some time to make a game in Rust one day...
Game development in Rust tends to be especially challenging, since the main competition is C++ - another low-level language. Take a look at this example of a very simple Breakout game in Bevy, one of the most well-known game engines (though still very much at a highly experimental stage!) https://github.com/bevyengine/bevy/blob/latest/examples/game... - this might help you realize the level of effort that's typically involved.
JavaScript just clicked. A lot of more complicated things you need to understand for c and c++ are just handled for you.
To be fair I was technically using Unity Script, which has everything in a nice game engine sandbox. Want to move a cube, takes 1 line of code.
I am working with Typescript on my latest project. It definitely helps when dealing with more complex projects. My current project is basically a website built in React.
I still like Unity, but I don't trust the company so I'm looking for a new engine.
Then the obvious choice is arguably Godot, which supports a similar "script-based" model.
Maybe I'll see if they fix C# web exports.
Which always gets forgotten in fearless concurrency discourse.
This makes it sound like the field is dominated by proprietary/closed-source tooling. That is a huge red flag for the health of the language if true.
So this tooling is already certified and it fills the "compiler + various verification tools" space. Otherwise you'd have to certify your tool chain yourself every time it changes.
Say you are building an aircraft. The whole software stack is part of the aircraft certification, all the way down to the compiler. A complete aircraft is a system composed of other systems which themselves are composed of other systems. Eventually, there's a software system. Systems are certified independently and for a complete configuration.
Of course, requirements get stricter as the criticality of the component increases. Not every component has such strict requirements as discussed above. But a lot of them do.
This probably does mean there will be room in the market for a commercially-supported qualified and certified Rust toolchain.
AdaCore also sells one: https://www.adacore.com/gnatpro-rust
I think some of it also comes from the number of new programming languages that have come out over the last few years. It's common for people to point at Ada as a reference for how to address problems that come up in C-like languages since Ada already solved so many problems in the 80's.
They probably have another good reason to advocate too - 90% of anti-rust sentiment is "Gross, people like using it so much they tell others that they like it".
More like "Gross, people like using it so much they imply (or just outright say) other languages are inferior."
edit: apparently I'm "posting too fast", so I'll reply in an edit. What you (sophocles) said is effectively equivalent to "other languages are inferior", although I appreciate how you twisted the words up like that. Computers can be used effectively in a wide variety of languages. Do some languages age poorly? Sure. But not all of them.
Next time a rustacean starts jumping up and down, show them Raphael Finkel's book Advanced Programming Language Design so that they can understand there is nothing new under the sun.
But I absolutely take umbrage at the idea that "build a modern production OS" is the bar to clear for any new language to prove themselves because modern OSes are rare regardless of language of implementation. How many "professional grade OSes" have even been released in the last 10 years?
That's my point in a nutshell. It's a cool language. But there's a growing number of converts for whom this is their first introduction to these concepts, and they don't seem to have the intellectual curiosity to dive deeper.
I also see this behavior with Typescript and "powerful type systems"
Edit: Maybe these types of low quality comments exist on social networks, but... Isn't that just the norm for social networks? You can say the same about cooking advice on social media, or "life hacks" content, etc
Rustaceans would do well to read something like Raphael Finkel's book Advanced Programming Language Design where a whole bunch of languages and their unique features are shown/compared.