text:
Talk:Function (computer programming)

Old text from Subprogram
Someone with more patience and objectivity than I, might want to resurrect some of the text from this revision of Subroutine that was subsequently eroded and finally obliterated by well-meaning edits. I wrote this draft, and I think it has a decent, straightforward, NPOV structure that's more encyclopedic than what's currently on this page. --Doradus 02:04, Oct 1, 2004 (UTC)

New stuff
"however, the C programming language and its programmers view subroutines simply as functions that do not return a value."

The one thing in life that frustrates me most is arguing over definitions, so this is just a thought. I'm a (mostly) self-taught C programmer, so I have very little use for terminology, but what about functions that return only success or failure... Would they not be considered a sub routine?

--The Extremist

 * Returning a boolean is still returning a value. IMHO. --Mike Van Emmerik 03:51, 12 May 2005 (UTC)

indeed

Return address

 * "The IBM 360 range used to save this address in a register, relying on macros to save and restore deeper return addresses in memory associated with individual subroutines, then using branches to the address specified in the register to accomplish a return. However stacks have proved a very useful approach, and are typically used in more modern architectures."

Sorry, that's the fashion again. Push/pop architectures like the Pentium are now obsoleted by RISC and VLIW machines (e.g. SPARC, PowerPC, Itanium, etc) that use a link register to store the return address, which has to be saved by non-leaf subroutines. Push and pop instructions aren't always used even when available, e.g. see Pentium code generated by the MLton compiler. It subtracts a constant from the stack pointer for every call, and all local variables and also outgoing parameters are handled as offsets from the stack pointer. Even return instructions are replaced by a branch indirect on an offset from the PC. Presumably they do this for speed, but it may just be easier to write RISC-like code for all target machines. In any case, it's simply not true to say that the more modern machines prefer to use stack instructions. Pentiums only have stack instructions because of backwards compatibility to the 8086 (at the binary level) arguably the 8008 (at assembly language level). I don't have time for this right now, and would also like to seek confirmation on this point.

--Mike Van Emmerik 03:51, 12 May 2005 (UTC)

Yes, the link register has come back into fashion -- many RISC machines have a link register to store the return address. (I've done a bit of ARM assembly language programming -- ARM was post-8086, right ?).

However, we *are* still using a stack -- a stack is necessary for recursive subroutines.
 * Um, NO. Continuation passing style has been used for years in Standard ML compilers, and SML uses recursion almost exclusively as the control-flow of choice.  --bmills 18:34, 24 October 2005 (UTC)

We're not going back to the bad old days of the MIX and other machines that required self-modifying code. Those machines begin each (non-leaf) subroutine by overwriting the address in the "jump" instruction at the end of a subroutine with the value of the link register. Are you sure that "return instructions are replaced by a branch indirect on an offset from the PC" ? Because that sort of thing makes recursive subroutines impossible. I might believe you if you said "branch indirect on an offset from the SP", because that is still (effectively) a stack. --DavidCary 05:55, 16 July 2005 (UTC)

 * However, we *are* still using a stack -- a stack is necessary for recursive subroutines.

Agreed.

 * I might believe you if you said "branch indirect on an offset from the SP", because that is still (effectively) a stack.

Sorry, that is what I meant.

My point was this: RISC machines have no more hardware support than what the IBM360 had (ability to copy the program counter to a register). I assumed that this means that the IBM used a stack... if not why not? --Mike Van Emmerik 13:46, 17 July 2005 (UTC)

 * No, the 360 calling convention did not use a stack. See the Overview in this article at Everything2 and/or the History section of this 390 linkage pdf.
 * The 360 hardware architecture was excellent (in historical context), but the software wasn't. Of course the hardware could support a call stack, but they explored piles of calling convention kludges instead.
 * Why did they do that? Hard to say; ignorance is my best guess.  You might get some insight from Stack? S/360 don't need no stinkin' stack!.  I think in part it was overreaction to the Burroughs stack approach (B5000).  This is suggested by the "Pushdown stack vs address registers" discussion in Amdahl's 1964 "Architecture of the S/360" paper.  It says "Subroutine transparency ... is one of the apparent advantages of the stack.  However, the disadvantage is that the transparency does not materialize unless additional independent stacks are introduced for addressing purposes" (whatever that means). -R. S. Shaw 20:02, 17 July 2005 (UTC)

OK, thanks for all the info. I've now cleaned up the part which I was objecting to (i.e. that RISC machines have somehow "reverted" to the bad old days of the IBM 360). --Mike Van Emmerik 04:14, 18 July 2005 (UTC)

Subroutines and Methods
Aren't subroutines and methods pretty simliar? If so, I think each article should mention the other one to some degree. -Hyad 2 July 2005 23:26 (UTC)

I actually think that merging the article 'Function Stack' with 'Subroutine' is a good idea. I also think that the page describing a 'Subprogram' should be reintroduced. --Anonymous 16:20, 15 July 2005 (UTC)

Actually they can be similar or dissimilar (if I understand the termonology) depending on the language you use.

A method can be called a function or subroutine (and in other languages it is once again different) but thow in an object oriented language and you have something different. The method implements variables that modify an object. Normally methods would just return varibles or modify something, but that is language depenent.

Subroutines and parameters
I think that the Parameter (computer science) article ought to be dropped and redirected to this article. Please see the comment on Talk:Parameter (computer science). —Preceding unsigned comment added by Donhalcon (talk • contribs) 07:14, 23 October 2005

What? No. Parameters are vaster then simple methods, although the article doesn't seem to explain that. Look, if you have an equation the parameters of that equation are what go in to fill (ex) x, y, and z. The Parameter artile needs a re-work, but it should not be incorporated into a single article

Furthermore, the separation of facts is nessicary for a working encyclopedia. You wouldn't combind Time with Watch just because of the similarities. Or god with devil because they exist within the same idea. The more separated objects are the better.

http://www.answers.com/parameter&r=67

A parameter is something that is passed to the subroutine. They are separate concepts. Poppafuze 06:04, 28 September 2006 (UTC)

Proposal to merge section from Control Flow article into Subroutine article
Currently, the Subroutine section in Control flow and the Subroutine article are both covering the same topic. When a section summarises the content of a linked article, it should be a short summary and should not include any significant content that is not in the linked article - this is not currently the case at all. The section in Control flow on subroutines is not short, it is not a summary, and it contains content that is not in the main article. Any objections to this proposed merge?—greenrd 13:20, 27 May 2007 (UTC)

 * I am surprised to hear a claim that these articles are covering the same subject. If they read as if they are covering the same subject then some rewriting is needed.  I have read them and don't think they read as if they are covering the same subject. Derek farn 15:01, 27 May 2007 (UTC)

 * Perhaps I was not sufficiently clear. I am talking about the Subroutine section in the Control flow article, not the entire Control flow article. Both that section and the Subroutine article are talking about the same subject, subroutines...—greenrd 16:47, 27 May 2007 (UTC)

 * You were sufficiently clear, but I was insufficiently switched on. Good call.  Do the merge. Derek farn 19:24, 27 May 2007 (UTC)

What is "Clean Code"
There has been a lot of activity today regarding what is "good form" or "clean." I would like to raise the point that Wikipedia does not accept original research and thus we can't just blatantly state what is or is not "good form." Citations will need to be laid out. Furthermore, to follow WP:NPOV, we need to handle all sides of the argument (what is and is not "good form" is highly controversial), which to be honest is outside of the scope of this article in the first place. Accordingly, I really don't feel this is appropriate for this article. Feel free to disagree/discuss. --Mpdelbuono (talk) 03:31, 27 November 2009 (UTC)

 * For the record, these are the two sections which were proposed (I have since removed it per the above, pending this discussion):

==Disadvantage== Code is easier to understand when it is written linearly.

It is good convention to put subroutines before and call them in the main body of code after (rather than the other way round). Functions in languages such as C depend on this, whereas newer languages such as C# also allow methods to be placed afterwards as well.
 * --Mpdelbuono (talk) 03:36, 27 November 2009 (UTC)

 * I will explain why I added this. Code is naturally going to be easier to read when you don't have to skip back and fourth through sections.
 * Much of this article, including the "advantages" section is not cited. I thought we could at least manage one uncited disadvantage!
 * It's good convention because it maintains compatibility and makes sense logically. Putting subroutines before the main body works in most languages, whereas putting subroutines afterwards works in fewer languages. Of course I can't cite original research.--81.154.146.7 (talk) 03:54, 27 November 2009 (UTC)
 * As I mentioned earlier, the statements you are making are entirely based off opinion and original research. Neither of these are appropriate for a neutral encyclopedia. I believe that what you are saying is a valid viewpoint, however, it is also highly controversial. If you want to include this content you really need to (1) ensure that both sides of the argument are handled equally, and (2) you cite sources indicating that people really believe in this. It is important to point out that the very fact that we are having this debate right now implies that there must be some sort of controversy in your statements, and to be frank, I strongly believe that, in C, putting  before other functions is preferable because it is the logical flow of the program. I could continue to rant on about reasons against what you're saying, but that's really not the subject of this talk section. The actual content isn't as important as it is to minimize the controversy associated with the content. Simply adhere to the policies WP:NPOV and WP:NOR and I will have no objections to these statements. --Mpdelbuono (talk) 03:59, 27 November 2009 (UTC)
 * No, in C, if you put main before the functions in the program, the program will not work. In C# you can put methods before and after. I'm glad you understand my point. I don't think what I wrote was controversial ... it just makes sense. Anything is going be easier to read linearly than not. I really can't be bothered to go looking for references for this kind of thing. I think I might delete the advantages section because it's unsourced and controversial.--81.154.146.7 (talk) 04:08, 27 November 2009 (UTC)
 * Consider the following code:

void foo; int main {    foo; return 0; } void foo {    // Do something here }

 * This is perfectly legal C code, and honestly what I prefer. However, what I prefer is not in question here. What is more important is that there is a debate over what is clean and what is not. You certainly have the right to remove the "Advantages" section, but I would argue this would be a better place for citation needed. The difference with the "advantages" section is that there isn't controversy associated with most of those statements. You can't really argue subroutines don't "[reduce] the duplication of code within a program" because, quite frankly, that's what they do, plain and simple. The difference between your "Disadvantages" section and the currently-existing "Advantages" section is that your "Disadvantages" section is controversial and needs to hold up to both sides of the argument.
 * That being said, you do raise a valid point. I think it is fair to argue that some parts of the "Advantages" section are also controversial and either need a corresponding counter-point or need to be removed. --Mpdelbuono (talk) 04:14, 27 November 2009 (UTC)

 * Hmm, I will get round to testing that code. May I ask why you have "void foo;" at the top?
 * I won't delete the Advantages section ... but the thing which gets me most was the "readability" part. This is what provoked me most. Things are most certainly easier to read linearly and that is a disadvantage.
 * I don't know how to ask for a citation so could you please? —Preceding unsigned comment added by 81.154.146.7 (talk) 04:22, 27 November 2009 (UTC)

 * Yeah ... your code worked. I found out what the "void foo;" at the top does. It declares the sub routine. It has to be put before main and hence, the code below did not work.

int main {   foo; return 0; } void foo; void foo {   printf("hello"); }
 * --81.154.146.7 (talk) 04:36, 27 November 2009 (UTC)

 * Well of course it didn't work, because  is not aware of   at the time. However, that's not really the argument here. The point is that there are multiple ways to do this, and both of them have strong arguments for and against. Hence, the controversy and why we must be careful when editing Wikipedia to ensure that both sides are considered, and not to bias either side.
 * Regarding requesting a citation, it's very simple. All you have to do is add the code after the statement and Wikipedia will handle the rest. You can do this anywhere you feel a citation is warranted. I totally agree with you regarding readability being potentially controversial. Per your request, I will be more than willing to do this on your behalf.
 * I totally understand, after reviewing the content, why you would think what you posted would be accepted without dispute. I hope, as well, you now understand why I personally (and probably others, though I cannot speak for them) disagree with what you posted. However, I hope that we can come to a mutual agreement over how to add your content without inciting a controversy. Naturally, Wikipedia relies on points of view from many varying and unique authors, so without contributions from people like you, this would never have even been considered, perhaps. Now, with some work, we can get that added without violating policies and guidelines. I'm totally willing to work with you to reach that goal. --Mpdelbuono (talk) 04:45, 27 November 2009 (UTC)
 * As a note, I have now added this article to my list of things to be worked on in an effort to go through and try to link the article to existing publications to justify the statements. --Mpdelbuono (talk) 04:50, 27 November 2009 (UTC)

Thank you. I just hope people are interested in creating studies for where subroutines can and can't be defined for different languages in relation to the main body of code. I also hope people are interested in creating studies to show whether linear code is easier to read than non-linear code. In the mean time, I would strongly advise people to put there subroutines before the main body like so:

[CODE] void foo {   printf("hello"); }; int main {   foo; return 0; } [/CODE]

...even if it isn't on the main page. peace. —Preceding unsigned comment added by 81.154.146.7 (talk) 05:05, 27 November 2009 (UTC)
 * I have finished this by adding citations to the relevant locations which were of concern before. Please feel free to review them. --Mpdelbuono (talk) 00:29, 29 November 2009 (UTC)

In the citation, I couldn't find the author saying that an advantage of using a subroutine is to improve the codes readability? Could you point me in the correct direction? --86.130.42.219 (talk) 02:57, 29 November 2009 (UTC)

Okay, I'm deleting some of the points given in the advantages section. It is based on a subjective bias and the citation you gave does not actually match the points given in the section. --86.153.19.120 (talk) 17:58, 6 December 2009 (UTC)

flagrant use of weasel words
in an entry on computer science? wtf? 12.108.188.134 (talk) 19:26, 1 December 2009 (UTC)

History needs updating + too low level
This subroutine history is far better on the early history of subroutines. The idea of subroutines was there pretty much from the beginning and both Turing and Zuse provided special hardware to support them. Arguably Ada invented the concept. I also believe much of the text here could be moved to the Self-modifying code and Call stack articles instead and this article made a bit more high level. Dmcq (talk) 14:54, 6 December 2009 (UTC)

There is also a claim that not Mauchly but hist programmer Kathleen Antonelli (they were later married) came up with subroutines while working on the trajectory calculating programs on ENIAC. That claims also appears here: http://fortune.com/2014/09/18/walter-isaacson-the-women-of-eniac/ in any case Turing had probably already published. Mwasheim (talk) 11:01, 18 December 2018 (UTC)

NO mention of pre and post conditions
No discussion of "function" is complete with mention of preconditions and postconditions. — Preceding unsigned comment added by 74.85.3.146 (talk) 03:40, 2 June 2011 (UTC)

this page wasnt helpful, i made this edit -- http://en.wikipedia.org/w/index.php?title=Subroutine&curid=32177451&diff=516519142&oldid=510553280
this page wasnt helpful, i made this edit -- http://en.wikipedia.org/w/index.php?title=Subroutine&curid=32177451&diff=516519142&oldid=510553280 — Preceding unsigned comment added by Coginsys (talk • contribs) 10:39, 8 October 2012 (UTC)

 * Your change was reverted (twice) because it wasn't as clear and meaningful as the version that was there before. - David Biddulph (talk) 13:02, 8 October 2012 (UTC)

Calling conventions
I was going to add something about call by name and found there's no general discussion of argument passing, only specific language instances. Looking at this talk page I read "Someone with more patience and objectivity than I, might want to resurrect some of the text from this revision of Subroutine that was subsequently eroded and finally obliterated by well-meaning edits. I wrote this draft, and I think it has a decent, straightforward, NPOV structure that's more encyclopedic than what's currently on this page. --Doradus 02:04, Oct 1, 2004 (UTC)"

I agree that the article needs some work. Peter Flass (talk) 13:44, 14 January 2013 (UTC)

 * I added a table on argument-passing conventions. I didn't cite a source because I found so many and synthesized this using several of them. Peter Flass (talk) 13:45, 15 January 2013 (UTC)

Proposal for new article: function(computer programing)
Subroutine could become a redirect. Function is a broader term. Python does not have subroutines. Functions that do not specify a return value return None (python's null value)Panpog1 (talk) 00:49, 7 May 2013 (UTC)

 * Function is not a broader term than subroutine; in fact in many contexts it would be considered narrower. A subroutine may or may not be defined to return a value.  If it does not return a value, it is not a function.  In interpretive languages like Python, all subprograms are functions and have some convention for cases which do not return explicit values, substituting a value like "None" or 0 or "Undefined".  In those contexts, these are functions whose result range includes that value.  But in most compiled languages, non-value-returning subroutines simply have no location designated for returning a value.  If there is to be only one article, it should be Subroutine as that does best at capturing the computational ideas involved; the term function tends to evoke the mathematical concept, which is related but misleading. --R. S. Shaw (talk) 06:23, 10 May 2013 (UTC)
 * I agree with a function is not a broader term than procedure call. In a formal sense a true function is not just a procedure that returns a value. It's a procedure that does not modify any external variables. Even many of the functions in Lisp aren't truly functions in the formal mathematical sense. But the more important issue is that procedure call is more general than function is. I also think the intro text to this article is wrong and should be changed. It describes "function" and "procedure call" as if they are synonyms when as we just described they are not. --MadScientistX11 (talk) 15:41, 10 December 2014 (UTC)
 * I suppose by "formal sense of a true function", you mean a mathematical function, and that is a different concept, thus OP use the term "function (computer programming)" to distinguish with that. In modern popular languages the word function is interchangeable with subroutine, it can have side effects, modify states, and be void valued. Since "function" is a more popular term than "subroutine", it is more appropriate to called this article function(computer programing).Golopotw (talk) 10:45, 3 November 2020 (UTC)

 * I'm not convinced it should be a separate article, but certainly the gist of this discusion should be in the subroutine article. Peter Flass (talk) 18:59, 10 December 2014 (UTC)
 * Yes, it's always easier to kvetch and kibitz then to actually edit and fix ;-) I agree. There isn't enough good content here to even consider branching off a new article and it would be good to clarify the actual distinction between functions, procedures, etc. If no one else does it I'll take a shot at it although I'm working on some other things right now but I'll keep this on the stack but if someone else wants to take it please feel free. --MadScientistX11 (talk) 19:29, 10 December 2014 (UTC)

I would also like to see a section on pure functions, etc. It could briefly explain the concept, then link to the Functional Programming page. RichMorin (talk) 21:22, 30 March 2015 (UTC)

I learned programming in the 1960s when most programming was in assembly language. My view is that a function is a subroutine that returns a value and may be used in an expressio. A subroutine is more general including all code that may be called to perform some operation. A pure function does not change variables used by code outside the function.

I think this article should be simplified. It is a technology that is a part of several other higher order concepts. Subroutines may be simply local, coded as part of a program. They may be part of a package linked with a program. Support function that interface with an operatoring system. Part of a high level language support library.Steamerandy (talk) 21:44, 21 August 2016 (UTC)

I actually agree with Panpog1. The semantic distinctions between subroutines and functions are sometimes language specific, and trying to come up with a universal distinction between these similar concepts makes for relatively intractable articles for lay-readers. CessnaMan1989 (talk) 02:01, 5 November 2021 (UTC)

 * I disagree that function(computer programing) should be created. Functions fit as a section in this article. A subroutine is getting sidetracked in any language, including those that don't support functions. (In classic BASIC, you would  a subroutine and then   back.) A function is getting sidetracked with special characteristics. Therefore, a function is a subroutine. Timhowardriley (talk) 04:49, 5 November 2021 (UTC)

 * In Rexx I can write a procedure that sometimes returns without a value and sometimes returns with a value. Is such a procedure a function or a subroutine?

 * --Shmuel (Seymour J.) Metz Username:Chatul (talk) 12:39, 5 November 2021 (UTC)

Incorrect chronology
Subroutine has an incorrect chronology. The text claims Some very early computers and microprocessors, such as the IBM 1620, the Intel 4004 and Intel 8008, and the PIC microcontrollers, have a single-instruction subroutine call that uses a dedicated hardware stack to store return addresses—such hardware supports only a few levels of subroutine nesting, but can support recursive subroutines. Machines before the mid-1960s—such as the UNIVAC I, the PDP-1, and the IBM 1130—typically use a calling convention which saved the instruction counter in the first memory location of the called subroutine. This allows arbitrarily deep levels of subroutine nesting but does not support recursive subroutines. The PDP-11 (1970) is one of the first computers with a stack-pushing subroutine call instruction; this feature supports both arbitrarily deep subroutine nesting and also supports recursive subroutines.

The IBM 1620 does not have a hardware stack of registers for return addresses; it has a single register, IR-2.

The IBM 1130 was introduced in 1965, not before the mid-1960s.

It is likely that some of the machines I mention below are themselves not the first. The PDP-6 had the PUSHJ instruction well before the PDP-11, and the Burroughs B5000 had stack linkage before DEC. The IBM 704 had the TSX instruction in 1954. The UNIVAC 1103A had a return jump in 1956; unlike later architectures, the return jump on the 1103A specified where to store the return address independently from the address of the subroutine. --Shmuel (Seymour J.) Metz Username:Chatul (talk) 14:49, 4 July 2021 (UTC)

Added procedures and functions stubs
I added stubs for procedures and functions. The article computer program has a wikilink to functions. Timhowardriley (talk) 18:03, 29 October 2021 (UTC)
 * I removed the procedures section stub. Timhowardriley (talk) 20:20, 5 November 2021 (UTC)

The Python examples is riddled with mistakes
If that is intentional it should be pointed out in the text, but as of writing this, it only says "The following program prints "Hello world!" followed by "Wikipedia" on the next line.

If you were to try and run this with Python, lines 6 and 7 would lead to syntax errors because they are not commented. The second example function is worse, the def statement does not end with a colon leading to another syntax error and because the function does not return anything, printing the return value of the function will print "None" after printing "welcome martin" 2001:7C0:2049:1D4:D511:6438:FDB6:39FC (talk) 14:33, 22 November 2023 (UTC)

Article scoping; rename proposal
This page has ALOT of history is old with lots of edits. One could write an article about the history of this article :) I am new to this article, but have been programming for 30 years. I'm interested in improving this article mostly for up and coming programmers wanting to learn the trade. As it was when I started working on it a few says ago, it was a mess  filled with inconsistent use of terms and wrong/bad info.

It tries to cover alot of ground probably too much. But I'm focused on correcting what's there more than removing what's too far afield. At some point, maybe I'll get to refactoring into other pages.

Probably the biggest challenge for this article is scope. What is this about? Its title is 'function', but clearly it's also about subprogram ... and procedure ... and method ... OMG. Thing is, these terms all have meaning in the context of certain languages and environments. Even within particular contents, the meaning has changed over time -- over the last 70 years ... in arguably the most dynamic industry in human evolution! This article takes on a broad and deep topic.

But, I think it's worthwhile. Since whatever this article is about is clearly important.

But, to be useful and understandable, the article needs to be focused as much as possible for such a board topic.

IMO this article always has been and should continue to be about the technology (or concept or construct) that is common among all languages and environments that allows programmers to structure code into chucks that can be used within a program to decompose a problem into a solution.

One challenge of this is that there is no one, good word for that!

Seems that function has connotations of the technology in general, but it is also bound tightly to particular implementations contexts such as particular languages. Using it for the name of the technology seems off the mark.

Some say that subprogram is the general concept. In fact, I think this article used to be called subprogram. Why was it changed? Was the change a mistake?

An issue that I personally struggle with is that I often confuse subprogram and subroutine even though they are quite different, right? Subroutine is like function an implementation of subprogram, right?

The article does use the term callable unit which does seem to cover the desired focus of this article. Unfortunately, it's not commonly used not nearly as commonly used as the other terms (function, subprogram, ...). But, a Google search does have hits (other than this article). So, it is a thing apparently.

I think this article should be renamed either back to subprogram or to callable unit. And, content should be updated to use the new name throughout when referring to the general concept. And, to continue to use the more specific terms as context warrants.

This article already has re-directs for all of the more specific terms and that should remain. Folks do and should continue to come to this article for all the various terms (callable unit, function, subprogram, ...).

...Just reviewed the edit history of this page. Seems that the page rename from subprogram to current function was done by Uni3993 in late 2022. And they seem to be permanently blocked :o) From that I take it that they have a history of over zealous modifications. It seems they did a global search and replace of 'subprogram' with 'function'. Well intentioned, but badly implemented. For one, when the word started a sentence, it was no longer capitalized. For another, I guess the result had "function and function". OMG. What a mess. Guy Harris fixed the many, many issues. Thanks for that!! I do want move away from 'function' as the general term, but do _not_ propose a simple minded search and replace. Would require a surgical approach.

Stevebroshar (talk) 16:06, 4 February 2024 (UTC)

 * Regarding I'm interested in improving this article: Wonderful! Employ some secondary research to find reliable sources about functions and dive right in. Timhowardriley (talk) 22:51, 5 February 2024 (UTC)

Procedure context
In languages such as Algol 60 and PL/I, it is possible to define a procedure within another procedure. The procedure name identifies not only an entry point but also a context (stack frame) for local variables of the enclosing block. Similarly, in object oriented languages, an instance method is assciated with the context of an object, not just with its class. This is a special case of a Closure. I'm not quite sure where this belongs, but I believe that the article should discuss it in an NPOV manner and then give examples. -- Shmuel (Seymour J.) Metz Username:Chatul (talk) 19:43, 8 February 2024 (UTC). -- Revised 16:32, 12 February 2024 (UTC)

 * I don't think this article should attempt to describe every feature of a function in every language. I like that it tries to cover many aspects of functions (of whatever we call them) with examples from various languages. But, if we try to cover every feature for every language, the article will be too long ... and boring :) If it's wrong about algol and pl/l we should fix it. But IMHO we don't need to be exhaustive about each language. Stevebroshar (talk) 00:23, 13 February 2024 (UTC)

Recursive and reentrant are orthogonal
#Reentrancy states, but actually the two concepts are orthogonal. A recursive function can fail to be reentrant due to unserialized access to global data. -- Shmuel (Seymour J.) Metz Username:Chatul (talk) 19:57, 8 February 2024 (UTC)

 * I was thinking that the "a recursive callable must be reentrant" was not right. Please fix that section. Thanks. ... but I don't know what you mean by "A recursive function can fail to be reentrant due to unserialized access to global data". Try to keep it high level. This is not for compiler designers. I'd say it's for high school and college students learning to program. Stevebroshar (talk) 00:27, 13 February 2024 (UTC)
 * Fixed.
 * Consider a factorial function
 * Since access to COUNT is not serialized with, e.g., a critical section, a semaphore, the function will not maintain a correct count if two invocations are invoked concurrently. -- Shmuel (Seymour J.) Metz Username:Chatul (talk) 14:09, 16 February 2024 (UTC)
 * Since access to COUNT is not serialized with, e.g., a critical section, a semaphore, the function will not maintain a correct count if two invocations are invoked concurrently. -- Shmuel (Seymour J.) Metz Username:Chatul (talk) 14:09, 16 February 2024 (UTC)

Not wrong vs. misleading
Removal of "[callable unit] is not commonly used" is not wrong ... but...

Now it only says "The technology is generically called a callable unit" ... which is not wrong, ... but...

I am very concerned about how information can be misleading. To _not_ say that it's not common leads the reader to think 'callable unit' is common -- otherwise it wouldn't be in wikipedia, right? But, it is uncommon.

I struggle with what to call the thing that is the focus of this article. 'function' is not great since so many other terms have been used throughout the years. Even today 'function' is not the only term used. I would love to have a term that covers it all. But, there just isn't a common term that covers the breadth of the topic. 'callable unit' does, but it's not common and that fact is important IMHO.

It's like what is the gender neutral, singular pronoun? There isn't one!

And what is the gender neutral word for cow and bull, singular for cattle? Cattlebeast? 1 head of cattle? Stevebroshar (talk) 00:43, 13 February 2024 (UTC)

 * It's okay to start the history with "subroutine" and make that the most generic term. Then as technology improves, "procedures", "functions", and "methods" can be added to the vocabulary. Rather than trying to figure this out yourself, I suggest getting one of these books: Programming_language. I have Comparative Programming Languages by Wilson. There's a chapter called "Procedures, functions and methods" that is ripe for this article. This article also needs an explanation of the different parameter methods. Additionally, this article only has a superficial coverage of how functions are implemented. Andrew S. Tanenbaum is the godfather of modern computer hardware. I have the 1990 edition of his seminal book, Structured Computer Organization. (Subsequent editions are out there.) In this book, stack addressing and the stack frame are well covered. Timhowardriley (talk) 03:14, 13 February 2024 (UTC)
 * I think my father had books :) Joking aside, I think you are right that historically subroutine ... and subprogram ... and routine ... are older terms, then function came along to more or less replace them and then method came with OOP but doesn't replace function. That's my hypothesis. Is there a source that covers this aspect of history of this thing with many names? ... Comparative Programming Languages costs $3! I didn't plan on investing so much as part of my wikipedia hobby. Stevebroshar (talk) 11:26, 15 February 2024 (UTC)

 * Functions are overly restrictive. What about relations? And why sequences of instructions? Why exclude sets of callable units, which can be called in the order in which they are needed, or in parallel.

 * In the family of Prolog and Datalog logic programming languages, a callable unit is a predicate representing a relation. Moreover, a predicate can be defined in terms of other predicates, and can either be called using top-down backward reasoning, as in Prolog, or be derived bottom-up using forward reasoning, as in most Datalog systems.

 * A similar neutrality between sequential and parallel execution and between top-down and bottom-up problem solving strategies also arises in parsing formal grammars. Robert Kowalski (talk) 10:23, 15 February 2024 (UTC)
 * Thanks for your input. Many points to cover...
 * What do you mean by "Functions are overly restrictive"? That the term function is overly restrictive WRT the concept that the page is intended to cover? You think the central concept of the page is relation? If that's what you mean, then no, that's not what this article is about. ... unless I don't know what you mean by relation. I think of relation as a static association between things. Whereas a function is a dynamic action. Very different.
 * I think it's appropriate to call a function a sequence of instructions since the text of a function is a sequence of lines. Control flow when executed may not be sequential -- one line to the next -- although that is the default control flow when not otherwise directed by the instructions.
 * WRT "Why exclude sets of callable units": in what way are they excluded? You mean that concept should be included? Isn't that basically a library ... which is described?
 * ... oh you are thinking about Prolog and Datalog logic programming (you buried the lede). OK. I don't know much about that. But, I wonder whether this predicate concept falls under the concept of this article (function...). Maybe the concept of this article only applies to imperative languages -- not other languages such as logic programming. Is a predicate something that gets called per se? Or is it a higher level concept? I'm sure a logic language processor (compiler/interpreter) includes callables. At the bottom level of abstraction, all programs execute as imperative instructions and almost surely include callables. But does it make sense to say that from the perspective of logic language source code to talk about calls? I'm thinking not. Stevebroshar (talk) 11:58, 15 February 2024 (UTC)
 * To put it differently, functions are not the only way to "structure code into chucks that can be used within a program to decompose a problem into a solution". Relations are more general than functions and can also be used to stucture code. I am certainly not suggesting that the article be renamed Relation (computer programming). Callable unit is not great either. I can live with subprogram, but function is simply not the topic of most of the article. Robert Kowalski (talk) 13:08, 15 February 2024 (UTC)
 * Relations as generalizations of functions-in-the-programming-sense: presumably you're referring here to something along the lines of this interpretation of predicate logic as a programming language. Guy Harris (talk) 20:29, 15 February 2024 (UTC)
 * Yes, but the field has moved a long way since then. See for example the Wikipedia article logic programming, and the section comparing functions and relations. Robert Kowalski (talk) 20:52, 15 February 2024 (UTC)
 * It can be challenging to know the intent of something, But, based on various factors I think this article is about the calling technology; not chunking. For example, a graphical language allows chunking via visual things; shapes or something. That is chunking, but clearly not what this article is about. I also don't think this is about a more general concept of chunking. The callable nature seems to be central to this article. Notice how it gets into gory details of call/return, call stack and such. This is about calling ... which today implies chunking ... although in some older languages it didn't involve chunking. ... Including a short bit on chunking seems like a good addition since it is part of the modern concept of a callable. ... I do think the article is about the concept of function, but only in a modern sense of the word. Way back, other terms were used, but now function is a common term to use for anything that is callable. It is an overloaded word for sure. Function means lots of things. Further, terms like subprogram, subroutine, routine are not common today although used to be. Stevebroshar (talk) 11:06, 17 February 2024 (UTC)
 * Many thanks for this clarification, @Stevebroshar. I understand you as saying that in this article the term function is not used in the sense of functional programming or in the sense of mathematical function, but in some broader sense that includes the notion of function in functional programming. In particular, it includes, for example, the use of predicates in the procedural interpretation of logic programs. If so, then maybe it would be good to add something along these lines to the article. As it currently stands, the topic of the article may be easily misunderstood. Robert Kowalski (talk) 09:57, 18 February 2024 (UTC)

 * See for example: https://en.wiktionary.org/wiki/function. Note that the first definition is
 * "What something does or is used for. Synonyms: aim, intention, purpose, role, use."

 * The sixth and seventh definitions are
 * "(mathematics) A relation in which each element of the domain is associated with exactly one element of the codomain. Synonyms: map, mapping, mathematical function, operator, transformation
 * (computing) A routine that receives zero or more arguments and may return a result. Synonyms: procedure, routine, subprogram, subroutine, func, funct"
 * in that order. Robert Kowalski (talk) 14:49, 18 February 2024 (UTC)
 * Yes. #7. Interesting that it starts with 'routine' which seems to be one of the rarest used synonyms. But, that definition is just what this article is about: a thing that has all those names. A thing that does not have just one name that is commonly used and separate from other words. The term 'function' is correct, but it is highly overloaded which of course leads to confusion. This page used to be named 'subroutine', but was renamed in 2022 or something. I think that change was a not good. I also think that 'subroutine' is not a good name since it is so rarely used today. ... This article is about the mechanics of calling -- a technology that probably is much older than the concept of functional programming. The technology surely is used in functional programming, but at a lower level of abstraction. ... Maybe this article should be called 'Function call'. Stevebroshar (talk) 08:10, 19 February 2024 (UTC)
 * When your $3 book arrives in the mail, you'll see on page 141 why Function call is incorrect. The article's current title is correct. Timhowardriley (talk) 10:58, 19 February 2024 (UTC)
 * What about:
 * In computer programming, a function, subprogram, procedure, method, routine, subroutine, is a callable unit that has a well-defined behavior and can be invoked by other software units to exhibit that behavior. Robert Kowalski (talk) 11:04, 20 February 2024 (UTC)
 * I like it. ... even though I think it's inappropriate or something like that :( I did find that NIST reference for callable unit, but... it's not a common term and I think that's relevant. I wish it was common, but my wishing does not make it so. It's an obscure reference that happens to be from a non-obscure publisher. I'm not going to change it though. Maybe this reference will lead to its integration into the lexicon; something wikipedia is not supposed to do ;) Stevebroshar (talk) 14:49, 23 February 2024 (UTC)
 * Tim: still waiting for its arrival. Stevebroshar (talk) 14:50, 23 February 2024 (UTC)

In Mathematics, it is common for a text to begin with a discussion of nomenclature, explicitly steting which of several different conventions is used. IMHO, doing the same thing in Wikipedia articles would be desirable. It doesn't much matter whether the article uses the terms extenal unit, procedure or routine, as long as it notes the existence of alternative nomenclature and is consistent.

Another concept that requires clear nomenclature is the components of a callable unit. Using line is misleading, since a line of source code may contain multiple statement and conversely a statement may spread over several lines. This applies equally to functional and procedural languages. I suspect that it also applies to rule-based languages. -- Shmuel (Seymour J.) Metz Username:Chatul (talk) 14:26, 16 February 2024 (UTC)

 * About 'line': I agree that line can be misleading since some languages allow multiple statements on a line. But ... some don't. I think BASIC does not so talking about lines is OK. Could use statement with BASIC I guess. I'm curious to read the part(s) with 'line' that you think are misleading. Stevebroshar (talk) 11:12, 17 February 2024 (UTC)
 * Yes, in the sections on BASIC the term line is probably okay. However, it is more problematical in #Inlining and #C and C++, since a single line may contain many statements. -- Shmuel (Seymour J.) Metz Username:Chatul (talk) 11:28, 20 February 2024 (UTC)

All the names
@Meownium This article is a PITA due to all the different names that have different meaning, but all refer to something that is so very core to programming ... that itself does not have a general name. The article uses callable unit but it's not generally accepted. It's used as a way to refer to the more general concept. The article is named function even though it's _not_ the most general term. It just happens to be very commonly used today. The article used to be called subprogram.

IMO and due to historical reasons it seems valuable to leave in Subprogram was used long ago but today is antiquated.

WRT adding subprogram to the part about routine/subroutine being like [sub]directory I think is inaccurate. It seems routine and subroutine are a pair like directory and subdirectory. Seems subprogram is not related to [sub]routine in that way. Seems subprogram is related to program in that same way. Stevebroshar (talk) 18:32, 26 June 2024 (UTC)

 * I don't think it's perfectly valid to call "subprogram" an antiquated term as it's still used (though, not as frequently as the other terms featured in the article); but your assessment on roping it in with subroutine/routine is definitely true. I'll go ahead and revise, thank you for the input! Meownium (talk) 00:35, 27 June 2024 (UTC)
 * Who uses subprogram? Stevebroshar (talk) 10:31, 28 June 2024 (UTC)
 * https://www.adaic.com/resources/add_content/standards/05rm/html/RM-6-4.html
 * https://llvm.org/doxygen/classllvm_1_1DISubprogram.html
 * https://www.ibm.com/docs/en/xffbg/121.141?topic=procedures-function-subroutine-subprograms
 * Admittedly, not many. Meownium (talk) 01:42, 29 June 2024 (UTC)
 * I edited it again since there were multiple grammatical errors and overly wordy. Concise is good. I've tried to keep all concepts that you added. Stevebroshar (talk) 13:39, 28 June 2024 (UTC)

What about iterators?
What about iterators, specialized coroutines used, e.g., to control loops? -- Shmuel (Seymour J.) Metz Username:Chatul (talk) 19:44, 27 June 2024 (UTC)

 * An iterator is not a function. It's (basically) an object. Or maybe you mean like C# iterator method. Stevebroshar (talk) 10:30, 28 June 2024 (UTC)
 * Generators then. -- Shmuel (Seymour J.) Metz Username:Chatul (talk) 16:30, 28 June 2024 (UTC)
 * The 2nd sentence of that article: "All generators are also iterators." so same deal. Routines are ubiquitous and used in implementing many things, including these constructs. - R. S. Shaw (talk) 18:42, 28 June 2024 (UTC)

title: Talk:Function (computer programming)


text:
Steve Peters (Ontario politician)

Stephen J. "Steve" Peters (born 19 January 1963) is a former politician in Ontario, Canada, who served as a Liberal member of the Legislative Assembly of Ontario from 1999 to 2011. He served as a Speaker from 2007 to 2011 and was a Cabinet Minister in the government of Dalton McGuinty.

Background
Peters was born in St. Thomas, in the southwestern section of Ontario. Both of his parents were the children of Ukrainian immigrants. He was educated at the University of Western Ontario, and received a Bachelor of Arts degree in history in 1985. Peters subsequently worked as an archivist at Victoria Hospital in London, Ontario, and at Alma College in St. Thomas. He also worked as a stock clerk at an A&P food store in St. Thomas.

Politics
Peters began his political career at the municipal level, being elected to the St. Thomas city council in 1988. He became the city's mayor in 1991, and was the youngest mayor in the country at the time. Peters was re-elected by significant majorities in 1994 and 1997.

Peters ran as a candidate of the Ontario Liberal Party in the 1999 provincial election. He defeated incumbent Progressive Conservative (PC) MPP Bruce Smith in the riding of Elgin—Middlesex—London by 1,171 votes.

The election was won by the Progressive Conservatives, and Peters became the opposition critic for Disability issues on 26 June 1999. In September 2000, he was named opposition critic for Agriculture. For the next three years, most of his interventions in the legislature were focused on agricultural and rural issues.

Peters was easily re-elected in the 2003 provincial election, receiving over 57% of the vote. Bruce Smith, again running for the Progressive Conservatives, received just over 30%. The election was won by the Liberals and Peters was named Minister of Agriculture and Food on 23 October 2003. In late September 2004, he announced that the provincial government would provide $30 million to farmers affected by the BSE crisis, which had prevented Canadian beef from reaching the American market.

He was named as Ontario's Minister of Labour following a cabinet shuffle on 29 June 2005.

Though he was re-elected in the general election of October 2007, he was dropped from cabinet in a post-election cabinet shuffle. On 28 November 2007, he was elected by his fellow members as the Speaker of the Legislative Assembly on the fourth ballot, defeating Michael A. Brown, Ted Arnott, David Zimmer and Lorenzo Berardinetti.

On 9 November 2010, Peters announced that he would not be seeking re-election in the 2011 Ontario general election.

In 2013, he supported Gerrard Kennedy in his bid to become leader of the Liberal Party. The leadership race was won by Kathleen Wynne.

After politics
After leaving the legislature, Peters became executive director of the Alliance of Ontario Food Processors.

Peters was elected to St. Thomas City Council in 2018.

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: Steve Peters (Ontario politician)


text: User talk:65.34.255.92

title: User talk:65.34.255.92


text: User talk:65.10.16.181

title: User talk:65.10.16.181


text: User talk:69.19.183.79

title: User talk:69.19.183.79


text: User talk:130.237.122.245

title: User talk:130.237.122.245


text:
Poses (album)

Poses is the second studio album by the American-Canadian singer-songwriter Rufus Wainwright, released through DreamWorks Records in June 2001. The album was recorded, mixed, and produced by Pierre Marchand, with select tracks produced by Propellerheads' Alex Gifford ("Shadows"), Ethan Johns ("California"), Damian LeGassick ("The Tower of Learning"), and Greg Wells ("Across the Universe").

Poses contains ornate, piano-driven arrangements that cite a wide variety of musical sources, from "indie pop to Gershwin to trip-hop and back again." The album took a year and a half to record, with most of it written during Wainwright's six-month stay at the Chelsea Hotel. While Poses continues the enveloping sound established by Wainwright's debut album, collaborations between Wainwright and various producers and guest musicians pushed it in different directions, resulting in drum loops, "gritty beats in unexpected places", and a "fuller, live" sound. Using fewer operatic elements than the previous album, in an attempt to create a more radio-friendly pop record, Poses addresses debauchery and love in less esoteric means. Guests on the album include Wainwright's sister, Martha Wainwright, fellow singer-songwriter Teddy Thompson, and rock musician Melissa Auf der Maur.

All tracks were written by Wainwright except for "Shadows", which was co-written by Alex Gifford, and "One Man Guy", a song written and originally performed by Wainwright's father, Loudon Wainwright III. The bonus track "Across the Universe" is a Lennon–McCartney song that Wainwright recorded initially for the 2001 film I Am Sam, and later re-recorded with producer Greg Wells for Poses.

Poses debuted at No. 117 on the Billboard 200, and Wainwright ranked No. 1 on Billboard magazine's Top Heatseekers chart. He won the Outstanding Music Album award at the 2002 GLAAD Media Awards, and at the Juno Awards of 2002 was nominated for Best Songwriter and took home the award for Best Alternative Album. Several years following its release, Poses was certified gold by the Canadian Recording Industry Association and included on Mojo's "100 Modern Classics" list and on Out magazine's "100 Greatest, Gayest Albums" list.

Development
Wainwright's goal was to make a pop record to "show that [he] can get up from behind the piano and that [he's] actually pretty compatible with other people of [his] age out there." He teamed up with producer Pierre Marchand, a family friend who often worked with Wainwright's mother and aunt (Kate and Anna McGarrigle), and had helped him record several demo tapes prior to being signed to DreamWorks. Musicians Melissa Auf der Maur and Teddy Thompson also appear on the album, as does Wainwright's sister Martha Wainwright. Several tracks were produced by Greg Wells, Alex Gifford, Ethan Johns, and Damian LeGassick. The album took a year and a half to record – half the time it took him to record his first album.

According to Wainwright, Poses grew thematically out of its title track, which was inspired by his residency at New York City's infamous Chelsea Hotel. Referring to his stay there, he recalled: "I went to all these parties and met all these people and found that, basically, it's like a big revolving door. I thought if I could look at it as a series of poses and extract from it what I needed for my songs, then I would survive." Describing his writing process, Wainwright stated he typically comes up with a melody line and starts singing phonetically, from which words often appear. To promote the album prior to its release, Wainwright embarked on a tour throughout the United States and Canada.

Songs and themes
Debauchery is a primary theme throughout the album, stemming from Wainwright's struggles with addiction and quest for fame. "Cigarettes and Chocolate Milk" best reflects this motif, directly addressing decadence and desire ("Everything it seems I like's a little bit sweeter/A little bit fatter, a little bit harmful for me"). The song has been called an "ode to subtle addictions and the way our compulsions rule our lives." The music video for "Cigarettes and Chocolate Milk", directed by Giles Dunning and released by DreamWorks in 2001, features Wainwright performing the song at a piano inside a warehouse and scenes of him walking around New York City.

Asserting that successful pop albums evoke a particular lifestyle that other people have experienced, Rolling Stone's Ben Ratliff claims Poses does just that, manifesting the "young, gay, narcissistic achiever in New York". "But", Ratliff clarifies, "the Chelsea Boy is only a magnified version of practically every kid new to a big city who's got a job and an apartment and worries about weekend plans: The Chelsea Boy just has sharper clothes, higher standards of beauty and a better tradition of mordant humor to console himself with."

An "ode to queer love", "Greek Song" touches on beauty, passion, and adventure while incorporating Asian string instruments. The melody was taken from the "Cherry Duet" in Pietro Mascagni's opera L'amico Fritz.

Pitchfork's Joe Tangari complimented the title track, stating that it "stands as one of Wainwright's finest songs, with an aching melody and Spartan piano backing." The song is semi-autobiographical, mirroring Wainwright's struggles with addiction and desire for fame ("I did go from wanting to be someone/Now I'm drunk and wearing flip-flops on Fifth Avenue").

Coated with thickly layered vocal harmonies, "Shadows" was co-written and produced by Propellerheads' Alex Gifford. Rolling Stone said the following of the track: "['Shadows'] keeps a dry funk drumbeat, a dab of piano chords, some low clarinet lines and, finally, a swarm of seraphic, multitracked voices; it's one of the many songs on the album that build up to moments of cinematic perfection, in which your goose bumps are exactly the ones Wainwright intended." The programmed beats on "The Tower of Learning" were contributed by contemporary composer Damien LeGassick.

The music video for "California", also directed by Giles Dunning, features Wainwright performing the song karaoke-style while reading lyrics from a monitor that projects a black-and-white video of Rufus and Martha dressed in 1940s garb. The video also features Wainwright and his band performing the song out of character.

"The Tower of Learning", originally written for Baz Luhrmann's 2001 film Moulin Rouge!, was resurrected when Wainwright "saw this guy whose eyes were very beautiful, and all of a sudden the whole subject of falling into someone's eyes and how electrifying that can be" inspired him. "Grey Gardens" is a tribute to the documentary film of the same name and Thomas Mann's Death in Venice, written as if Tadzio (a character from the novel) is in the Beales' mansion and Wainwright is "Little Edie".

"Rebel Prince", once described as flag-wavingly homoerotic, tells the story of a hotel resident waiting for his prince to rescue him before he "[rids his] dirty mind of all of its preciousness." Written from the perspective of a companion praising his queen, "The Consort" sounds of a "dusty minuet beamed in from the harpsichord Elizabethan age." "One Man Guy", originally written by Wainwright's father (folk musician Loudon Wainwright III), features vocals by friend Teddy Thompson and Wainwright's sister Martha Wainwright. Tangari called the cover "faithful and endearing", admitting Wainwright's performance "proves [he] has at least a touch of dad's folk roots in him."

Wainwright said the following of "Evil Angel": "'Evil Angel' is an interesting song. It's actually to do with a journalist who, uh... I was in France at the time and quite delicate... and this guy basically seduced me in Strasbourg... he gave me a tour of the town and it was very romantic, and we did actually make out in the middle of this town square... and then I went and did the show and I never heard from him again. And I just felt incredibly used. I think a lot of it has to do with, once you get into this business, you do have to become some kind of a machine. You do have to be heartless at times and be able to plough through certain situations. I don't want to totally become that person, but it's good that I'm thinking about it."

The simple "In a Graveyard" has been described as a "soulful reflection on moribund themes that momentarily leaves the oboes and strings at the door for a direct heart-to-heart with the listener." The music video for "Across the Universe", originally used to promote I Am Sam, was directed by Len Wiseman and released through V2 Records. The Lennon–McCartney track appeared on the soundtrack to the film, but was re-recorded to become a bonus track for the reissue of Poses.

Critical reception
Overall, reception of the album was positive. Allmusic's Zac Johnson called the album "spectacular", "brimming over with Wainwright's trademark popera and young romantic wishes." He further described Poses as "beautifully discordant and sonically chilling", but an album that "often hints at warm grins with mischievous winks." In his review for Pitchfork, Joe Tangari characterized Poses as an "epic album that speaks with grand gestures and a refined eloquence rare in young songwriters." In addition, Tangari complimented Wainwright's ability to express himself and suggested that his voice had improved, becoming less of an acquired taste. Blender's Lisa Gidley asserted the album cemented Wainwright as the "most sardonic iconoclast", and that well-worn topics from obsession to culture shock are "skewered in fresh ways." Raidió Teilifís Éireann contributor Tom Grealis stated Poses is "infused with a rare charm and wit, magnified by Wainwright's sharp lyrical touch and vocal melodies", and that "Papa must be proud."

Some were more critical of the album. Referring to the numerous producers and guest artists who collaborated with Wainwright on the album, Johnson stated the album's "'group' feel suffers only slightly from being less intimate" than Wainwright's debut album. The Guardian's John Aizlewood praised Poses for being brighter and more focused than Rufus Wainwright, but described the title track as dreary and "Shadows" as "schmaltzy". Sal Cinquemani of Slant described Wainwright as "gloriously pompous", partly due to the "pretentious" French verses and the "blaring" French horns sprinkled throughout the album.

Following is a table of 2001 "end of year" list placements by various publications:

Commercial performance
While album sales were limited, with Poses debuting at No. 117 on the Billboard 200, Wainwright ranked No. 1 on Billboard's Top Heatseekers chart. The album failed to chart in any other countries. In 2004, Poses reached No. 103 on the Billboard 200. As of 2002, sales in the United States have exceeded 137,000 copies, according to Nielsen SoundScan.

Wainwright was nominated for Solo Artist of the Year in the music category of GQ magazine's 2001 Men of the Year awards. For its critical acclaim and success within the gay community, Poses was awarded Outstanding Music Album at the 2002 GLAAD Media Awards, an awards ceremony sponsored by the Gay & Lesbian Alliance Against Defamation (GLAAD). At the Juno Awards of 2002, Wainwright was nominated for Best Songwriter for "Poses", "Cigarettes and Chocolate Milk", and "Grey Gardens"; Poses won the award for Best Alternative Album. Mojo magazine's "100 Modern Classics" list, published in 2006, placed the album at No. 95. In September 2007, Poses was certified gold by the Canadian Recording Industry Association. In 2008, Out magazine ranked Poses No. 50, and Wainwright's third studio album, Want One, No. 80 on their "100 Greatest, Gayest Albums" list.

Personnel

 * Rufus Wainwright – vocals (1–13), piano (1,3–9,12–13), string arrangements (1–3,11,13), dobro (2,5), acoustic guitar (5,11), keyboards (7), guitar (8)
 * Stephanie Allard – violin (1,3,11,13)
 * Carla Antoun – cello (1,3,11,13)
 * Gregg Arreguini – guitar (8–9)
 * Melissa Auf der Maur – bass guitar (11), backing vocals (11)
 * Genevieve Beaudry – violin (1,3,11,13)
 * Melanie Belair – violin (1,3,11,13)
 * Jeffrey Bunnell – trumpet (9)
 * Brigid Button – violin (6)
 * Sarah Button – violin (6)
 * Butch Norton – drums (5), percussion (5)
 * Richard Causon – chamberlin (5), Wurlitzer (5), Hammond B3 (5), backing vocals (5)
 * Michael Vincent Chaves – guitar (8–9)
 * Bernadette Colomine – backing vocals (2)
 * Yves Desrosiers – banjo (1,13), guitar (1–2,11,13), slide guitar (2), mandolin (2)
 * Julie Dupras – viola (1,3,11,13)
 * Laura Fairhurst – cello (6)
 * Dennis Farias – trumpet (9)
 * Normand Forget – oboe (1,3,11,13)
 * Alex Gifford – bass guitar (4), guitar (4), piano (4), alto flute (4), bass clarinet (4)
 * Christine Giguere – cello (1,3,11,13)
 * Greg Hay – viola (1,3,11,13)
 * Jeff Hill – bass guitar (1,3,5,11,13), backing vocals (5)
 * Wilma Hos – viola (1,3,11,13)
 * Kevin Hupp – drums (2–3,11)

 * Victor Indrizzo – additional drums (8)
 * Ethan Johns – electric guitars (5), drums (7), guitar (7)
 * Jim Keltner – drums (1,9,13)
 * Jean-Marc LeBlanc – violin (1,3,11,13)
 * Damian LeGassick – keyboards (6), drum programming (6), guitar (6), string arrangement (6)
 * Jon Lewis – lead trumpet (9)
 * Pierre Marchand – string arrangements (1–3,11,13), bass (2,7–9), piano (2)
 * Ally McErlaine – guitar (6)
 * Jean Paquin – French horn (1–2,11,13)
 * Veronique Potuin – viola (1,3,11,13)
 * Ian Rathbone – viola (6)
 * Julianna Raye – backing vocals (5)
 * Daniel Savant – leader (9)
 * Pierre Savoie – French horn (1–2,11,13)
 * Steve Sidelnyk – drum programming (6)
 * Hilary Skewes – cello (6)
 * Ash Sood – drums (8)
 * Anjana Srinivasan – violin (2,3)
 * Benmont Tench – Hammond B3 organ (7)
 * Pete Thomas – drums (4), percussion (4)
 * Teddy Thompson – backing vocals (5,10), guitar (10)
 * Martha Wainwright – backing vocals (3,5,8,10–11)
 * Rebecca Ware – viola (6)
 * Greg Wells – drums (13), bass guitar (13), additional keyboards (13)
 * Pete Wilson – bass guitar (6)

title: Poses (album)


text:
User:Pearle

'''NOTE: This bot has been offline for a few years due to a change in database dump format and replacement of most functionality by other bots. This page is retained for historical reference. My current Wikipedia coding project is Typo Team/moss. -- Beland (talk) 04:07, 9 July 2021 (UTC)'''

Greetings, humans. My name is Pearle Wisebot, and I am an artificial intelligence created by User:Beland. Guess what programming language I am implemented in!

Checkup

 * Category:Pearle edits needing manual cleanup
 * Category:Articles to check for link ordering

Help
I need some tips or help from you an expert for my article HSV Senator Signature. Senators 10:28, 04 November 2006 (UTC) (australia)

Todo

 * The ADD_CFD_TAG template should be updated and tested to point people to the right discussion. (See talk page.)
 * Do another run to clear msg: syntax?
 * After the current meta cleanup on WP:CFD, do another ENFORCE_CFD scan on Category:Categories for deletion, especially R-Z, to see if articles are there than shouldn't be.
 * Unfortunately, this requires some code changes, since the introduction of templates to WP:CFD
 * Add logic to ENFORCE_CFD command that checks if there are categories on WP:CFD that aren't tagged.
 * If the superlist at User:Pearle/categories-alpha is useful, perhaps it should be ported to a Wikipedia:Namespace? -SV|t 18:09, 17 May 2005 (UTC)
 * Should another msg: run be done? Though depreciated, it appears the software still supports it, and people are still using it. -- Beland 20:32, 28 August 2005 (UTC)

Status
In general:
 * Updates to Template:Opentask occur every day or so.
 * Sorting Category:Wikipedia cleanup now occurs at least weekly.
 * Automation for category-moving is implemented and is in use. WP:CFD is the main source of requests.
 * See also /on-deck.
 * Regular uploads of the alphabetic category listing are occurring (each database dump).

Testing

 * wikify-date sorting, notice posted on Bots/Requests for approvals

 * Algorithm: The same as for cleanup-date. The  tag and known redirects are replaced by  .  Pearle will look at previous versions in the page history, at one-month intervals, to determine the month in which the tag was originally assigned.  This is intended to make it easier to use Category:Articles that need to be wikified in a first in, first out fashion.

 * Automatic updates for WP:PNA, request posted on Bots/Requests for approvals

Done

 * The first two large geographic categorization runs for Auto-categorization are complete.
 * Cleanup runs for misclassified CDPs are posted on Auto-categorization. (Fixed by the Rambot.)

A note about WP:CFD and blocking the bot
Pearle has been blocked a few times while in the process of deleting or renaming categories. Typically, an admin will come along, check WP:CFD, not find the discussion in support of the change, and throw up a block. The last time this happened, User:Beland was also auto-blocked, because his edits came from the same IP address. This temporarily prevented discussion about the bot's activities on talk pages.

Pearle does not rename categories without a preceding WP:CFD discussion. Not all such discussions are listed on the main page. Also, there are some "umbrella" renames in which a convention is decided, but not all the categories which need to be renamed are explicitly listed. Please take a careful look through the by-date subpages before concluding there was no consensus to change. There may be legitimate reasons to stop a move - sometimes people using the WP:CFD page don't tag the affected categories as requested, for instance, or there might be a good reason overlooked in the discussion. On the other hand, the bot can just as easily move things back the way they were as it can change them in the first place, so while certainly effective, blocking on sight in these situations might be a bit hasty. Or maybe not. In any case, please do check WP:CFD throughly, and make a nomination to undelete or unrename if you think the original decision was wrong.

Kbdank71 does a lot of work on WP:CFD, and has kindly offered to help folks find archived discussions if they are having trouble.

Authorized behavior
Pearle Wisebot has obtained authorization from Wikipedia talk:Bots and has been marked as a bot for the purpose of executing the following tasks. All tasks are performed by User:Beland running Pearle and using data files on his home computer in the following formats.

Alphabetical list of categories

 * 1) Generate a plaintext list, sorted alphabetically, of all categories that existed in the database or were linked to or from an article or subcategory in the latest database dump.  (This is done offline.)
 * 2) Post this list (plus introductory material) to User:Pearle/categories-alpha by completely replacing its contents.  Currently this is 600-700k in length.

Automatically move categories
(Reminder: Run TRANSFER_TEXT_ACTUALLY first!)

 * Parse a file and match commands of the form:
 * MOVE_CONTENTS Category:Name_of_A Category:Name_of_B

 * Download Category:Name_of_A
 * Parse the page to extract all of its member articles and subcategories.
 * For each member, replace all instances of, with  , preserving sort fields.  Members that contain any nowiki or pre tags in the wikisource will be skipped.

Moving a category is the equivalent of deletion, so this function will only be run on commands that have been approved by Categories for deletion.

Auto-categorization of articles and categories

 * 1) Parse a file and match commands of the form:
 * ADD_TO_CAT Page_name Category:Category_name

 * 1) Download the wikisource of Page_name
 * 2) Abort if the string "" (case insensitive) already appears in the page text
 * 3) Add the string  on a new line at the bottom of the article.

Advance notice of at least three days on Auto-categorization will be given before automatically-generated lists of articles and categories are fed in.

Remove articles from a category

 * 1) Accept commands of the following form:
 * REMOVE_X_FROM_CAT Page_name Category:Category_name

 * 1) Download the wikisource of Page_name
 * 2) Remove the string  from the text
 * 3) Post the new text

Tag categores with
Categories nominated to Categories for deletion need to be tagged with or similar template to inform watchers of the potential deletion or renaming. Pearle can do this with commands of the form:
 * ADD_CFD_TAG Category:Category_name_here

For nominations en masse, the tag should be changed to e.g.:

Old behavior
When a category is renamed, the introductory text in the old category (which also defines the parentage of the category) must be moved to the new location. The command:

 * TRANSFER_TEXT_ACTUALLY Category:Old_category_name Category:New_category_name

...will do this, plus leave a pointer behind in the old category and a short message to let readers know what is going on. If the new category already exists, the command attempts to merge the two lists of parent categories and concatenates the intro texts. For this reason, the output of this command must be manually checked to see if the new intro needs to be fixed.

Some editors have requested that this step be taken before the member articles and subcategories are moved.

 * TRANSFER_TEXT_CHECK Category:Old_category_name Category:New_category_name

can be run to check for intros that will need to be manually fixed when TRANSFER_TEXT_ACTUALLY is run, but without doing any edits.

New behavior

 * TRANSFER_TEXT_ACTUALLY Category:Old_category_name Category:New_category_name

is automatically run before a category rename. A message is left in Category:Old_category_name with a pointer to Category:New_category_name. The introductory text from Category:Old_category_name is moved to Category:New_category_name. If there was already some text in the new category, the new category is tagged and shows up in Category:Pearle edits needing manual cleanup.

REMOVE_CFD_TAG

 * See Wikipedia talk:Bots

New category/interwiki style
Minor changes and bugfixes may occur in response to community complaints or suggestions.

Rules

 * Pearle should attempt to do a category/interwiki cleanup whenever it edits an article, but there will be no mass cleanup run (except for articles already edited by Pearle) unless requested.
 * HTML comments on the same line following a category or interwiki tag will remain there. Any other text there will trigger a flag for review.
 * If a category or interwiki tag is found in the "body text" area, it will be flagged for review.
 * Canonicalize "zh-cn" (Chinese simplified) and "zh-tw" (Chinese traditional) to "zh" because the simplified/traditional distinction is now being solved in software.
 * Canonicalize "minnan" to "zh-min-nan", since only the latter is in the official, automatically updated list.
 * Canonicalize "nb" to "no", since only the latter is in the official, automatically updated list. (Added after observing the need for this in practice. -- Beland 4 July 2005 17:03 (UTC))
 * Canonicalize dk to da. (Same as above. -- Beland 02:48, 25 August 2005 (UTC))
 * Multi-line HTML comments must be preserved
 * Separate category and interwiki links mashed together on the same line.
 * Don't change interwiki link sort order.

Algorithm

 * Break the article up into segments, each of which is tagged. Use two arrays, one for content, and one for names.

 * Parse input into segments, each of which is labeled by type.
 * Find nowiki tags everywhere.
 * Find comment tags everywhere else.
 * Find HTML tags everywhere else.
 * Find category links everywhere else.
 * Find interwiki links everywhere else.
 * Find template tags everywhere else.
 * Lump html tags following a category segment (except category and interwiki links) until the next newline into the category segment.
 * Lump everything following an interwiki segment (except category and interwiki links) until the next newline into the interwiki segment.
 * The remainder of the page will be tagged as body text.
 * Move any category or interwiki links at the top of the page to the very bottom.
 * Move before the category links, preserving whatever whitespace preceded or followed them.
 * Delete these comments near the category/interwiki section (case and whitespace insensitive):

 * Determine whether or not the page should be flagged for manual review. Find the last non-category, non-interwiki segment.  If there are any interwiki or category links before this segment, flag the page for manual review by adding a template at the end.
 * If the page has not been flagged: consolidate all interwiki links at the end, preceded by category links, preceded by all other segment types. Be sure to retain the original order of segments in each of the three groups.
 * If there are interwiki links, precede them with a line that says:
 * This practice has been discontinued at the request of User:Cburnett.
 * This practice has been discontinued at the request of User:Cburnett.

msg: syntax cleanup
The syntax is depreciated in favor of. Pearle is authorized to make this change wherever it is needed. was rumored to break in MediaWiki 1.5, though it is apparently still working.

Template:cleanup-date conversion
I have created Template:cleanup-date to replace Template:cleanup. It is intended to make it easier to use Category:Wikipedia cleanup in a first in, first out fashion. Pearle is now authorized to change cleanup tags to cleanup-date tags. For all remaining uses of the cleanup tag, Pearle will look at previous versions at one-month intervals, to determine the month in which the tag was originally assigned. Per-month pages in Category:Cleanup by month should be sorted through by hand (for many of the articles there are either already cleaned up, or were never tagged in the first place), and the appropriate tags applied. -- Beland 23:39, 17 August 2005 (UTC)

 * Template:cleanup-date has been obsoleted by an upgrade to Template:Cleanup. -- Beland 22:51, 13 December 2005 (UTC)
 * This has been reverted, so that cleanup-date is still needed. -- Beland 03:30, 20 December 2005 (UTC)

Template:Opentask updates
How it works:
 * After downloading the wikitext for Template:Opentask, Pearle looks for pre-defined HTML comments, like and . Everything between these comments is replaced by a list of articles.  The list is no longer than a pre-defined number of characters, to keep the line width reasonable.  The updated wikitext is then posted to the live site.  Pearle keeps an offline record of how many times each article is featured for a given category, so that Beland can monitor effectiveness.  The update is run once a day, and Beland report each time to make sure that the bot is working properly at that it has not run out of articles for any of the lines.  The report also notes if any articles have been featured more than 7 times without being fixed, so that they can be reported to the Cleanup Taskforce.

Rationale:

 * This template used to be maintained manually, but that was a lot of work, and articles would generally be left on until they were fixed. This meant that editors had to check all the selected articles, every day, to see whether or not they had been fixed. Some lines got "stale" and productivity suffered.

 * Now, Pearle supplies a completely fresh batch of articles every day. Because she remembers which articles have been featured in the past, she can cycling through the whole list for each category, only recycling entries once all articles have gotten a chance to be featured. Hopefully this increases the chances that editors will serendipitously spot an article of interest to them on the template.

 * Instead of relying on interested editors to pick their personal favorites to feature, Pearle draws from a broader pool of candidates, to more evenly distribute publicity.

How articles are chosen:

 * For most lines, there is a specific category to pull from. Pearle looks at the live site to get a complete list of articles in that category.  This is compared to the list of articles that have been featured in the past.  Articles are given a rank, with less-frequently-featured articles first, and after that a random sort.  The highest-rank articles are added to the list, and if there's room for short lower-rank titles, those are also added.

 * The above-described mechanism is used for:
 * Category:Articles to be expanded
 * Category:Wikipedia articles with style issues
 * Category:Wikipedia articles in need of updating
 * Category:Wikipedia articles needing factual verification
 * Category:Articles that need to be wikified
 * Category:Articles to be merged
 * Category:NPOV disputes

 * The same mechanism is used for cleanup, but it combines several categories:
 * Category:Wikipedia articles needing priority cleanup
 * One or more of the oldest months from Category:Cleanup by month

 * The same selection algorithm is also applied to stubs in an HTML comment-delimited area on Most wanted stubs. Lines that start with anything other than "# [[" are skipped.  This means that stubs which are struck through are not selected.  Pearle relies on human editors to keep this list up to date, but that's easier than maintaining both this page and Template:Opentask.  It's also not much harm if a non-stub gets a little extra attention before it is purged from the Most Wanted page by an update from a new database dump.

 * Requested articles are selected in the same way from Articles requested for more than a year. Only article links appearing at the beginning of a line will be selected.  (This is for compatibility with a different bot that maintains this page.)  When the backlog on this page has been reduced to more manageable levels, Most wanted articles (which is a little harder to parse) will also be added.  A bot removes bluelinks from "Articles requested for more than a year", but human editors are needed to keep "Most wanted articles" free of them.

 * A similar mechanism is used for Category:Wikipedia articles needing copy edit; the only difference is that all articles in the category are given equal priority. This is because this category has very high turnover, and we want articles that are "stuck" to be featured occasionally, so they will eventually be reported to the Cleanup Taskforce if they don't get fixed.

Offline reports
Using database dumps, Pearle can make offline reports. The following are uploaded automatically:

 * User:Pearle/categories-alpha (~700k!) contains a plaintext list, sorted alphabetically, of all categories that existed in the database or were linked to from an article or subcategory in the latest database dump.

The following Beland manually uploads:

 * Pearle helps produce the reports found on Auto-categorization.
 * todo.orphaned-categories.txt - Manually posted to Category:Orphaned categories after excluding those recently listed there or on CFD.
 * todo.funny-categories.txt - Categories with unusual characters in their names. After each database dump, Beland marks these as "OK, ignore" or fixes them.  This includes categories with double spaces, because doing this check online would have very little benefit for a lot of additional server load.

By request
Note: Instead of waiting for me to get around to running Pearle to generate category reports, you can now use a live web tool!

 * Pearle can generate reports showing the tree structure of category space from any starting point, to an arbitrary depth. Leave a message on User talk:Beland if you would like a tree generated.  Please specify the starting category, direction (up or down), whether or not you want non-category elements (like articles) included, and you may optionally specify a maximum depth.
 * Reports on categories or articles that have particular terms in a title, or appear in a particular part of category space are also easily made.

Download
You cannot run the Pearle bot itself, but you can run a clone, if you apply for permission and follow the other setup instructions in the documentation. Contributions are also welcome.

 * User:Pearle/pearle.pl - Updated 12 Nov 2005
 * User:Pearle/pearle-documentation.txt
 * User:Pearle/cookies.fake.txt

How do I use this thing?
If you wish to move or delete a category, please make a nomination on WP:CFD. If you want to clone Pearle (not a simple, fast thing to do), you can download the code. For all other requests, feel free to leave a note on User talk:Beland asking for a certain command to be run on the original bot.

title: User:Pearle


text:
Wade Barrett (soccer)

Wade Barrett (born June 23, 1976) is an American former soccer player. He was most recently the interim head coach of the Houston Dynamo in Major League Soccer.

College
Barrett was born in Virginia Beach, Virginia, and played college soccer at the College of William and Mary from 1994 to 1997, where he scored thirty-eight goals and twenty-six assists, and was voted an NSCAA All-American in his senior season.

Professional
Barrett was drafted twelfth overall in the 1998 MLS College Draft by the then-San Jose Clash. Barrett was a consistent contributor for the Earthquakes in his first two seasons, being slowly converted from a midfielder to a defender, but was sidelined by groin injuries in the 2000 season that forced him to miss much of the year. Barrett returned in 2001 and proved himself to be one of the best defenders in MLS, playing left back for a San Jose team that would win the 2001 MLS Cup. Barrett cemented his position in 2002, continuing his exceptional play at left fullback, and in recognition was named to the 2002 MLS Best XI. In five years in the league, he scored five goals and made twenty-two assists.

Barrett left MLS after the 2002 season to pursue opportunities in the United Kingdom. Barrett first signed with Danish club AGF Aarhus, with whom he spent the latter half of 2002 and much of 2003, but was unable to establish himself as a regular starter. Barrett opted to leave the club in July 2004 in order to join Fredrikstad FK in Norway, joining fellow American Brian West.

He left Scandinavia in January 2005, re-signing with San Jose and winning the MLS Supporter's Shield in his first season back. Along with the rest of his teammates, he moved to Houston to become part of the Dynamo for the 2006 season.

In each of the Dynamo's first two seasons, Barrett and his teammates finished second in the Western Conference but won the MLS Cup championship. As the Dynamo's captain, Barrett lifted the championship trophy each year. He played in sixty-one of the team's sixty-two regular season games in its first two seasons.

Barrett retired prior to the start of the 2010 season, and transitioned into an assistant coaching role for Dynamo. As of June 7, 2016, Barrett has been named the interim head coach of Dynamo for the remainder of the 2016 season.

International
As of March 2007, Barrett has earned two caps for the U.S. national team, the first one coming November 17, 2002, against El Salvador. He was called into camp for the U.S. for an October 8, 2005, World Cup qualifier against Costa Rica, but suffered a hamstring injury in training that prevented him from appearing in the match. In March 2007, Barrett was again called into camp for the national team in preparation for friendlies against Ecuador and Guatemala, and was brought into the game against Guatemala as a second-half substitute.

San Jose Earthquakes

 * MLS Cup (1): 2001
 * MLS Supporter's Shield (1): 2005

Houston Dynamo

 * MLS Cup (2): 2006, 2007

Houston Dynamo

 * MLS Best XI: 2002

title: Wade Barrett (soccer)


text:
Jaime Moreno (footballer, born 1974)

Jaime Moreno Morales (born 19 January 1974) is a Bolivian former professional footballer now serving as Youth Academy Technical Training Coach for D.C. United in Major League Soccer, and as the head coach of D.C. United's U-23 side.

Moreno began his career at Club Blooming and then played for Colombia's Independiente Santa Fe before spending two seasons at the English club Middlesbrough. The rest of his career was spent at D.C. United apart from one season at the New York MetroStars in 2003, and he was the all-time leading scorer in Major League Soccer at the time of his retirement in 2010. On 22 August 2007, in a match against the New York Red Bulls, he scored his 109th MLS goal, surpassing the previous league record set by former Dallas Burn and Real Salt Lake forward Jason Kreis. On 17 April 2009, Moreno became the first MLS player ever to reach the mark of 100 goals and 100 assists when he assisted on a Ben Olsen stoppage time goal.

From 1991 to 2008, Moreno played 75 matches for the Bolivia national team, scoring eight goals. He represented the nation in five Copa América tournaments and the 1994 FIFA World Cup.

Club career
Moreno was born in Santa Cruz de la Sierra, Bolivia. He began his career attending the prestigious Tahuichi Academy and playing for Blooming from 1991 to 1994. He signed with the Colombian side Independiente Santa Fe in 1994, but made only five league appearances for the team.

In 1994 Moreno signed with Middlesbrough, and the following season he became the first Bolivian to play in the English Premiership. Moreno started in Middlesbrough's official opening of their new Riverside Stadium in a friendly against Italian side Sampdoria. He spent two years there, mostly coming off the bench. In total he made 20 league appearances for Boro, but only scored one league goal against Barnsley, also scoring another goal against A.C. Cesena in the Anglo-Italian Cup.

In 1996, in the middle of the Major League Soccer season, he was signed by the league and allocated to D.C. United, and helped lead them to the MLS Cup. He was one of the league's best players in 1997, when he led the league in goals (16), was named to the MLS Best XI and won another MLS Cup for his side (he would add a third Cup and another Best XI in 1999). After the 1997 season, he spent a few games on loan back to Middlesbrough, scoring once against Stoke City.

1998 was Moreno's best season, as he scored 16 goals and added 11 assists, only losing the MLS MVP Award to teammate and fellow Bolivian Marco Etcheverry. He continued to play well amid constant concerns about his weight, but injuries began to take toll in 2001. He missed a large chunk of the 2002 season, and a conflict with head coach Ray Hudson led to Moreno being traded to the MetroStars after that season.

Moreno missed most of his one season with the Metrostars, but did score two goals, one against United. He was shipped back to United before the 2004 season and, undertaking a strict training regimen to avoid injuries, regained much of his old form. He was a finalist for MLS MVP, was named to the league's Best XI for the second time, and led D.C. to their fourth MLS Cup. He was named to another Best XI in 2005. He was named to the MLS All-Time Best XI after the 2005 season.

In 2007, he scored his 108th goal on a penalty kick against Toronto FC on 19 May, tying him with Jason Kreis as the all-time leading scorer in MLS. Moreno and Steve Ralston are the only players to have played in each of the first 15 MLS seasons. On 12 August 2010, Jaime Moreno and D.C. United announced that the 2010 season would be his last year with the club. His last game was at home against Toronto FC on 23 October 2010, where he scored on a penalty kick.

After the 2010 MLS season D.C. United declined Moreno's contract option and he elected to participate in the 2010 MLS Re-Entry Draft. When he was not selected, Moreno retired as a player and was hired as Youth Academy Technical Training Coach for D.C. United on 4 March 2011.

International career
Moreno was a regular on the Bolivia national team for most of the 1990s and played in the 1994 FIFA World Cup and the 1997 Copa América, but had been ignored for six years until recalled in 2007 for a friendly with Ireland. He played in the 2007 Copa América, where he scored his eighth international goal in the 39th minute of Bolivia's opening game against the host nation of Venezuela. He also scored in the 24th minute against Peru, though it was not enough for Bolivia to advance from the group stage.

Moreno announced his retirement from international football in October 2008, after 75 appearances and nine goals scored for his country. He played in 23 FIFA World Cup qualification matches and at the 1999 Confederations Cup.

Managerial career
D.C. United announced on 1 March 2011 that Moreno had been named the club's Youth Academy Technical Training Coach.

On 5 May 2011; six months after his retirement, Moreno was hired by his former club, D.C. United, to coach their U-23 side. The team represents the highest tier in United's Academy, and will begin playing in the Premier Development League, the fourth division in American soccer in 2012.

Post-playing career
On 14 September 2013, Moreno was inducted into the D.C. United Hall of Tradition at halftime of a match against the Los Angeles Galaxy at RFK Stadium.

On 2 October 2021, Moreno was inducted into the National Soccer Hall of Fame.

Personal life
Moreno and his wife, Louise, reside in Loudoun County, Virginia, with their five children. Moreno's oldest son, James, 15, has been invited to train with Premier League club West Ham as of 20 October 2010.

International

 * Scores and results list Bolivia's goal tally first, score column indicates score after each Moreno goal.

Honors
D.C. United
 * Major League Soccer MLS Cup: 1996, 1997, 1999, 2004
 * Supporters' Shield: 1997, 1999, 2006, 2007
 * Lamar Hunt U.S. Open Cup: 1996, 2008
 * CONCACAF Champions' Cup: 1998
 * Copa Interamericana: 1998

Middlesbrough
 * Football League First Division: 1994–95

Individual
 * MLS All-Star: 1997, 1998, 1999, 2000
 * MLS Best XI: 1997, 1999, 2004, 2005, 2006
 * MLS Cup MVP: 1997
 * D.C. United Hall of Tradition: 2013
 * Washington DC Sports Hall of Fame: 2018
 * National Soccer Hall of Fame: 2021
 * MLS All-Time Best XI
 * MLS 100 goals club
 * MLS 50/50 Club

title: Jaime Moreno (footballer, born 1974)


text:
Hopewell Valley, New Jersey

Hopewell Valley is a group of communities in Mercer County, New Jersey loosely affiliated through municipal service sharing agreements, all of which send their students to the Hopewell Valley Regional School District.

The area referred to as Hopewell Valley comprises the township of Hopewell (2000 census population of 16,105), the Borough of Hopewell (2,035), the Borough of Pennington (2,696), and the unincorporated census-designated place Titusville (which is within Hopewell Township).

The school district includes four elementary schools (Hopewell Elementary, Toll Gate Grammar, Bear Tavern, and the recently opened Stony Brook Elementary School), a middle school (Timberlane Middle School) and a high school (Hopewell Valley Central High School). Before regionalization of the school district in the 1950s, the high school was simply known as Central High School of Hopewell Township, and the moniker Central High School (sans the Hopewell Valley) persists to some extent in the state of New Jersey as the school's (albeit incorrect) official name.

Historic events
General George Washington's crossing of the Delaware River from Pennsylvania to New Jersey leading to the victory at the Battle of Trenton on the morning of December 26, 1776 is commemorated at Washington Crossing State Park in Titusville. The crossing is re-enacted each year if the weather permits. Hopewell Valley is also the site of the notorious kidnapping of the Charles Lindbergh infant in 1932.

Notable people

 * Peter Benchley, who drew from the names of local streets and roads in creating the fictional town of Amity in his 1974 novel Jaws.
 * John Hart, a signer of the Declaration of Independence, lived in Hopewell Township. He is buried in Hopewell Borough.

title: Hopewell Valley, New Jersey


text:
Pokalde

Pokalde Peak (or Dolma Ri) is a mountain peak of Nepal situated 12 km southwest of Mount Everest. Pokalde Peak is one of the shortest and easiest trekking peaks in the Everest Region. The majority of the 650 m climb from base camp requires little more than walking with short sections of scrambling up rock.

During the trekking seasons this rocky peak is scarcely covered by snow. Despite its lack of any great technical difficulty, it offers trekkers the prospect of reaching 5,800m in elevation and superb views from the summit, particularly to the South East, North West and West. Other prominent mountains visible from the summit include Makalu, Ama Dablam and Pumori. Because of its relatively low difficulty and impressive summit vista's for this altitude, Pokalde is a popular commercial tourist peak in Nepal for those wishing to climb a Himalayan peak without needing to use ice axes and crampons.

The first ascent of Pokalde Peak was made in April 1953 via the ridge adjoining the Pokalde summit with the Kongma La high pass (5535m). This ridge continues from Kongma La to the slightly higher Mehra Peak (Kongma Tse) at 5820m and beyond. Hence the prominence of Pokalde Peak is modest at 271m (889 feet). Most ascents of Pokalde Peak nowadays are made by skirting the opposite Makalu side of the mountain.

Pokalde Peak can be easily climbed in half a day by a fit and acclimatised group with appropriate leadership. Despite its low difficulty, sections of Pokalde are quite exposed so it shouldn't be attempted in poor weather. Doing so would significantly increase the difficulty of the climb above that of a "simple trekking peak". The final pitch to the summit also involves a short section of near vertical scrambling which for amateurs should definitely be protected by rope.

The base camp of Pokalde Peak is situated in a raised "amphitheatre" style valley with a large circular lake in the middle below the Kongma La pass. About 40 minutes from the base camp is the Kongma glacier. This glacier offers ice walls suitable for ice climbing training by appropriately equipped and motivated groups. The glacier is said to be receding in size.

Footprint evidence of significant snow leopard activity has been witnessed in the vicinity of Pokalde Peak base camp. This is despite the popularity of the area in being the gateway to both a major trekking peak as well as a high pass.

Even during the trekking seasons, it is not uncommon for overnight temperatures at base camp to be in excess of twenty degrees below freezing.

title: Pokalde


text:
Talk:Hiroshi Mori

Disambiguation
Hiroshi Mori (writer) exists. So,I suppose that this page will be edited for Disambiguation page. For example,

Hiroshi Mori is the name of:
 * Hiroshi Mori (astronomer)
 * Hiroshi Mori (writer)

disambig

It seems pretty sure this H. Mori (an amateur astronomer) is not the same as the geophysicist Hiroshi Mori oft-quoted in the NASA ADS. His home page is http://www.ehime-u.ac.jp/~cutie/english/mori.html

On the other hand, it is quite obviously the owner of this page: http://www.tvg.ne.jp/h-mori/asteroid-1.htm which lists the asteroids found at Yorii Observatory.

title: Talk:Hiroshi Mori


text:
Minimum polynomial

Minimum polynomial can refer to:
 * Minimal polynomial (field theory)
 * Minimal polynomial (linear algebra)

title: Minimum polynomial