Comment by kerkeslager

10 months ago

> But, if this is the "Cargo is the best vs all others" debate...

It isn't. It's certainly better than any C build systems, but I'm aware of a few other similar build systems (just not for C).

> ...kindly count me out. I don't care.

Only you have the power to stop posting. And if you did, it would make your claim that you don't care a lot more convincing.

> If you're using other languages or platforms, there are plenty of excellent alternatives.

True! But C isn't one of those languages.

And let's be real, that's really why you're mad. It isn't that I'm bringing up Rust that's making you mad, it's that I'm criticizing C.

C isn't perfect and it's not the best at everything. And that's fine! It's great for what it is. But what it isn't is a modern language with modern tooling. And that's a real downside to consider when choosing a language to write a project in.

That's not the only consideration, and there are a lot of reasons why I, myself, would choose C for a new project (not the least of being that I'm a lot better at C than at Rust).

> This sort of Rust proselytizing -- on an article about C of all things -- is why so many perceive the Rust community as being toxic. You might think you're helping to spread the glory of Rust, but that's not how you are coming across.

I'm not particularly concerned with how I represent the Rust community. I don't even view myself as part of the Rust community (yet). If anything, I have a lot more claim to being a member of the C community than of the Rust community, as I've written orders of magnitude more C code than Rust code.

> > But, if this is the "Cargo is the best vs all others" debate...

> It isn't.

You could've fooled me with how uncharitable you are being here by blowing comments way out of proportion.

> Only you have the power to stop posting.

Full context: "But, if this is the "Cargo is the best vs all others" debate, kindly count me out."

Using ellipses and quote mining to make your opponent look foolish is the lowest form of sophistry and against HN policy. There isn't a "debate" to "win" here. So, why go to this sort of trouble over nothing?

> > If you're using other languages or platforms, there are plenty of excellent alternatives.

> True! But C isn't one of those languages.

I fail to see what C has to do with the choice of build tools. C isn't a build tool; it's a language.

> And let's be real, that's really why you're mad.

Who is mad? Literally, I replied with a comment about build tools. You keep trying to have the debate you want here by inserting words in people's mouths. It's disingenuous.

> C isn't perfect and it's not the best at everything.

No one. NO ONE, has made any claims even remotely like that. Yet another silly strawman for the debate you desperately want to have here.

> But what it isn't is a modern language with modern tooling.

Actually, there is excellent modern tooling for C. There are proof assistants and model checkers. It's possible to do similar things in modern C as in Rust or other languages, from proving the absence of UB to proving memory safety features. But, seriously, no one is having this debate, so it's silly. We were talking about build tools...

> I'm not particularly concerned with how I represent the Rust community.

Good, because these silly "debates" -- over a build tool that has somehow mushroomed into a C vs Rust debate in only your head and no one else's -- might seem cool to you, but are counter-productive.

> as I've written orders of magnitude more C code than Rust code.

And yet, you've never done any reading about modern build tools or package systems with C support. That's a mighty shame.

By the way, did you know that you can build C/C++ projects using Cargo? Yeah. Me neither. Huh.

  • > Full context: "But, if this is the "Cargo is the best vs all others" debate, kindly count me out."

    Okay, then my response to the full context is:

    This isn't the "Cargo is the best vs all others" debate.

    If you wish to be counted out, you can stop posting at any time.

    You'll note that this is basically what I said to your post when I was "taking it out of context", with the exception that I also responded to some context you decided to leave out when you quoted yourself.

    > Using ellipses and quote mining to make your opponent look foolish is the lowest form of sophistry and against HN policy.

    I split up your comments when I quoted them to make it clearer what I was responding to.

    > I fail to see what C has to do with the choice of build tools.

    You are definitely smart enough to figure that out.

    The author of the original article seems to see the connection, given they titled their article "How to Structure C Projects" and then went on to write a bunch about a build system.

    > > C isn't perfect and it's not the best at everything.

    > No one. NO ONE, has made any claims even remotely like that.

    Sure, nobody is foolish enough to make such a claim so obviously. But if a person responds to any criticism of C with vitriol, one begins to think that person is invested in a belief that C is perfect.

    > Actually, there is excellent modern tooling for C. There are proof assistants and model checkers. It's possible to do similar things in modern C as in Rust or other languages, from proving the absence of UB to proving memory safety features.

    And I'm sure these modern tools are easy enough to use that everyone uses them, given their obvious benefits, right? Have you even used a proof assistant?

    To be clear what point I'm making: these tools are amazing, feats of engineering, but they're not really viable for most C projects. Using a proof assistant is far harder than you're giving it credit for, enough so that I very much doubt that you've one to prove things about C programs. If you have, you're much smarter than me, because I've tried, and proving anything non-trivial was beyond what I could do with reasonable effort.

    > By the way, did you know that you can build C/C++ projects using Cargo? Yeah. Me neither. Huh.

    If I go into a average Rust project, and run "cargo run", Cargo will build the project, and the resulting binary will run.

    If I go into a random C project, and run "cargo run", that won't happen.

    And in fact, there is not a tool in existence where I can go into a random C project and run that tool, and it will build the C project. "make" is about as close as you can get to that, and in most C projects that simple four letter command is glossing over a whole lot of work that went into producing the Makefile.

    I'll remind you of when you said, "I fail to see what C has to do with the choice of build tools."

    • > > I fail to see what C has to do with the choice of build tools.

      > You are definitely smart enough to figure that out.

      Clearly not, because the features you enumerate with respect to Cargo aren't unique to Rust or non-existent in C. They are simply build tool features. If you learn what these features are called, you can search for them in other tools, assuming that's not too much "effort" for you.

      > But if a person responds to any criticism of C with vitriol,

      So far, the only people in this thread replying with vitriol are you and jerf. Believe it or not, I was trying to be helpful, and somehow you keep trying to rope me into a dumb Rust debate that NO ONE CARES ABOUT.

      > Have you even used a proof assistant?

      Only daily. But, let's keep those unfounded assumptions coming...

      > To be clear what point I'm making: these tools are amazing, feats of engineering, but they're not really viable for most C projects.

      Ah, but CBMC is completely viable for any C project, and proof assistants are very much on the way toward viability for general adoption right now. I should know, because that's kind of an area of specialty for me.

      > If I go into a average Rust project, and run "cargo run", Cargo will build the project, and the resulting binary will run.

      > If I go into a random C project, and run "cargo run", that won't happen.

      Now we get to the crux of your issue. You want a zero-configuration build tool. They exist for practically every language and platform. Search for that phrase and be enlightened. But, just like cargo, you'll still need to add configuration for customization (or pass it on the command-line).

      > And in fact, there is not a tool in existence where I can go into a random C project...

      Note that this is a proper use of ellipses. See above: it's called a zero-configuration build tool. Your ignorance of their existence should not be construed as evidence of cargo's uniqueness.

      > I'll remind you of when you said, "I fail to see what C has to do with the choice of build tools."

      The reminder is rather silly, as we've just exposed that you haven't put in the "effort" to understand the tools that exist for C, despite having over a million lines of C under your belt. :-)

      4 replies →