I see a lot of judging whether this or that “is a solution”. That doesn’t make sense (yet). You can’t discuss a solution before you’ve defined a problem, and nothing close to a general agreement has been found yet.
I see general complaints of “it’s unfair”, without ever really saying what “it” is.
Is “it” unfair that people who know more programming languages than others tend to win clashes? I wouldn’t see “solving” that as a world improvement. Knowledge is power, people who know more can do better, that’s a simple fact of life. That’s all the less unfair here that this knowledge is freely available to anyone who cares.
Is “it” unfair that it’s possible to mix up languages in a single [clash] solution? It would be if others were allowed to do it and not you, but that’s not the case. The argument is open. Any purity-based claim “it’s not True™ VB.NET anymore if you allow such or such” has a just-as-valid retort of “so, what?” There’s a reason people still write database in SQL instead of their locally-promoted imperative language. There’s a reason bash scripts call other programs. There’s a reason people don’t write their own SAT solver everytime they’re faced with a constraint propagation issue. Arguing for language-purity at all costs does not seem to me like a very reasonable point of view if you want to stick with everyday-life reason.
Sometimes it’s labelled as “cheating” instead.
To cheat involves breaking rules. There are very few written rules about clashes. Those that come to mind would be multi-account. Yes, I’d call cheating playing only clashes against sockpuppets to boost your rating. That’s about it for the CG rules.
Then we could extend to (most) national rules. Yes I’d call cheating DDOSing your clash opponents so they time out and you win. Or, heck, hiring a bounty hunter or SWATting them.
What’s left is ethics. Notoriously difficult to please all here.
Some people feel they abide by a certain set of unwritten rules, so everybody should abide by those too. Guess what: those same everybody would tend to disagree.
For example, I personally want to code stuff anew everytime I clash. Well, guess what, that’s just me! So I do hate it when my opponents solve a semi-hard clash in 10s because they had kept it from a previous time and just copy-pasted. All in all, there’s nothing I could do about: there is no written rule on the subject; there is next to nothing that can be implemented against it, so I’ll just have to deal with it. (by realizing clashing is broken by design and not partaking anymore)
Until those currently-unwritten rules effectively get written down, following them is merely a personal accomplishment: it’s likely worth all the bragging rights it deserves, yet nothing warrants enforcing them for all.
With that in mind…
Assuming you mean the system(3)
function: mostly yes they could. But that solves neither the:
- what about languages who bypass libc?
- nothing prevents bypassing it anyway in libc-based languages
- why should they anyway?
Any more generally/importantly: there’s even more ways to implement system
.
What does that solve? It certainly doesn’t prevent calling anything that’s in the (now former) PATH.
How would you implement that?
It’s nefariously tricky to get this right with such pinpoint accuracy to a single process.
I’d tend to think Java is the only one in that case. The others have embraced Unix more organically. Any counterexample? C# perhaps?
TL;DR: the current system is fair. Some may dislike some or all aspects of it. It can (obviously) be changed, but be aware any vision of The perfect system is very unlikely to be shared by all.