Could you explain how it's emotional? It comes across as a pretty logical analogy to me - the author isn't suggesting that they don't like C (which would be categorically emotional), they are comparing it to phasing out something unsafe in another industry.
Everyone would be better served by using and hearing it less. Focus on the actual argument.
Your reply doesn't point out the passionate component of it either, and doesn't answer my question.
In this particular case, the argument is that C should be replaced with something safer for similar reasons that asbestos is replaced with something safer. However, one can certainly challenge the validity of this comparison and whether there's something faulty in it.
I don't feel one way or the other because I don't work with C or other low-level languages, but it's a bit absurd to say that an analogy isn't an argument. It absolutely can be if the argument within is clear, even if fallacious.
More often than not I see analogies (ab)used as a tool to construct a straw man. This particular case demonstrates how analogy takes discussion away from merits and downsides of C to an emotionally charged subject of cancerogenic substances, as other commenters highlighted in this thread.
It seemed like just a simple, general, easily-mappable analogy that most people would get, even non-programmer laymen, that emphasizes that unsafe should be replaced with safe. Any analogy of something unsafe can be seen as "emotionally charged" if someone was personally impacted by it.
I’ve not personally been impacted by this, but this seems reasonable.
> The analogy is resting primarily on the appeal to that kind of emotion
This seems like projection. It struck me as a perfectly legitimate analogy without any emotional correlation.
EDIT: Because someone will probably make a note of it: Therac-25 wasn't written in C, but the flaws in that system and others helped lead to a massive change in the way critical systems are developed and treated. I referenced it because it's one of the most notable failures in safety-critical software systems.
What this entire thread is about, however, is this highly charged response to what seemed like a straightforward analogy.
> Frankly getting your knickers in a knot is emotional - the people using C are doing so for pragmatic reasons, not emotion. > I do see comments like yours a lot - there's an emotional attachment and/or ego attached to the comment, so the argument against is very vociferous and, honestly, ugly[1].
A failed experiment with the Socratic method on my part.
1 A culture that thinks API's need to always have a gotcha. See the inability to to field a safe string copy.
2 ISO commitee that thinks it's in charge of maintaining a historical artifact. Suggestions to change the language like Brights suggestions about passing arrays fail because the ISO committee thinks that's Heresy.
3 People that think C is hopeless. Usually these are people that had a bad time with it in school.
4 Idiots that think the only reason to use C is speed. Therefor any improved way of doing things that might be 10-20% slower than raw unsafe code is pointless.
Just for sake of clarity, formal analogy is a valid, non-fallacious argument because it's based on parity of reasoning.
The original comment made a pretty good, arguably formal analogy between asbestos and C. The only way to dismiss the conclusion is if there were no alternative to asbestos, then you're kinda forced to use asbestos. This is the case for C in some contexts, like some microcontrollers that only come with C compilers. It's not generally true that we need C for much else though.
"An analogical argument is an explicit representation of a form of analogical reasoning that cites accepted similarities between two systems to support the conclusion that some further similarity exists." [1]
Yes, you're missing the logic.
> Excluding the assumption that C is unsafe, it contains purely facts.
You think C is carcinogenic and mere exposure to it kills?
From a "purely facts" PoV, leaving all emotion aside, C runs, and has done so for a number of decades, life-critical systems, including munitions, weapons, life-support, industrial machinery and aviation.
It's only because you are married to your argument that you think comparing C to a fatal poison is "pure facts".
I don’t think there was any suggestion made that C is detrimental to human health.
> It's also logical to kill young children with autism so they don't become a financial or emotional burden on their family or society as a whole. It turns out claiming something is logical isn't, itself, enough of a reason to do something and those doing so should endeavor to give more convincing arguments.
That's an analogy, and we are talking about a programming language - not humans.
Again, where is the passion in the original comment? I have asked for nothing more than that.
Is it your supposition that asbestos was banned for non-human reasons?
Or does this "logic" only work when convenient for your own defenses?
You call it a logical analogy, how an analogy can be logical?
EDIT: and I hate analogies because, since they suck, someone will try to come up with a better analogy. And now we have a thread where people compare C to asbestos, then they compare C to a fire in kitchen. Not a kind of thread I would like to be in.
Vast quantities of language is built on analogy. Streaming, the internet, the World Wide Web, Starship. The word “cycle” comes from the Latin for “circle”. The list goes on.
I struggle to even comprehend how someone can hold this opinion. Have you ever tried instructing anyone in anything?
These are metaphors, not analogies. [1]
The GP is cautioning against argument by analogy, not the use of metaphorical language. Problems and conceptual traps engendered by argument from analogy have been raised for thousands of years, indeed probably ever since formal discussion of language and reasoning have been recorded.
And I’m firmly in the camp that it is fine to use analogy in debate. Rarely do people claim when they make a comparison that it is a one to one mapping. Just that there are possible insights to be gleaned from the comparison which could potentially mean that we may be able to solve problems in one domain using similar solutions to the existing domain.
Take this quote for example:
> I hate all analogies with physical world, because the person tends to pick up the most emotional one. It's emotional because they picked the thing that makes my lungs bleed. C, with all its flaws, doesn't damage my physical health.
Obviously interpretation is subjective but this seems a huge misinterpretation of what OP was saying. To me, OP is clearly arguing that C code is damaging to the long term health of computer programs the same way asbestos exposure is damaging to long term human health and that we should consider replacing or retiring C code with modern alternatives like Rust the same way asbestos has been replaced with modern building materials. Saying that you don’t like the argument because bad C programs are nowhere near as damaging to physical health as asbestos seems like a bad faith interpretation of what OP was trying to say. I also think the criticiser may feel differently if he was hooked up to a life support machine that was known to have buggy c code but that’s by the by.
Hacker News seems to have gone really hellbent on this pedantic ‘this is fallacy x’, this is fallacy y’ stuff recently as if every comment is some kind of formal scientific paper. It’s really weird and I’m sure it never used to be like this. It’s sucks the joy and fun out of everything, I don’t know why people can’t just express interesting viewpoints here anymore like a normal conversation without the fallacy police showing up,
At least it's not a "comparing Linux kernel to a car" situation I've also seen.
- 1: sometimes we have to learn simplified but faulty models in order to understand the more complex and more accurate models
- 2: Everyone sees the world in different ways. It is often through combining these different viewpoints (or analogies) that we arrive at something closer to the objective truth. This is eloquently illustrated in the [Blind men and an elephant parable](https://en.m.wikipedia.org/wiki/Blind_men_and_an_elephant). The moral of the parable isn’t that we should throw away all analogy because it can be misinterpreted. The moral is, as Wikipedia puts it:
> The parable has been used to illustrate a range of truths and fallacies; broadly, the parable implies that one's subjective experience can be true, but that such experience is inherently limited by its failure to account for other truths or a totality of truth. At various times the parable has provided insight into the relativism, opaqueness or inexpressible nature of truth, the behaviour of experts in fields of contradicting theories, the need for deeper understanding, and respect for different perspectives on the same object of observation.
1. "Don't rewrite code" a fundamental precept of software that has been "engineered"
- This is more about development lifecycles than something that contributes usefully to software quality in the long term. Corporations, and people haven't been treating these things like bridges or overpasses
2. Outsourcing is believed cheaper than the solution. - Again, paying low-wage junior SEs to patch uncovered bugs is obviously cheaper than proactively finding them all.
3. You can sell the New Coke too! - If you have a good rewrite, sell it at a fat markup, and keep selling the old crap too, it's not your risk.
- Obviously don't rewrite unless your horrid monolithic source leaks, and you're certain that it's a problem, those disgruntled workers you wrongfully laid off know too much.
4. If your tech references are a security risk, sell those too! - Don't include pesky manuals where people can uncover issues with your development processes, outsource a minimum blackbox of guess work to Singapore and let that double as QA.
- It's not a manual, it's 'training' -- supporting education of hopeful workers! Wow!
I won't name any names.I think a lot of us using C would like to move away, but for whatever reason can’t. One example is that we hotpatch our binaries, but that sort of infrastructure doesn’t exist for Rust.
Beyond tooling issues, that certainly can be fixed, it’s also non trivial to move a large codebase to a safer language. Maybe incremental use of languages like Rust is still better?
Frankly getting your knickers in a knot is emotional - the people using C are doing so for pragmatic reasons, not emotion.
I do see comments like yours a lot - there's an emotional attachment and/or ego attached to the comment, so the argument against is very vociferous and, honestly, ugly[1].
[1] C and asbestos have almost nothing in common in terms of negative impact on the world. Maybe people are still using C because hyperbole is simply not a persuasive argument.