| |
| ▲ | babaceca 4 days ago | parent | next [-] | | The vast majority of C programmers will agree that they don't care for any of the new features, as is clearly evident by the fact that almost nobody elects to use the latest standards. The "most popular programming languages" are irrelevant here. C and C++ are standardized languages, and also the tools we use for code that actually matters. A standard that can't be implemented is worthless, and even the "3 high quality" implementations of C/C++ haven't fully implemented the latest 2 editions of either language. There's a lot more riding on these two languages than you give credit for, and they should be held to a higher standard. C is not the language to experiment with shiny new features, it's the language that works. > I can tel you that as a matter of fact a key reason why the likes of Rust took off So what's the problem? If Rust is gaining traction on C/C++,
and people are excited about what it brings to the table, use it. We'll both do our thing, let it play out - we'll see which approach yields better software in 10 years. | | |
| ▲ | motorest 4 days ago | parent | next [-] | | > The vast majority of C programmers will agree that they don't care for any of the new features,(...) I think this belief is based on faulty assumptions, such as survivorship bias. C++ became popular largely because it started off by extending C with the introduction of important features that the developer community wanted to use. The popularity of C++ over C attests how much developers wanted to add features to C. C++ also started being used over C in domains where it was not an excellent fit, such as embedded programming, because the C community prefered to deal with C++'s higher cognitive load as an acceptable tradeoff to leverage important features missing from C. The success of projects such as Rust and even Zig, Nim also comes at the expense of C's inability to improve the developer experience. Not to mention the fact that some projects are still developed in C because of a mix of inertia and lack of framework support. So to claim that the C programmers do not want change, first you need to ignore the vast majority that do want but already dropped C in favor of languages that weren't frozen in time. It's also unbelievable to claim that a language that precedes the concept of developer experience represents the apex of language design. This belief lands somewhere between Stockholm syndrome and being mentally constrained to not look beyond a tool. | | |
| ▲ | WalterBright 4 days ago | parent | next [-] | | C++ became popular because in the late 80s, 90% of programming was done on the PC. Zortech C++, with the first native compiler, provided the most powerful metal programming language available. Zortech C++ is what gave C++ critical mass to succeed. P.S. before ZTC++, the traffic in the usenet C++ newsgroup was neck-and-neck with the objective C newsgroup. After ZTC++ was released, traffic in the C++ newsgroup took off and the objective C one faded away. Borland saw our success, and pivoted away from their nascent attempt at an OOP language towards implementing Borland C++. Microsoft then also abandoned their OOP C project (called C) in favor of developing C++. (I've never been able to get any information about C, I was just told about it by a Redmondian.) | |
| ▲ | babaceca 4 days ago | parent | prev [-] | | > So to claim that the C programmers do not want change, first you need to ignore the vast majority that do want but already dropped C... Good, we can ignore them. It's not a language for everybody, and if you're happily using C++, or Zig, or Nim, keep doing that. Developer experience is a weigted sum of many variables. For you cool syntax features may play a huge role of that, for most C programmers a simple language with clear and understandable semantics is much more important. There are many languages with cool syntax and shiny features, and very few of the latter kind. C belongs to the latter, and it also happens to be running a vast majority of the world's most important software. You keep bringing up Rust as an example. It's probably the most famous of the new-age systems languages. If it's such a great language, when will we see a useful program written in it? | | |
| ▲ | motorest 3 days ago | parent | next [-] | | > Good, we can ignore them. Who do you think you're representing? At best you only speak for yourself. It's perfectly fine if you choose to never update any tool you use, but that's just your personal opinion. You are free to stick with older standard versions of even compiler releases, but that is no justification to prevent everyone around you to improve their developer experience. > It's not a language for everybody (...) You might believe it isn't, but that's hardly a sane or rational belief. | | |
| ▲ | babaceca 3 days ago | parent [-] | | Reality isn't on your side. 1. A lot of people use the old C standards.
2. Not a lot of people use the new ones.
3. A lot of useful software is written in C.
4. Not a lot of useful software is written in any of the other languages you've listed in this conversation, despite the fact that you can hardly call them "new" at this point.
I'm done with you, I'll leave you to puzzle out the obvious conclusion of these 4 points.You write software your way, I'll write it mine, and in 10 years we can check our homework. The first 10 years of Rust haven't really given us any results software-wise, but I'm sure with language design powerhouses such as yourself on the case, and just a few more pieces of syntax sugar, you can turn it around. |
| |
| ▲ | aw1621107 3 days ago | parent | prev [-] | | > If it's such a great language, when will we see a useful program written in it? I think it should have been simple enough to find examples, though I suppose there might be some dependence on what you mean by "useful". For standalone stuff, some examples might be Ripgrep, ruff, uv, Alacritty, and Polars. Rust is also used internally by some major companies, such as Amazon, Dropbox, Mozilla, Microsoft, Google, Volvo, Discord, and CloudFlare. | | |
| ▲ | babaceca 3 days ago | parent [-] | | > there might be some dependence on what you mean by "useful". I should've been clearer about that, but what I mean by that is pretty much what a normal non-technical person would consider an useful piece of software - Photoshop, Figma, Excel, Chrome, Windows, Android, Blender, AutoCAD, Unreal Engine, any Office Suite... Since this is a technical forum I think we'd both easily agree on a bunch of very technically impressive software that the average person hasn't heard of - ffmpeg, qemu, LLVM, Linux, Postgres, V8, etc. It would be a stretch to put any of the tool on either of those lists. Given the popularity of Rust, and that it's now over 10 years old, I'd expect at least one major program that can serve as an example of "here's this very useful, complex software package, as proof that our methodology works and you can do cool things this way." | | |
| ▲ | aw1621107 3 days ago | parent | next [-] | | > but what I mean by that is pretty much what a normal non-technical person would consider an useful piece of software That seems like an... interesting... definition of "useful" to me. Why that definition? > Photoshop, Figma, Excel, Chrome, Windows, Android, Blender, AutoCAD, Unreal Engine, any Office Suite... To be fair, there is Rust in Windows and Android, and IIRC there's movement towards using it in Chrome as well. > It would be a stretch to put any of the tool on either of those lists. OK, but your second list has a different set of qualifications than the first. You originally just asked for "useful" programs, and that's what you asked for in the original comment I responded to. Now it's "very technically impressive". So which do you want? I feel like it's probably not a bad idea to ask exactly what you mean by "technically impressive" as well, since I think it's hard to argue that ripgrep and polars don't at least have technically impressive parts in them. > Given the popularity of Rust, and that it's now over 10 years old, I'd expect at least one major program that can serve as an example of "here's this very useful, complex software package, as proof that our methodology works and you can do cool things this way." That seems like a bit of a questionable metric to me. Given that Rust was explicitly designed and intended to be incrementally adoptable in existing codebases, it doesn't make sense to me to solely look for standalone programs since incremental adoption is very much part of "our methodology". This also sort of ties into your expectation in the first place - I'm not sure I'd expect the same given Rust's design and niche, as well as the general software landscape now vs. when C/C++ were a similar age. | |
| ▲ | burntsushi 3 days ago | parent | prev [-] | | Classic example of moving the goalposts. You'll keep doing it no matter what examples people give you. |
|
|
|
| |
| ▲ | aw1621107 3 days ago | parent | prev [-] | | > The vast majority of C programmers will agree that they don't care for any of the new features, as is clearly evident by the fact that almost nobody elects to use the latest standards. I think there might be some mix between "we don't want any of the new features" and "we want the new features but can't". Probably hard to get good data on the precise split. > A standard that can't be implemented is worthless, and even the "3 high quality" implementations of C/C++ haven't fully implemented the latest 2 editions of either language. This is a bit black-and-white. Just because a standard isn't fully implemented doesn't mean the parts that are implemented can't be useful, especially if the "haven't implemented this yet" is more due to a lack of manpower/attention/desire/etc. than actual impossibility (e.g., libc++ and parallel algorithms/<charconv> vs. export template). |
| |
| ▲ | npoc 4 days ago | parent | prev [-] | | I agree. A lot of new additions to C++ make coding with it simpler, not more complex.
However it does mean there's more to learn, because the old style of the language still exists and is still accepted by the modern compilers as opposed to say, Rust which removes replaced language features when it releases a new edition. | | |
| ▲ | pjmlp 4 days ago | parent [-] | | Language, not libraries. Editions are rather limited in what they support. Try to design a crate that stays compatible across editions, while using libraries that have changed signatures across editions. The crate itself keeps its own edition fixed. |
|
|