5 ms·
Are there many new projects being started these days in C, or even C++? I would expect most of that to have moved over to Java or Golang, with most C-family cod
by johan_larson 8y ago
Are there many new projects being started these days in C, or even C++? I would expect most of that to have moved over to Java or Golang, with most C-family coding being on extensions of older projects.
- dmitrygr 8y agoYes, anything that needs to be fast on low-end hardware. Java and Golang do not exist there.
- Jyaif 8y agoIf there are new languages being developed, their compiler/interpreter are likely being developed in C/C++, possibly Rust. Also, any new database, OS, or AAA game is going to be written in one of those language.
- nineteen999 8y agoNot aware of any AAA game titles being developed in Rust, but I'd gladly have my eyes opened.
- Kaveren 8y agoThere are none. Standard Rust is great for game development, the infrastructure just isn't there right now, but I think if you were to write a new game engine or operating system from scratch, Rust would be the first candidate language to do so in.
- nineteen999 8y agoThe game engine segment is much like the operating system segment - the size, momentum/inertia of the incumbents (ie. UE4, Unity as an analog to Linux, Windows etc) make it rather difficult for new entrants, especially for ones written in languages that are not as popular as C or C++ (eg. Rust). It's simply too hard right now to find enough programmers proficient in Rust who could assemble a competing product, IMHO.
- davrosthedalek 8y agoHonest question: for these performance critical things, how good are compilers for Rust, Go etc. compared to modern C/C++ compilers? One reason that Fortran is still so heavily used in HPC is the quality of the compilers.
- steveklabnik 8y agoThe Rust compiler uses LLVM, and so fares roughly as well as clang.
- nineteen999 8y agoNot that I am really qualified to comment on these things, since I don't program in Rust, Go or FORTRAN, but AFAIK the one thing that is often claimed to prevent languages reaching C/C++ performance levels is garbage collection, which Rust doesn't have (but Go does). As we all know benchmarks need to be taken with a handful of salt since the publisher often has a vested interest in pushing one point of view or another for monetary or whatever reasons. My personal view is that until we see a AAA game engine or mainstream operating system that is able to run a comparable suite of software to Windows/Linux written in Rust or Go, we won't really know if these languages (or implementations thereof) are going to be suitable for these things.
- steveklabnik 8y agoI'm excited to see what happens with Embark Studios; EA SEED started using Rust for stuff, and Embark is a new studio founded by some ex-DICE/SEED folks that's doing everything in Rust. There's also Ready at Dawn and Chucklefish...
- nineteen999 8y agoChucklefish 2D games or what have you are a far cry (no pun intended) away from a high performance 3D engine like Unreal though. And from what I can find on EA SEED they are mostly using it for server side and pipeline stuff, rather than the primary rendering engines for their 3D games. I'd love to stand corrected if this isn't the case. Don't get me wrong, I'm optimistic, and I'd like to see it happen. Although I was a C/C++ holdout at first, I'm starting to come around to the Rust way of thinking, even if I don't like a lot of the terminology and the "RIIR" crowd are completely annoying.
- alfalfasprout 8y agoTons. Heck, I'm working on one now. Nothing really matches the performance or wealth of libraries as C/C++. Rust comes close but even then for something like a linear algebra library the ability to use CPU intrinsics, etc. makes a huge difference.
- steveklabnik 8y agoIf by "CPU intrinsics" you mean SIMD, Rust has that.
- edanm 8y agoOf course! Many, many algorithmic intensive applications are written in C/CPP. Low-level applications are as well. As just one example, most algorithmic Python libraries are actually implemented in C/CPP. Not to mention any memory-intensive or real-time software, e.g. embedded systems - most of those are running on C/CPP, and plenty of new embedded systems are created every day.
- dman 8y agoThere are entire product categories (Games / Databases / Operating Systems / Video editors / Animation / Data analysis tools / robotics) where C/C++ continue to be the dominant languages.
- johan_larson 8y agoThanks for the info, but I'm not sure databases belongs in that list. I work on a database system (Couchbase), and our codebase is pretty mixed. The oldest part of the system, the Key-Value storage engine, is C++, but the newer parts are a mix of Erlang, Golang, and Java. Anyone know what some of the newer systems, like Spark and Snowflake are written in?
- _bohm 8y agoSpark is mostly written in Scala.
- twblalock 8y agoEmbedded software, firmware, low-level OS components like drivers and kernels, game engines, key-value stores, databases, and the compilers/interpreters for a lot of other languages.
- Jach 8y agoI think ANSI C is rare for a new project, but C++ is still common, though I don't know which C++ is dominant. Lots of embedded systems compilers will have borked mostly-C++98 support, there's probably some C++ 98 purists holding out, and then there's the latest C++xx standards that probably don't have full compiler support everywhere too -- plus you always get folks who conflate "C/C++" as if they were one, when they're not, though people sure do like to try and program C++ as merely "C with Classes". Java stole a lot of C++ people over the last 20 years, Go seems to be stealing mostly from the speed-challenged dynamic language crowd who didn't do much interactive development anyway.
- jonahrd 8y agoFirmware! People seem to forget that firmware exists --everywhere--, even at very high-tech firms. For example, think about Tesla, there are probably millions of lines of C in the firmware repository
- embedder 8y agoThe entire embedded systems industry revolves around C and C++. This includes the automotive industry, aeronautics, robotics, medical devices, space, much of IoT, appliances, countless defense projects, infrastructure, etc. And even in a traditional computing environment, many projects requiring high performance and portability are still being written in C or C++, such as games and high-fidelity modeling/simulation.
- shaklee3 8y agoYes. They're two of the most popular programming languages, and that didn't happen by supporting only old code. I started a new c++ project last week since I still prefer it to go.