User talk:ZeeXy

Welcome!

Hello, ZeeXy, and welcome to Wikipedia! Thank you for your contributions. I hope you like the place and decide to stay. Here are some pages that you might find helpful: I hope you enjoy editing here and being a Wikipedian! Please sign your messages on discussion pages using four tildes ( ~ ); this will automatically insert your username and the date. If you need help, check out Questions, ask me on my talk page, or ask your question on this page and then place  before the question. Again, welcome! ####
 * The five pillars of Wikipedia
 * Tutorial
 * How to edit a page and How to develop articles
 * How to create your first article (using the Article Wizard if you wish)
 * Manual of Style

JohnCD (talk) 14:16, 9 September 2010 (UTC)

Eight queens puzzle solutions
I am sorry you found the bureaucracy confusing - the only consolation is that there are usually people who will help you navigate it.

The discussion here is about what sort of content is suitable for an encyclopedia, and the general view, with which I can't say I disagree, is that the discussion of the algorithm in the article Eight queens puzzle is sufficient, and that we do not need examples of actual code - the article provides links to many examples. The (rather long) list of What Wikipedia is not by which we try to keep it an encyclopedia includes Wikipedia is not a manual, guidebook, textbook, or scientific journal. This article seemed to be passing the line from a summary of existing published material, which is an encyclopedia's job, to being an original essay demonstrating different algorithms and languages. Other relevant Wikipedia policies are WP:Verifiability, including "any material challenged or likely to be challenged must be attributed to a reliable, published source" - concern was expressed that no source was cited for most of the examples - and WP:No original research.

As regards the speed of deletion, there was a discussion at the Village Pump from 3 to 7 August involving seven users, the article was nominated on 11 August, three of the users from the earlier discussion and four new ones took part, and the debate closed on 18 August. Deletion debates sometimes run longer if there is disagreement, but the sheer volume of work (new articles created at rather more than one a minute, 70 - 100 new deletion debates started each day) means that a reasonably expeditious system is needed.

Since the article has been deleted after a deletion discussion, your next step is to approach the administrator who closed the discussion,. When you do that, remember that his role was not to take sides, but to act as an impartial referee deciding whether the discussion showed a consensus to delete. (One possible decision is "No consensus", when the default is to keep). If he does not agree to restore the article, your remaining step is WP:Deletion review. The instructions for how to do that are at the top of the page, but I will be happy to help you with the process if you ask.

I have removed the long passage you inserted into the Village Pump discussion - there is no point adding it there after the discussion has been archived - and put it into a user sub-page for you at User:ZeeXy/Eight queens puzzle solutions. Rather than posting it again, you can refer to it from any message you write by putting  (two square brackets each side) which will provide a "wikilink".

You can reply below here, if you wish - I will watch this page. Regards, JohnCD (talk) 17:47, 10 September 2010 (UTC)


 * I saw that your article had been delete. I have little to add to the excellent summary by above except to say that writing articles for an encyclopaedia can be difficult. I have not seen your attempt, though I have read through the Eight queens puzzle article. I can guess that your article may have had few reliable sources with inline references; a common difficulty for the inexpereinced editor. I would have to check but at least one reliable source, Donald Knuth, exists for the eight-queens problem. If your goal is to write an algorithm summary using reliable sources, you have two steps to follow next:
 * as stated above, contact and ask specifically if you can have your article moved to user space (this is called Userfy) where you and I can work on it without too much fear of it being deleted again
 * after you have done that, ask me specifically (or above as he offered first :) and I will glady assist you further. To ask, simply post a message at the bottom of JohnCD or my talk page
 * My RL background is computing but even then, please note that I cannot guarantee that we can create an encyclopaedic article on this subject, but we can sure give it a go. Good luck --Senra (Talk) 20:24, 10 September 2010 (UTC)

It's not my page folks :-) I can bet you haven't read more than 10% of what I wrote. I'm not a disgruntled author, I'm a passer by, pissed off and insulted by seeing how you treated the very notion of a source code - like it was porn or some political trash. Yes I would like to be able to see the page you deleted so that I at leas have a fair chance to see what was so terrible about it, but I don't have the time to be a regular here - I stumble upon your Wiki when I'm searching for something, so telling me "go through N steps" is equal to telling me to bug off. God knows when will I have the time to even open this page the next time. I was just waitig for some code to compile and looking for a hint of a crazy SQL issue this time. Last time I was looking at something related to graph coloring.

Once you actually read what I wrote you'll see that I'm protesting the whole insulting and 30 yr outdated "policy" about source code and the only way to change that is to have some reasonably high level discussion. Even most of basic notions you are trying to transplant from other fields into the treatment of the source code as a representation of algorithms is wrong. For example, for well known algorithms which have been coded and recoded umpteen times the whole notion of authorship and attribution doesn't exist. It may exist in some special cases (very unique way of doing it copy&pasted verbatim from a well known book). If and when someone sees such special case he will comment and complain. Also if someone sees that a code posted is actually wrong, he will complain as well. You have a lot of articles with infinitely more disputable stuff then several lines of code and you don't go deleting them. So yes, you won't be able to follow let alone check correctness of most of the code someone posts. You can't verify correctness of most algorithms which get posted in a way designed to make very few people able to understand either but you don't delete them.

I think if was for 8 Sudoku that someone posted the most ridiculous way to solve it as "algorithm" and filled the page with a ton of math, mapping it to a big as a universe problem and even using imprecise math. Usual mathematical tactics used for proofs but completely useless and misleading for actually solving something. I can bet that you won’t be able to digest even one paragraph of that, therefore you have no way of verifying correctness at all, and it doesn't have any attribution (a lot of people did the same kind of thing before) and it's standing there, safe and sound. If someone posted a code to actually show how to solve you would delete it stating all these reasons that you didn't apply to the text, just because the text looks "aw so mathematical that surely it must be righ and valuable".

Mind you I'm not claiming that it's correct or not, I'm just saying that you are applying draconian double standard do a different, and for many (most) of today's programmers much more understandable expression of the solution which at least has a fair chance of being verified or disputed by a another passer by with some extra time. Not to mention that seeing some actual code is immediately useful to a large number of people while a page mapping Sudoku to Exact Cover is at best a passing amusement to a few current CS student and at worst completely misleading barrier to understanding.

I guess I wrote too much again so there you have a good excuse not to read it and not to do anything about the real issue.

P.S. I just opened that "Algorithmic of Sudoku" again and I'm still not sure what he means by "a collection of subsets" - there's no "a collection" in set theory - there's either the set of all subsets (the power set) or a subset defined by some membership rules. So "a collection of subsets" can mean anything, including say 7 subset which barely cover half of the elements and therefore no choice among them (subset of collection :-)) can ever cover the original set. See how easily things can go wrong?

Now for the backtracking solution in Ruby, althoguh hardly anyone can follow it, chances are much higher that it at least works (some reader probably tried by now). The one in Prolog you could delete if you had a reasonable policy stating that only one or two major languages are acceptable unless it't the only code posted and that a very old and fringe language is not acceptable and that a language that declarative rather than imperative is not acceptable - both because they don't explain the solution, they just restate the problem.

Possible reasonable policy

Without starting a WW III, you can easily declare all C-like languages to be acceptable "major languages" and enumerate C/C++/Java/C# with the rule that shorter and more simple code wins and the code without heavy dependence on libraries wins and the code that doesn't depend on arcane aspect of a major language wins (like someone dumping C++ templates just to do a qucksort). Heavy library dependence would have to be relaxed for very complex problems on a case by case basis (like you need some classes that represent sets if the problem is all about sets). Some well known and rather basic algo's will need 2 "majors" for the code - things which are heavily dependent on pointers and a pointer solution is substantially different or clarifying (example: one can never understand how a list or a tree really work without seeing actual pointers - no math and text can replace that "aha" moment).

For algorithms that are very hard to code without some kind of functional language, and all of them are minor fringes, the best you can so it settle on one that at lest has a decent non-academic acceptance and can be semi-followed even if you don't know it (Haskell). F# is probaly going to take it's place but it's going to be years and the latest incarnations of C++ and C# have anonymous functions and lambda expressions which allows you to give such solutions a precedence -- all this applies only when, and while there is no code in a major language.

For algorithms which are well known and instructive of simply intriguing and have gained a status of popular things to do in many languages (like that unfortunate 8 Queens) you will need the second/dual/attached page just for the code since in these cases the major aspect of preserving and spreading the knowledge (the sole reason for encyclopedias) is exactly in showing the solution almost in as many languages as reasonably possible, as long as they are not hopelessly outdated. To the point that for a good set of basic algorithms you need both one major code example on the main page and diversity collection on attached page. For example, some algorithms that are very easy for C can be very hard to do in a functional language or very hard to do in one of scripting languages, so "code diversity policy" is basically that it has to be either one of very popular educational algorithms of that there has to be something exceptionally hard about doing it in some minor but current languages. Doesn't have to be any more precise than that - when such things happen you can infer them miles away, and of course whoever puts some code in will be obliged to say a few sentences in defense of it's specialty.

Another very important thing - that code can't be just deleted on a short notice. Whoever writes it will hardly ever have the time to ever drop by on a regular basis. This is another aspect that's very, very different from almost all other content you have. So the default action, only for the code that is very much not fitting by the policy I sketched above, needs to be just moving it to secondary page and sending the note to the author. If you have any basic "voting" mechanism for "passers by" you should activate if for such code but not declare it as "voting". More like "do you think this code snippet is relevant" and then, "tell us why". Not to take such votes as a hugely decisive factor (since it is in a fringe language or to verbose or the problem/algorithm is not know to be very popular) but to use it as a light corrective signal to avoid deletion of something just because "regulars" don't understand it and it might be some legendary routine or actually exceptional for reasons we can't predict.

OTOH I'd say 3 months before a code that got moved to secondary page for being fringe/irrelevant/redundant (compared to what's on the main page) can be deleted, unless someone defends is very convincingly, 6 months for the code that's in a gray zone and it can easily be that the problem / algorithm needs a code diversity page. Shorter period only for things that are obvious abuse (someone dumps 1000 lines or totally unabridged source file etc.)

Also, send a nice note to someone who wrote a pretty big chunk in a minor language, thank him for his time and effort and ask him if he could write the same in C/C++/Java/C#? Chances are that he could, chances are that if he's a young guy he's going to learn new language in order to do it - a little respect and a goal are known for doing small miracles.

ZeeXy (talk) 11:26, 18 September 2010 (UTC)
 * On the contrary, I assure you that I have read every word, all 3,331 of them, though I admit the acronym TL;DR did cross my mind when I saw this last message. I assure you also that (being able to see history of the deleted article) I was aware that you were not its disappointed author. My colleague was not able to see the history, so he thought you were; he spends a lot of time trying to help them, and is to be applauded for that as we have an unfortunate reputation for being unfriendly to newcomers.


 * Your problem is that you would like Wikipedia to be something it has decided not to be. If I can try to summarize, you think it should:
 * Be more ready to include passages of code, indeed backing up any algorithm with an appendix "showing the solution almost in as many languages as reasonably possible" and inviting authors who submit segments of code to rewrite them in other languages,
 * Give pages of code a special status, so that deletion cannot take place in less than three to six months.


 * You will understand that, even if you convinced me, I could not make that happen, nor is there any "higher authority" who could. Wikipedia's policies change, slowly and after interminable discussion, by consensus. The place to make a new proposal is Village pump (policy). If you go there, make your proposal as specific and (dare I say) as concise as possible.


 * I am only one of several hundred active administrators, who have no special authority over content or policy compared with the tens of thousands of other active contributors, but I have to tell you that I think you stand no chance. It takes us away from so many long-established and fundamental policies: WP:Verifiability, WP:No original research and Wikipedia is not a manual, guidebook, textbook, or scientific journal. An encyclopedia is essentially about summarising material already published elsewhere: by its nature a section of code cannot be summarised. Better to let the encyclopedia article provide links to examples elsewhere. The article Eight queens problem, for instance, provides a long list of Links to solutions including this link to Rosetta Code which shows solutions in many different languages.


 * In fact, it seems that Rosetta Code is already doing the job you would like us to do: their front page says, almost in your words, that "The idea is to present solutions to the same task in as many different languages as possible".


 * You might find people to discuss this with at WikiProject Programming languages.


 * Regards, JohnCD (talk) 21:31, 19 September 2010 (UTC)


 * The "as many languages as reasonably possible" was only for cases with special educational value like 8 Queens and even that not with totally obsolete languages (therefore not Rosseta Code). Don't put words in my mouth. Reasonable means within a reason and subject to a reasonable judgement. And for the rest 1,2 exceptionally 3 snippets (if a functional expression is fundamentally different from C/C#/Java).


 * It's virtually impossible to explain the importance of a source expression of an algorithm to people who don't know programming. It's like trying to explain why it's important to see expression with dx/dt instead of just reading a text about it. Suppose that calculus is ressonably new and people who don't know it don't see any value in spelling out dx/dt and some expression with it when you have a paragraph which describes what's going on.


 * Oh and I don't know your nomenclature, so "special status" sounds like a big word. Would you delete say quantum mechanics formulas in 7 days based on a vote by people who don't even know what they are talking about? Or would you make sure that there's much longer time to make sure that enoguh people who can make resonable judgement have the chance to at least stumble upon it. If so, than many things need that "special status" here, A 7-day notice execution is something I'd expect for an urgent matter - even speeding tickets have 15 days :-) and just about everything else has at least a month as a grace period.


 * Snippets of code are summarizing material already published and regurgitated between several to severl hundred times, and except in special cases there is no particular attribution by any legal or other standard. It would be borderline illegal for someone to sign his name say under QuickSort - like if you's sign Newton's laws just because you typed in the formulas and chose the names of variables.


 * The core value of code snippets is that they make the difference between understanting an algorithm entirely, on the spot, from a single page vs. wasting hours to wade through descriptions. Regarding verifiability, it sounds to me that there's a huge double standards at play here. I just edited the article on 8 queens since it even had the actual material error in heuristics. Just as someone would eventually edit a C or Java snippet it if was posted with errors. No one jumped the gun to ask for deletion and obviously no one vas verifying anything since it's not feasible -- verification comes from people who are passing by like me and reading. If it was a code it would be used as excuse to to just delete it.


 * Anyway I rest my case. I was under impression that Wikipedia had authorized editors in charge of particular fileds and that is has some kind of authority which cares about people visiting the site more often and leaving with good information and knowledge. So if it's a place where an English major can decide on a deletion of things he can't even grasp and treats it like a page from "War and Peace" then it's like explaining to Bush that's a stem cell :-)


 * BTW I just took a look at your page for Binary Search - notice how the blurb complaining about "does not cite any references or sources" is almost larger than the snippet itself, and above it someone listing Niclaus Wirt as a source of "algorithm" and adding that he "corrected it" :-) If you know any programming you know how absurd it is to first attribute 10 lines of basic binary search to anyone and second to attribute "algorithm" to Wirth and third to say that you corrected (both Wirt and algorithm :-))) That's what happens when a policy from some other field gets pushed on to material with entirely different nature. The thing is that the code is the algorithm. For most common algos the distinction has been blured and has vanished long time ago. In the 2nd snippet it's not even immediately obviouls in which language it is since it would look almost the same in N C-like languages.

ZeeXy (talk) 10:55, 29 September 2010 (UTC)
 * No, Wikipedia doesn't have "authorized editors in charge of particular fields." Something like that is being tried at Citizendium - "This time, it'll be a Wikipedia written by experts" - but it does not seem to be taking off. JohnCD (talk) 11:34, 29 September 2010 (UTC)


 * An editor in charge of a particular field is very different from "written my experts". It simply serves to make sure that important decisions, like blatant deletions, don't get made by people who don't understand the very basics of the matter they are deciding. People who don't understand a particular field of knowledge are always in majority, pretty much for any reasonably specialized field. It's a sad time in which people are persecuting the very field that gave them the very site they are editing but it's not unprecedented in history. Off I go. I'll try my best not to come across your pages again. ZeeXy (talk) 05:57, 5 October 2010 (UTC)


 * There is a wikibook with source code for a variety of algorithms, including the N-queens problems, see Algorithm Implementation or (more specifically) Algorithm Implementation/Miscellaneous/N-Queens. I've added a link to the external references sections of Eight queens puzzle. -- Rick Block (talk) 15:40, 6 November 2010 (UTC)