Jul 20 update: question has been unlocked per discussion in chat and reworded as follows:

Looking for a definitive answer from a primary or secondary source for why did (notably) Java and C# decide to have a static method as their entry point – rather than representing an application instance by an instance of an Application class, with the entry point being an appropriate constructor?

  • Feedback on revised wording would be much appreciated.

I asked a question about the historical perspective of a feature in C# and Java.

It was closed as “not constructive”. Needless to say, I disagree. But more importantly, I don’t understand the reasons. I fail to see what distinguishes this question from, say, “Why does F# have an interactive mode but not C#?”

In fact, I was hoping for the same kind of answer. The latter question had the enormous luck of having Eric Lippert answer it authoritatively – but the same kind of answer would fit my own question perfectly.

So what’s the criterion here? Was I just unlucky / the other question lucky? Or is there a distinction that I fail to see? Or could I improve the way the question is asked? I’d be more than happy to.

  • 6
    Playing devil's advocate: Part of the problem is that most of the answer is in your question. You start of by showing the discussions that have happened before, essentially invalidating all of them, and take the position that, because those other viewpoints are wrong, that there must be some more plausible (to you) underlying explanation, rather than the one that satisfies Occam's Razor. In a way, you are the one begging the question. But a confined discussion is still a discussion. Jul 10, 2012 at 22:06
  • @Robert Yes to the first part – but see my comment on Chris’ answer below for the reasons for that. I’m not convinced by those answers because they rely on plain factual errors (but that doesn’t necessarily make them the wrong answers). So far, Voo’s answer convinces me the most. But either way, what I was always interested in is not speculation but a referenced answer. Jul 10, 2012 at 22:15
  • 1
    @Robert By the way, I understand how the question could be understood as argumentative. I originally feared that if I didn’t shoot down these “arguments”, the question would be immediately closed as a duplicate of the referenced one, which wouldn’t help me. In the meantime, Robert Harvey reminded me that I can just offer a bounty on the existing question (which I did), but by that time the question had been migrated. Jul 10, 2012 at 22:18

3 Answers 3


It had a couple of close votes and a flag - hence my final close vote. However, if it hadn't attracted the flag I wouldn't have closed.

You can (and should) vote to reopen and perhaps look again at the language you used in the question. It could be that the voters and flaggers were under the impression that you were after a discussion rather than something concrete. Unfortunately because of the migration and subsequent close the question is locked.

In that case I'll reopen it, but if it attracts new close votes and/or flags it's likely to get closed again.

  • Sounds reasonable. I had hoped that the bolded sentence would make it clear that I wasn’t after a discussion. Unfortunately, this subject seems inherently fickle, as evidenced from the many (by my assessment) pseudo-answers. It’s hard to provide some rationale for the question without coming over as argumentative, since the background entails addressing those existing arguments. Jul 10, 2012 at 22:09
  • 4
    @KonradRudolph Getting a lot of pseudo-answers (assuming your assessment is valid), is a strong hint of a poorly defined and / or quite open ended (thus: not constructive) question. I'd say yours is borderline and could go either way. Lets wait and see how it turns out.
    – yannis
    Jul 10, 2012 at 22:19
  • @Yannis True. I had somewhat hoped for an answer from one of the people originally involved (maybe from Eric? though his would probably be “because we copied Java”). Jul 10, 2012 at 22:21

update question has been edited and reopened and proposed "draft" has been posted as an answer there:

Prior answer revision is removed since it no longer applies, it is available in answer history:

  • Revision 8

    If the question would be reopened, I'd probably write an answer like below.


    In Java, the reason of public static void main(String[] args) is that

    1. Gosling wanted
    2. the code written by someone experienced in C (not in Java)
    3. to be executed by someone used to running PostScript on NeWS

    ...How The JVM Spec Came To Be...

  • 1
    Haha, this answer is awesome. Not only does it have Jon Lord, it actually comes damn close to what I would have hoped to get. Jul 19, 2012 at 6:54
  • 2
    I'd gladly vote this up if it were an answer on the actual question ... Jul 19, 2012 at 11:21
  • @KonradRudolph thanks. what would be your take on question edit suggested in the chat? mods say for this case, Q needs edit to reopen (turns out there was a closeopenwar triggered by its current wording)
    – gnat
    Jul 19, 2012 at 13:19
  • 1
    @gnat Good luck with that. I don’t object to the edit. But I think people primarily object to my a priori rejection of certain answers (which I understand, but I did that because those are just ridiculously wrong, and I wanted to avoid what’s happened to a similar class on Stack Overflow, where every second answer made the same, stupid argument). If the question were opened, I’d gladly accept your answer. Jul 19, 2012 at 19:09
  • @JoachimSauer there you go, answer has been "ported" from here to actual question: programmers.stackexchange.com/a/157606/31260
    – gnat
    Jul 20, 2012 at 16:17

Reworded slightly better but still not a good Q & A format question

@KonradRudolph this is reworded slightly better, and slightly more on topic on programmers, but still comes off as your ranty opinion on why ( in your opinion ) why others made mistakes in these implementations you asking for justifications for other peoples design choices and decisions that can't be answered definitively. If they could it would be very easily Googled, which you would of already found the answer quickly, therefore all this is going to generate, even on programmers is speculation and supposition ( this is what all the answers currently are ) and no true answer.

Comments to the contrary of the claimed intent in the question:

In a comment to this answer:

"As I said, I’m not convinced by that at all. Objects do get instantiated before, and code gets executed before. It’d need a quote from one of the original developers to convince me that this was the reason."

this comment from an answer below kind of proves you aren't going to get the answer you want unless you contact the original designers in question, anyone else is going to be speculating; this is still not constructive and off topic even with the attempt at re-wording it.

And other comments are just more discussion arguments on why the OP doesn't buy the answer/argument. Matter of fact, all the comments are just arguments support or "debunking" complaints even on the deleted question. I would vote to close again if I could.

"@Yannis True. I had somewhat hoped for an answer from one of the people originally involved (maybe from Eric? though his would probably be “because we copied Java”)."

Then mail the people that did what they did, why do you think polling here will provide the answer you are looking for?

The following quote from the re-worded answer are just unqualified opinion:

"... the following answers don’t satisfy me, as I deem them incorrect: ..."

Here is the only viable answer I could come up with, I avoided putting it the actual question so as not to contribute to the noise there, but meta is about noise right :-)

The Dude
(source: qkme.me)

  • 2
    You are implying that I think the design is a mistake. I don’t, I just find it puzzling. But I don’t think it has any disadvantages. As for rejecting my comment about the incorrect answer as an “unqualified opinion”, sorry, I fear we will find no common ground here. I simply don’t agree that this is an opinion, the answer is objectively wrong, since it cites technical reasons which are demonstrably false. Jul 11, 2012 at 6:50
  • 4
    Furthermore, I’m not “polling” people. But this is a q’n’a platform, right? So why not ask questions here that have a pretty high chance of being seen by the relevant people, or by people who happen to possess a secondary source? This works well for similar questions with authoritative answers. As for mailing people, I do not appreciate unsolicited mails with questions, unless absolutely necessary. I imagined other people felt the same. Jul 11, 2012 at 6:55
  • look at your own words that I quoted "... I deem them incorrect ... " that is opinion, and you don't qualify it with any reasoning or citation at all. The Dude says it straight, it is your opinion. A polling question is "Hey everyone on stackoveflow/programmers, what do you think about this?" that is how this question reads to begin with, and the re-wording, however valiant an attempt to correct that, is just a paraphrasing and still in that vein of questioning. The FAQ is pretty specific about the narrow subjective part of this sites charter. Where SO is a no subjective charter.
    – user7519
    Jul 11, 2012 at 7:06
  • 3
    Blame politeness (well …). What I meant is: “They’re incorrect.” Not an opinion, a statement of facts. I did cite reasons, despite what you said (for instance, I showed code which created objects before main was executed). With the polling thingy, you are just putting words in my mouth. I did not say, nor imply, “hey, what do you think about that?” I am not interested in opinions, I agree that this would be non-constructive. Jul 11, 2012 at 9:25

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .