more communities

OK, maybe you’re thinking that’s a ridiculous question. Perhaps it is. But various forms of this question get asked all the time. Consider this now-ancient Stack Overflow question titled Python v. Perl:

Okay, so I’m finally making the jump into scripting languages and I have decided to focus on either Python or Perl. The problem is: I don’t know which to cut my teeth on.

Most of my programming experience is in C, Java, and C++. There’s no specific task I would be learning Python/Perl for, other that possibly applying it to my dev work to make life easier in general.

What do you think? Which do you use? Is one more industry relevant than another?

Just substitute Gorilla with Perl and Shark with Python and I think you can see where this is going. (To be fair, this question is more of a historical curiosity than anything else; it was asked way way way back in the dark ages of late 2008, when we were still figuring out this Q&A thing. It has been deleted now. It’s visible to 10k rep users, or you can view the Google cache of it.)

This question, or anything like it, would be instantly closed as “not constructive” if it was asked on Stack Overflow today.

not constructive

This question is not a good fit to our Q&A format. We expect answers to generally involve facts, references, or specific expertise; this question will likely solicit opinion, debate, arguments, polling, or extended discussion.

Do you own a gorilla? Do you own a shark? When was the last time you even saw a gorilla and shark going at it hand to fin? In other words, what is your skin in this particular game? What specific problem, other than idle curiosity, would answering this question satisfy or solve for you … or anyone else?

It’s not nearly specific enough.

Where will the fight be, in what location? Underwater, or on land? What are the rules of the fight so we can determine a victor? Will it be to the death, or under some type of points system? Can they be trained specifically to fight by trainers, or are they completely on their own? Without any kind of scope, every answer can make any assumptions they like — and there will assuredly be hundreds, all different.

It is difficult to learn from these questions.

Let’s say, hypothetically speaking, we had animaltrainers.stackexchange.com, a site full of people who have hands-on experience with both gorillas and sharks. And they were, hypothetically speaking, willing to answer such a question to the best of their expert knowledge. In the process, you might learn a few interesting things about both animals, such as that an adult gorilla’s upper body strength is six times more powerful than that of an adult human. Or that shark skin is so tough and hard that before the invention of sandpaper, shark skin was used to polish wood. But this sort of learning is largely accidental at best, like a random walk through an encyclopedia. It might be entertaining as a speculative diversion to compare and contrast these two very different animals in broad terms. But even under ideal circumstances there really can be no absolute answer to this question other than “it depends; both animals are adapted to their particular environment and have certain strengths and weaknesses.” This is a good answer, maybe even the correct answer, but it’s just not that useful.

It drives away experts.

What serious, expert animal trainer would give Gorilla vs. Shark the time of day? This kind of question attracts the opposite of experts: people who aren’t serious animal trainers, but are willing to engage in idle speculation and discussiony generalities — rather than focusing on the real world, specific, honest-to-goodness questions they face in their day to day work. Any true expert who came to animaltrainers.stackexchange.com would be appalled to see a question like Gorilla vs. Shark appear on the homepage.

This is a bit of a strawman because nobody is going to defend asking the Gorilla vs. Shark question on the Stack Exchange network any more than someone would, oh, I don’t know, take a pro-racism stance. It is obviously and clearly not constructive to ask such questions. But there are … subtleties. Let’s examine a better, less abstract question with the same problems.

Google+ versus Facebook?

This is marginally more credible, akin to asking Gorilla vs. Human. Including two natural competitors means the question no longer smacks of the daydream absurdity of Gorilla vs. Shark. But it still utterly fails to set any scope or terms, and is thus virtually impossible to reasonably answer. Not Constructive.

What is it about the UX of Facebook that made it more successful than Google+?

Slightly better. Now we have two natural competitors, and we have an arena to fight in — but it’s an arena the size of Mexico City. UX is an incredibly broad topic. Is it the form factor? The price? The industrial design? The touch UI? Could be anything. Impossible to answer with anything other than opinions and guesses. Not Constructive.

What’s the single aspect of the UX most responsible for Facebook’s success versus Google+?

All we’ve done here is prevent the answers from becoming multi-point essays, and limited them to either crank axe-grinding (I hate that…) or passionate, candid love letters (I love that…). This is not an improvement; it’s a regression. Not Constructive.

Are Google+ Circles better UX for sharing among friends than Facebook Groups?

Hey, now we’re actually getting somewhere! We’ve scoped to a particular feature under the umbrella of UX.

It’s not perfect, but it is a potentially salvageable question. The asker must contribute a bit more work beyond the title, too. We expect questions to do some basic research before even asking. Did you spend time with both features on both sites? Did you compare and contrast them yourself? What are others saying? Share your research! And most critically, give us context. Explain why you’re looking at this, and what you mean by “better” — clicks to share, discoverability, design, and so forth. Put yourself in the shoes of the people you hope will answer. Have you given them enough guidance and specifics so they know how to reasonably answer your question in, say, 15 minutes?

Perhaps this is a red herring. I honestly feel a lot of the “this v. that” questions would be better expressed as examinations of the underlying concepts without all the mock conflict. But if you must compare and contrast two things in a Stack Exchange question — and don’t want your question to get instantly closed as Not Constructive — try to keep Gorilla vs. Shark in mind.

Yeah, commonly questions “Gorilla vs Shark” suck, but taking the rule “everything with ‘\S+ vs \S+’ in title should be closed” is very wrong, but very usual mistake.
There are questions of “What is better tool to solve this task: Gorilla or Shark”, which can be objectively answered by giving cons and pros about both tools, so question could choose. It’s very normal question as I think. But people are to afraid of them and close them. It’s not right!

“Google+ versus Facebook” does have a good short answer, “Google+ has circles, circles are important because…, Facebook has lots of users, this is important because”. In a years’ time I don’t think there will be a good answer.

This is where I think stack overflow has it all wrong. This is a question that I would love to answer in a constructive way with facts and experience.

Asking which one to start with is a perfectly valid question and has nothing to do with sharks and gorillas. I use both and they both have their strengths. I also use Powershell and gasp vbscript. I even use (shocker) plain old NT batch. I’ve been known to dabble in Groovy as needed. If I was a new person in need of scripting I know I would like to hear from people that have solved problems with the different scripting languages. Yes, it has been necessary for me to use all of the above.

I’ve been programming for over 31 years and to hear that “nobody needs to know the answer to the question” shows me a serious lack of understanding of what the question is and the needs of people in the industry.

“Language comparisons are rarely meaningful and even less often fair. A good comparison of major programming languages requires more effort than most people are willing to spend, experience in a wide range of application areas, a rigid maintenance of a detached and impartial point of view, and a sense of fairness” – Bjarne Stroustrup

I think it would be better to ask two separate questions: “is Python a good language to learn programming?” and “is Perl…”. This way, only Python experts would answer to the first one and only Perl experts would answer to the second one.

I disagree with Bruce – the SE network *needs* to be harsh with regard to these kinds of questions. The Perl v. Python style of question appears far too often on Programmers.SE, and it’s part of the reason I can’t stand reading that site anymore. The tone of the questions sound like someone who is desperately trying to avoid failboating their career by picking the “wrong” language to learn, as if there were such a thing. A sufficiently motivated programmer (the kind we’re trying to attract here) will be able to answer that question for himself far better than anyone else could. Attempting to answer that question for someone else basically amounts to a waste of your time.

@Michael, It really isn’t Perl v. Python. It is really what problems do you need to solve and which language lends itself to those problems. Listening to people that use these languages and the problems that they are solving will help new users understand what fits in their scenario. I personally use Perl to process text files, especially multiple text files, quickly and Python for XML.

People will have different opinions as to which one is better for doing one task over the other, but listening to them helps a person to decide which one they would prefer. Even after 31 years I continue to learn from reading how others use these languages. I can filter out the “my language is better then yours” people. It’s easy to to that. To not have the question because these kinds of people exist doesn’t make sense. Answering them rather then trying to word smith or eliminate the question is more productive.

To disallow these because you don’t need it is wrong. You say you can’t read the site anymore is ridiculous, you don’t need to read the questions and answers that don’t apply to you. That doesn’t mean others don’t want to read them.

I have always helped people when they ask me questions. I try to learn what their needs are and give my best answer. I try to steer them to where to get more information. I always try to guide them on on how to research the answers to their questions. I have stepped in many a time when someone is turned away from someone like you. I do not believe your attitude is helpful to people starting out. I pretty much stopped participating on Stack Overflow after attempting to answer questions that were deleted before I could post my answer.

Each time I’m faced with such a dilemma, I find that hundreds of essays have already been written on the subject, at which point it is the height of laziness to ask a group of experts to fight it out one more time.

Is a Shark’s bite worse than a Gorilla’s punch? I don’t see how this is any better at its core; it almost seems as if any question could be valid so long as you can form an objective null and alternative hypothesis to the solution. Isn’t this really the heart of Shark vs. Gorilla, though?

Occasionally I’m forced to choose between Shark and Gorilla for some specific task. In general without context, neither is the correct solution. If I’m attacking a naval base by sea, though, I choose Shark every time.

Perhaps the real question here (not for UX or stackoverflow) could be “I’m attempting to create a web presence for my business. Should I bother with Google+” or “I’m writing a social web game. How important is facebook integration/the ability to play as a facebook application”.

Shark and Gorilla are probably acceptable answers to any given question, but alone they form no question at all.

I just read the cached question and answers. It’s not the question that’s bad, it’s the answers. I’ll admit that it’s an inherently difficult question to answer well, but that doesn’t make it a bad question. Language comparisons are an excellent way to learn about different languages.

The problem to be solved is how does one go about deciding the next thing to learn.

Possible well written answers could have been:

1) A list of the best Perl vs. Python articles found on the web.
2) A sample algorithm written in both languages to compare syntax differences
3) A list of community sites for both languages as a jumping point for diving into either language
4) An overview of major features of both languages

Most answers were from people who just championed one language over another. If those answers bubble to the top, the voting system is broken, not the question.

So instead of speculating on the results of the fight, just link to other people doing the speculation? How is that BETTER?!

> 2) A sample algorithm written in both languages to compare syntax differences

…which doesn’t really answer the question, forces one or both samples to write to the lowest common denominator, and / or depends on someone knowing both languages’ idioms well. At best, this is CodeGolf: http://codegolf.stackexchange.com/

> 3) A list of community sites for both languages as a jumping point for diving into either language

> Back to a list of links, but now they don’t even attempt to answer the question.

> 4) An overview of major features of both languages

Or you could just bring up the Wikipedia pages for both and skip the “vs.” charade.

So the options for answering are, answer badly or answer with non-answers. This is a bad question…

@Shog9, People answering badly does not make a good question bad. It seems the problem is that you are viewing it as a fight. One thing that I have learned over the years is that any idiot can show how something is bad or wrong. It takes no skill to do that. The question asked really isn’t a versus question. It is more like where do I start and which one do I start with. It is really a discussion question and a discussion question with merit. On one hand there are a lot of loud chest pounding people that can pollute the discussion, but on the other hand the question can also be discussed and answered in a productive way. It’s those productive answers from experienced people that I want to read and I can easily ignore the people that just want to pound their chest.

You are completely ignoring the value of trusted people providing experienced answers over anonymous google results of unknown relevance.

Eh, Bruce – long time no see! You should really check out the Programmers.SE site again – they’re *trying* to make this whole “experience-based advice” thing work in a Q&A format, and most of what’s lacking is… experience.

You’re dead right that these are not “versus questions”, at least not when answered well. Jeff pretty much made this point in the post here – the best answers you can hope for will ignore the “vs” bit and just give you some good info from experts in one side or the other… But that’s just more reason to skip the “X vs Y” charade entirely, and ask a question on X and then Y… or better yet, ask a question on the task you’re trying to accomplish, and let X & Y experts jump in with their own takes on it without pitting their specialties against each other directly.

So given the choice between a question that *begs* for chest-pounding over substance, and one that asks for assistance with a real problem… Why should we do anything to encourage the former?

perl vs python is a perfectly valid question. people ask questions for self-advancement. time & effort are precious. this person is trying to learn something new and doesn’t want to waste time in a technology that may not have a future. that is the fundamental reason behind such questions.

this question (just like so many other things in life) does not have a definitive answer. even the so-called experts cannot answer such questions. and that is the reason this question is being booted out, not constructive.

it is unfortunate that you want to make stackexchange a place meant only for definitive answers (like 2+2 = 4) and shun constructive discussions. this question is indeed valid, he has to find a different forum to ask the question.

I definitely agree with Bruce. FYI I have discovered SO website when I needed to ask the question ‘What is the best framework to choose for a website from scratch’?
Of course I had done some research before and wrote the results inside the question itself. However answers helped me a LOT and I made my final choice based on these answers. Today my question would have been closed for sure and it would be a big lost (for the Internet itself)

Not remotely surprised at the cranky responses. People just *love* their polls, any time, any place. Anybody can participate, no purchase necessary, and as long as you pick one of the most popular options, it’s OK if you fail because now it’s the internet’s fault.

Discounting the numerous straw-man arguments presented in the comments, it all boils down to this: “X vs Y” is what people “ask” when they want to feel included but don’t actually have anything to say. It’s not a question, it’s a conversation-starter; an ice-breaker at a party for nerds. I’ve been guilty of it too; a lot of us have. It’s okay; just move on, don’t make excuses, and just wait until you have a specific question before you try to ask one.

For a lot of the more prolific contributors, one of the things that drew us to Stack Overflow in the first place was the fact that its Q&A format offered an alternative to the morass of rants and platitudes consistently offered on other, less-modern discussion forums. Just because you have something on your mind, doesn’t mean you’re entitled to an audience, particularly if you couldn’t be bothered to develop your question or answer beyond idle chit-chat.

It’s especially ironic that those arguing in favour of “vs” questions under the auspices of choosing the “best tool for the job” are conveniently ignoring the possibility that a Q&A site might not be the best tool for facilitating these discussions.

@Aarobot I’m not “ignoring the possibility that a Q&A site might not be the best tool for facilitating these discussions.” Just because we disagree on the answer doesn’t mean I haven’t considered the question!

So, let’s see what features you’d want in a site that WOULD host these discussions:

1) The ability of users to vote for on answers;

2) The ability to readily see the historical participation of the answerer, so that you can factor their profile into your interpretation of their answer;

We could continue to list more, but I think this is sufficient to make the point. So now let’s consider: Who has built a site like that? Well, StackExchange comes to mind – I can’t say I’ve ever seen any others, but I certainly welcome suggestions!

When someone asks X vs Y (Python vs Perl etc) they are asking for advice rather than a specific question. I think it is fair for SE to say this is not the place to ask this type question even though it may be a good question. The problem with advice is that it is very subjective and everybody has their own opinion. So the thread turns into a lengthy discussion and many of the “answers” are links to further information or requests for clarification. You also get people saying I use X or Y and I love/hate it. The advice given is also only as good as the other factors taken into consideration. In the choice of language this would be: What will you be using it to do? What sort of job do you have or are you looking to get? What sort of salary do you want? etc etc. We could extend this to someone saying should I become a Doctor or a Lawyer. No doubt people would argue for both but does that make one wrong or right? If someone becomes a Lawyer on the basis of this advice and regrets it does that make the advice wrong? Does that mean no-one should ever ask that question or ask existing Lawyers and Doctors what their job is like? Obviously not and so these questions will always be asked. It would be foolish for someone to invest 6 months learning a programming language only to find out it is no use to them. A little bit of advice from those who know the language would be advantageous. There is nothing wrong with discussion but SE is not the place for it. I don’t know where it is but I like the tough stance of SE at the moment. The Q&A format of SE is excellent and would probably do a good job of it but it would pollute the quality Q&As that are there. Perhaps programmers.stackexchange.com could be more tolerant of this type of question?

PS What about Shark vs Star Destroyer. I would like to see that in return for all the recurring “Jaws” nightmares I had as a child.

Sorry, but I think this is all really nonsense. If questions are too generic, ok, then you could argue that they are of bad quality. That’s ok.

But what about Java vs. Perl? Java’s compiler complains when you forget to catch exceptions at compile time! Perl does not care at all – NEVER!. Look at the Net::FTP module — it dies when there are network issues. THIS IS NOT DOCUMENTED AT ALL! And Perl doesn’t warn you! So you switch it live, and you get bad data because the programming language JUST DOES NOT CARE FOR PROPER CHECKS!

So you are basically supposing that we don’t warn people from using languages that just don’t care for things real developers have had issues with for years? Great. Really great achievement.

Scripting languages vs. real languages is not a fundamental question. It is a question of real-life experience, good practices and good quality.

The Google cache link has expired, but I happen to have over 10k rep on Stack Overflow so could take a look.

Since I’ve only dabbled in either language, I found the answers to this question extremely valuable and interesting. Actually, much more interesting than 99% of other Q&As on the site, and this is reflected in the huge number of upvotes that the question and answers received. I don’t understand what’s to be gained by censoring such questions. If you discover your shop’s selling something immensely populuar with your regular customers, moreso than your regular wares, it’s crazy to ban it. (I believe this is known in Silicon Valley terms as “pivoting”.)

There might be naive and ridiculous questions that you don’t want on your site, which is fair enough, but unfortunately these days there are far too many little Hitlers casting their close-votes on anything remotely open-ended or requiring (*shock!*) judgement and experience, rather than lines of code as an answer. Even when it’s a great question asked by a respected long-time contributor, like this: http://stackoverflow.com/questions/10368942/is-there-a-way-to-group-languages-by-their-approach-to-compatibility, where people cared enough to vote for it to be re-opened, it was immediately closed again.

It should be *much easier* to keep interesting questions open. Like, 1 upvote should cancel out 3 close votes. If 1 person in 3 finds a question interesting, that’s still way better than most questions which technically fit the rules but are otherwise cretinous and a waste of everyone’s time (but stay open). Close badly written, naive, poorly-researched questions, but lay off the interesting ones!

One other issue with “Gorilla vs. Shark” questions that didn’t make the dot points is that quite often such questions end up masking the fundamental reality that, actually, perhaps an anaconda (for lack of a better cliche creature of terror) could beat them both.

That is, by asking which of two options is best, it may be masking that fact that neither is a good fit and there’s something even better.