Nobody is using the C language, only C++ !
I am not talking about using a particular programming language anyway. Just think about the design and the architecture, how do we do the Chrome or Safari browsers, for example? Those browsers run everywhere, on every modern platforms, supporting so many video, audio extensions, web 3, blockchain, everything that you can think of.
In fact, I don’t care how Roon is built, but if you pay for a Lamborghini, you don’t want to end up driving a Skoda.
You may very well think that, but it wouldn’t be true. .NET is pretty sweet, as a technology. Byte-code interpreted platforms have been in computing from the very start, and .NET is close to being the culmination of the genre. Sure, if you’re working against the metal, you’d want to be using Rust, but no sane project manager would continue to use C++ in this day and age – it’s just too large and flexible a language without enough safeguards, so hard to use properly, so your competent programmers are both hard to find and costly. Or you could produce buggy code, which seems to be what a lot of companies choose to do. Rust and Julia (a kind of remake of Python which actually runs fast) are where you want to be if you’re not doing Java or .NET.
Hard to find competent software project managers, as well.
Without C/C++, you cannot build the linux kernel, MacOS, the networking stack, TCP/IP, Unicast, Multicast, the Google search engine, metaverse, Web 3.0, crypto exchanges, blockchain, car auto-driving, real-time 3-D sensoring, monitoring, NYSE/NASDAQ, CME where hundred billions of transactions are processed daily, where a latency of nanoseconds can cost billions of USD.
OK, so for Roon, the complexity is low, no critical distributed systems involved, crashes/bugs don’t cost a huge bill, the .NET is fine. But it is still buggy even after it has been out commercially for a number of years, that makes me think something is not quite right about the base platform/framework.
Most if not all Windows kernel drivers are written in C. You can use C++, but because of the precautions you need to take to control how memory is allocated, you basically end up writing C code, so it’s better to just stick with C and avoid pitfalls.
Yes, true. In the old days, I used to write code in assembler, and C for the system V stream drivers. But I have not had a chance to write “pure” C code for any practical projects for the last 25 years.
C is not C++. Don’t confuse the two. And C++, used correctly, can be handy. It’s just that it’s almost impossible to find skilled C++ programmers, because the language is so broad (and dangerous, for all the good reasons). So you’d be crazy to start a new project on C++. But all that stuff you name, it’s legacy software. And, you know, what @Marian said.
C and C++ are traditionally used by performance-critical OS components. Transitioning to Rust would be a huge undertaking, so I’m sure it won’t happen any time soon. C++ standards are constantly evolving, and as more features are added to STL (some transitioning over from boost), it becomes more powerful and somewhat easier to use. Unfortunately, interest for C/C++ among college grads is waning, and C/C++ experts are becoming a rare breed.
In the SF Bay Area (aka Silicon Valley), a good C/C++ developer can earn 500K to 800 K yearly salary + bonus + stock options. AFIK, the FANG firms are primarily interested in high-powered developers. Some undergoing 10 or 20 technically challenging C/C++ interviews, some of which involve writing/testing code on the blackboard on the fly.
I was afraid you would say that. C++ was an abomination when I last used to program it, but it was early days and the libraries were terrible. Happy to accept that has dramatically improved in 2022.
I think these days more modern languages like Go and Rust are taking over the world for modern development as they are memory and thread safe and very fast.
This is the big drawback of low level languages. Just look at all the drive through attacks in Chrome and Safari and they are usually Use after Free errors because of the ease of programming errors in these languages.
Let’s be honest Roon is not going to be redeveloped in anything else so hopefully the runtimes will be good enough that I can look seriously at at M2 Mac for my next Roon Core.
Early to late 90s and way to many bugs in the core libraries in those days, and much software turned out not to be portable to different compilers, or would compile in just randomly crash.
I worked in the Oil industry developing multi platform software for Sun Solaris/Sun OS/IBM RS6000/HP UX and that was a major issue for us as we built a client server database that worked across platform.
Also there were not many third party libraries beyond the standard template library in those days. Software would often work on one platform and crash on another and it was all due to compiler issues. Where now there are probably huge libraries providing all sorts of additional features.