text:
Talk:Conservation movement

Removed for possible incorrectness
Today, it is a moral goal that most people support - but not all people accept that ecology is the basis of human morality or that interactions with ecology necessarily form their basic character or ethos. Many simply regard nature as a source of beauty and diversity - not of moral example as Greens and the more radical Gaians do.

It's far from clear that most people on the planet Earth support conservation especially when it appears to conflict with economic development. — Preceding unsigned comment added by 134.132.115.250 (talk • contribs) 06:12, 22 March 2002

 * Sadly, true., although few will say out loud that they want nature not to be conserved, they'll act otherwise.

 * It stems from illogical conservation ideologies such as blocking an irrigation project that could feed millions of people because of a tiny fish, or protecting a frozen wasteland from oil drilling while at the same time importing high priced oil from the middle east where these types of environmental laws do not exist. Bugguyak (talk) 13:38, 29 June 2008 (UTC)

Islam
Another issue: is this the same concept as hima in Islam ? That was/is tied to religion too. Ibn abd as-Salam formulated a statement of animal rights in the 13th century. That predates this 19-th century origin theory. — Preceding unsigned comment added by 142.177.97.128 (talk • contribs) 23:26, 20 January 2003

Possible dispute on "conservation movement"
I think the word conservation is used incorrectly here on wikipedia. I am a hunter here in Canada, and when one says that they support conservation, it usually means they are a hunter or support it. On wikipedia this is not clealy stated, as many people will think that conservationists are tree-hugging hippies like Green-peace and all that. the MNR (Ministry of Natural Resources, commonly called "the ministry") is for conservation, and issues the hunting tags, so I believe this must be more clearly stated.

Also, conservation is about governing the natural imbalances of nature, such as the predator to prey ratio so that the population of a species stays at a relatively stable level, rather then there be mass starvation because of lack of food because of over-population.

--Jadger 14:38, 12 April 2006 (UTC)

I think you may be right. It is possible that it is correct to say the preservation and the environmental movements are parts of the conservation movement. KAM 11:55, 28 April 2006 (UTC)

 * The conservation movement is part of the wider environmental movement. There is no preservation movement. Sometimes preservationist is used in a perjorative manner for a conservationist. Conservationists do wish to preserve ecologically significant areas from the effects of human activity. Alan Liefting 10:22, 6 June 2006 (UTC)

 * Word usage
 * We need to be careful with the use of words in an encyclopeadia. The words conservationist, environmentalist and preservationist can be used in a political and/or perjorative manner. The general international use of the word "conservationist" is to one who attempts to protect plant and animal species populations from the negative effects of human activity. Note that Greenpeace is an environmental organization and is not directly involved in the conservation movement. Alan Liefting 10:22, 6 June 2006 (UTC)

This definition does not apply to energy conservation, however, which is rapidly challenging if not replacing nature conservation as the predominant public understanding of the term. A more accurate and inclusive definition is "the protection of nature and the reduction in demand for natural resources" - which covers the protection of plant and animal species, and the conservation of natural resources such as energy, minerals, foodland, forest products, fisheries, etc. Cwinter (talk) 05:25, 5 March 2009 (UTC)

"natural imbalances"
There are no "natural imbalances" in nature. Nature is self regulating. The effect of humans is not. Hence the environmental and conservation movements. Predator/prey ratios have been altered by human activity. Here in New Zealand introduced mammalian predators are causing havoc and all manner of techniques, including culling by hunters, are used to get an ecological balance.Alan Liefting 10:22, 6 June 2006 (UTC)

 * During the Progressive Era in the United States the environmental movement was considered part of the conservation movement ie conservation of clean air and water, conservation of workman's health etc. Some still consider it to be. The reverse is more common however and that is what the article says.

 * As to the preservation movement, it refers to efforts to save wilderness. For example: "The concept of a wilderness system marked an innovation in the history of the American preservation movement." —Roderick Nash "Wilderness and the American Mind", 1972. Today if you google wilderness preservation or nature preservation you will get millions of hits.
 * The article does use the word protect however, but… "the term protection has highly pejorative overtones, particularly in our country where reserved forests and other protected areas were set up by the colonisers who, in their efforts to "protect" biodiversity, marginalized indigenous people by using often inhumane methods, which have left an indelible scar on the local population’s collective memory." Gome (1999)
 * Your view of nature of being balanced and separate from man is one view. Some see nature as dynamic and always changing, the view of balance is seen as a holdover from the Age of Enlightenment, nature was seen as similar to clockwork, also Baird Callicott, about Man/Nature dualism says "nature is a distinctly modern notion, deeply rooted in ancient Western intellectual tradition, but that it is false and that its historical tenure has been pernicious."

 * Finally, urging to be careful with the use of words could be seem as an effort to limit discussion. I don't agree, of course we should take care not to offend however instead I think we should "Be Bold but not reckless" KAM 16:43, 14 June 2006 (UTC)

MONGO taking it upon himself to decide the history of the conservation movement?
I added this to the history section:

 * In Nazi Germany (1932 - 1945) conservation and environmentalism were a fundamental part of the ideology.

With the following references for those intrested. A History of Conservation in Nazi Germany], (Full chapter 1) by Frank Uekoetter],
 * [http://www.cup.cam.ac.uk/us/catalogue/catalogue.asp?isbn=0521612772&ss=exc The Green and the Brown
 * How Green Were the Nazis?: Nature, Environment, and Nation in the Third Reich (Ecology & History), (Book)
 * [http://www.powells.com/biblio?isbn=0521612772 The Green and the Brown: A History of Conservation in Nazi Germany (Studies in Environment and History) (Book)
 * NAZI GERMANY AND THE ENVIRONMENT ENVIRONMENTAL POLICIES AND VIEWS

User:MONGO removed it with the statement
 * "er, links tyo some books you can buy and glorification of anything they did is hardly useful to this article"

Hardly worthy of a supposed encyklopedia editor. If we're not going to have an accurate history section containing all aspects of the history of the conservation movement instead of just the palateable ones then why bother with a history section at all?

For those out there actually intrested in history; I've been recomended "Blood and Soil" by Anna Bramwell, which discusses the darker roots of the green movement. And for those with access to New Scientist it might be intresting to read A darker shade of green...]--Stor stark7 Talk 07:03, 2 October 2006 (UTC)
 * This website is not a Nazi propaganda tool for you. Besides, their grand accomplishments in the field of conservation were/have been well superceded before and after by numerous other governments.--MONGO 07:07, 2 October 2006 (UTC)

 * Real mature of you, so I'm a purveyor of Nazi propaganda then? And as for your second statement, I havent seen you inserting anything to that effect in the history section. My previous opinion of you has indeed been strengthened. --Stor stark7 Talk 07:16, 2 October 2006 (UTC)
 * Look, you're the one going around pointing fingers with this loud heading and accusatory tone, I see the addition you made as merely links to some books and a comment about their conservation. I can't imagine how their contributions were better than those initiated by the U.S. when they created the worlds first National Park, National Forests and the contributions made by numerous other countries.--MONGO 07:22, 2 October 2006 (UTC)

 * I agreed with MONGO's removal because the addition looked like book advertisement.  Perhaps if the National Socialist government's actions were significant there is more which can be said about what they did.  And supporting material documented in a reference section rather than billboarded in the middle of the article.  (SEWilco 16:56, 2 October 2006 (UTC))

I was pissed at what I saw as a member of the green movement’s attempts to whitewash history, as they have done on so many subjects. Read on and you’ll probably understand what I mean. The number of links I provided was simply to show that I wasn’t making it up, as I figured people would want to remove it as a reflex reaction without any brain-activity involved just because it contained the word Nazi. Anyway the rest of the text that’s there isn’t exactly overflowing with citations is it?

This link was not to a book by the way:
 * NAZI GERMANY AND THE ENVIRONMENT ENVIRONMENTAL POLICIES AND VIEWS

As to the books…
 * The Green and the Brown: A History of Conservation in Nazi Germany by Frank Uekoetter Cambridge University Press (August 2006) ISBN: 0521612772

From the publishers comments: It describes how the German conservation movement came to cooperate with the Nazi regime and discusses the ideological and institutional lines between the conservation movement and the Nazis. Uekoetter further examines how the conservation movement struggled to do away with a troublesome past after World War II, making the environmentalists one of the last groups in German society to face up to its Nazi burden.

 * How Green Were the Nazis?: Nature, Environment, and Nation in the Third Reich by Franz-Josef Bruggemeier (Editor), Mark Cioc (Editor), Thomas Zeller (Editor) Ohio University Press (December 30, 2005) ISBN: 0821416472

From the book description:

The Nazis created nature preserves, contemplated sustainable forestry, curbed air pollution, and designed the autobahn highway network as a way of bringing Germans closer to nature. Moreover, this landmark book underscores that the “green” policies of the Nazis were more than a mere episode or aberration in environmental history. ((BLURB))---"The environmental ideas, policies, and consequences of the Nazi regime pose controversial questions that have long begged for authoritative answers. At last, a team of highly qualified scholars has tackled these questions, with dispassionate judgment and deep research. Their assessment will stand for years to come as the fundamental work on the subject—and provides a new angle of vision on 20th-century Europe's most disruptive force."

And I felt compelled to dig up the article that launched me in this direction.

 * From New Scientist 2005-08-20. What if (the nazis had won)? 1943, A darker shade of green. By Steve Fuller, professor of sociology at the university of Warwick, UK. Pp 36-37.

Excerpt.:

This interest in preventive medicine, however, meant that research into the health effects of radiation, asbestos, heavy metals, alcohol and tobacco would have advanced more rapidly. The Nazis would also have mandated the production of organic foods, outlawed vivisection and encouraged vegetarianism and natural healing. What is more, the eco-friendly Nazis’ sensitivity to the world’s oil supply would have sparked an early scientific interest in curtailing carbon emissions and shifting to an alternative energy. In short, the late 1940s would have seen scientifically informed policies that only began to be pursued for real in the late 1960s.

And on some other “green” subjects, perhaps slightly of topic but in my eyes revealing a disturbing pattern….:

 * Animal Rights in the Third Reich

Excerpt: The pioneering role of the Third Reich had in developing modern understanding of the protection of animals is a tough spot for today's animal rights movement. For the brutal social experiment of the Third Reich was also an experiment of a society with a goal of executing a radical version of animal rights. Due to the awkwardness of the issue, many animal rights activists keep quiet about it. For instance, the whole issue is left unmentioned in the classic Animal Liberation (1975) by Peter Singer. In the meticulous history section, he leaves the period 1880-1945 out completely. Because the writer is obviously well acquainted with the topic, it is hardly an accident. He refers to the nazis' human tests comparing them to the modern vivisection and brings up the Buddhist principles of protecting animals as a contrasting idea. This is troublesome reading to someone who is familiar with the subject, because also nazis appealed to Buddhism as the opposite of the animal hostility in Christianity - which they considered one branch of Judaism.

Some people resort to denial as a solution for the issue. It is typical to deny Hitler's vegetarianism with the suspicion that he once ate a dove. It is easy to find outright lies in different militant animal rights and vegetarism homepages where the whole matter is denied. However, this peculiar subplot in the history of animal protection will not simply disappear. That is why the Third Reich similarities with and particularly differences from modern animal rights thinking should be recognized, both by animal rights activists and their opponents

 * The Nazi War on Cancer by Robert N. Proctor Princeton University press (2000)  ISBN: 0-691-07051-2

From the publisher:

Robert Proctor recently made the explosive discovery, however, that Nazi Germany was also decades ahead of other countries in promoting health reforms that we today regard as progressive and socially responsible. Most startling, Nazi scientists were the first to definitively link lung cancer and cigarette smoking. Proctor explores the controversial and troubling questions that such findings raise: Were the Nazis more complex morally than we thought? Can good science come from an evil regime? What might this reveal about health activism in our own society? Proctor argues that we must view Hitler's Germany more subtly than we have in the past.

Author of an earlier groundbreaking work on Nazi medical horrors, Proctor began this book after discovering documents showing that the Nazis conducted the most aggressive antismoking campaign in modern history. Further research revealed that Hitler's government passed a wide range of public health measures, including restrictions on asbestos, radiation, pesticides, and food dyes. Nazi health officials introduced strict occupational health and safety standards, and promoted such foods as whole-grain bread and soybeans.

A darker shade of green ideed. --Stor stark7 Talk 20:30, 2 October 2006 (UTC)

 * Is this relevant here? Conservation != Environmentalism/Animal "rights". As a quick example, most hunters are conservationists. — RevRagnarok  Talk Contrib 13:01, 3 October 2006 (UTC)

 * Nice rant, as a rant. Anything which can be added to the article?  (SEWilco 13:06, 3 October 2006 (UTC))

 * Reply To Revnarok:
 * Environmentalism builds on and is a closely associated with conservationism. The anmal-rights part of my (admitedly long) text was just for comparison/context, as i stated when I wrote "perhaps slightly of topic but in my eyes revealing a disturbing pattern…". I'll concede however that the topic might be more suited to the environmentalism  article though.

 * Reply to SEWilco:
 * Jaja, I’m delighted to see that you’re truly taxing your resources to the outmost by making an effort to contribute.
 * --Stor stark7 Talk 21:07, 3 October 2006 (UTC)

Contribution by anti-hunting organizations
I thought to add this section, though there is scant evidence for any real contribution by such organizations.Trilobitealive 23:57, 6 January 2007 (UTC)

I reverted this after thinking about it for a while. While it is fact I can't find any information to mitigate its harsheness.Trilobitealive 02:21, 7 January 2007 (UTC)

Invitation for WikiProject Protected areas of India & Conservation
If you are interested in Environment, Wildlife, Conservation and Nature etc. please join in to contribute, even starting off with making new stub class articles will be a great contribution.

Sincerely

Atulsnischal 16:36, 5 February 2007 (UTC)

 * We need senior administrators or people who are long in Wikipedia to help us with the templates and for other further helps. Details can be seen in its talk page. IT's urgent. We want this wkiproject to be added to the exsisting WP:IND banner. Amartyabag   TALK2ME  05:02, 8 February 2007 (UTC)

Please create more "Wildlife of ....." articles for all countries.
.... and kindly contribute to these new articles when you get time, and request others too.

See Wildlife of India for reference.

Thanks

Atulsnischal 18:13, 13 February 2007 (UTC)

The evolution of conservation
I work with a council of conservation groups and individuals and have witnessed the evolution of the conservation movement over a 20+ year period. To my mind, conservation and environmentalism are becoming synonymous in scope, with subtle differences lying in methodology. This is a reflection of society's growing understanding of it's interrelationship with nature and ecosystems and, most importantly, an integration of the values expressed in conservation into social and economic behaviour.

The history of conservation over the past century can be roughly grouped as follows:

1) Stewardship -- up to 1970s. Conservation was primarily nature and resource-focused with the lead proponents being naturalists, sportsmen, farmers, and other organizations closely associated with the land.

2) Environmental Awareness -- from the 60s through the 80s. The rise of the environmental movement was a distinct movement in scope and style, although many of the issues of pollution and waste were also being addressed by conservationists.  For example The Conserver Society concept, proposed in the 70s, emphasized "doing more with less" and placed a strong emphasis on energy conservation, recycling, and reduction at source.

3) Applied Conservation -- 90s onward. Starting in the early 1990's much of the organizational energy around conservation and environmentalism has been centred on delivering solutions, including naturalization, energy audits, transportation alternatives, organic food etc.

While the underlying principles of respect for nature, and treading lightly on the earth have remained constant in the conservation movement over time, the understanding and application of those values has evolved to a point where the scope is as broad as can be and the focus is on transition strategies.

In this sense, the conservation movement is evolving and maturing, much as other social movements such as feminism and the civil rights movement have done. --Cwinter 21:41, 15 April 2007 (UTC)

As a university student with a background in environmental studies, I would agree that the distinction made in this article between environmentalism and the conservation movement is more confusing than helpful. The distinction made in this article reflects a view of the conservation movement that is not resonant with today's intertwined nation of environmentalism and environmental justice. These would be significant to include to the explanation of the conservation movement as they grew out of similar values and ideas. Alytras (talk) 00:04, 24 April 2022 (UTC)

Problem areas UK
This section has clearly been used as a scrapping ground between pro- and anti- foxhunting groups and no longer makes any sense. There has been clear vandalism such as the sentence about Mongolian tribesmen and eagles (which I shall delete now) and the whole section appears to serve no purpose whatsoever in informing the reader, and so I propose deleting it. If noone has disagreed within a couple of weeks or so, I'll go ahead and do that. Nom DeGuerre 19:06, 16 May 2007 (UTC)
 * I fail to see what is so bad about that section. Isn't conserving wildlife part of the conservation movement?  > R a d i a n t <  15:24, 23 May 2007 (UTC)
 * The title is not relevant to the topic. Sentence 1 is fine. Sentence 2 is OK but a bit of an odd thing to follow 1. Sentence 3 is OK. Sentence 4 - What?! What has that got to do with anything?. Sentence 5 is fine if we remove sentence 4. Sentence 6 is irrelevant. Sentence 7 is clearly politically motivated. The whole paragraph is introduced as a fiercely debated topic, but no anti-hunting information is provided. See what I mean? Nom DeGuerre 14:40, 25 May 2007 (UTC)
 * Yes, I do. How about we remove the bad parts and leave the rest? Sentence two should state the fact (300 hunts), not editorialize ("in clear defiance"). 4 (David B) is irrelevant. 5 is ludicrous argument (see Godwin's Law) and should be stricken. 6 appears somewhat relevant but that depends on whether we have an article on that organization (see WP:ORG). 7 ("The reinvention appears to be") is original research.  > R a d i a n t <  09:28, 29 May 2007 (UTC)

Contributions to Conservation by Sport, Subsistence, and Commercial Fishers
Commentary:

To be fair we need to add the subject section. This is solely my own opinion supported by my direct, professional experience in environmental management, reource restoration and conservation over 30+ years. Others may hold differing opinions, which we may then, debate in this forum in future. I will attempt to retrieve a few good references from my dishelved files to support some of the following statements and opinions. I will provide these as I come across them.

Commercial and subsistence fishers, along with other constituents, have been deeply involved, initially and continually, in the political and social impetus to:

1. Establish boundaries for commercial fishing zones, excluding  nesting, breeding, and nursury areas as well as areas of other essential habitats, 2. Management of surface & subsurface hydrology, conservation of essential in-stream flows, and cleanups of other essential areas, such as, upstream watersheds, discharging aquifers, and riparian zones, 3. Limit commercial catch and by-catch, 4. Ban adverse effects on threatened and endangered species, 5. Limit or ban harmful and rapacious fishing methods, 6. Establish new hatcheries and repair and expad existing hatcheries, 7. Provide artificial reef structures for safe habitats and surface structures to provide shady loitering areas, and 8. Designate no-fishing areas near or in breeding grounds and reefs in order to allow some respite for recovery of the exploited populations. 9. Establish public, academic and government aquaria, research and development programs; to help meet society's needs for more accessible public information of these reources and their issues, better scientific knowledge of life histories and species vulnerabilites, and better conservation techniques for important species. Many commercial fishers also pay heavy fees for permits, landing taxes, and large excise duties on some of their equipment and supplies. In the U.S.A. such collections of levies are frequently dedicated to resource management, conservation, and restoration funds at the local, State, and Federal levels.

Subsistence fishers usually consist of aboriginal peoples possessing historic fishing rights, or of low-income groups dependent on fisheries for essential nutrition. Members of these groups may not require expensive permits, authorized to receive free or very low-cost permits instead; nor do they usually pay taxes on their catch due to their existing treaty rights and / or low income status. These groups and individuals do constitute major contributors to fisheries management councils and regulatory bodies representing their views through the veil of their lifetime, cultural attitudes toward effective conservationof the Earth and their continuing essential need for subsistence utilization of fisheries resources.

A number of fisheries resource management councils have strong representation from both commercial and substistence fishers,among their several other constituenties. These former two groups depend on fisheries for their continuing livelihood. Many livelihood fishers, individually and in groups, also regularly contribute to conservation, restoration and cleanup efforts for coastlines, rivers, river deltas, and wetlands. Sport fishers and their orgainzations are also heavily involved in fisheries resource management councils. One would like to believe that such voluntary participation by livelihood fishers may be due to their visions of enlighted self interest in biodiversity and conservation. For substistence and sport fishers this may be true. However, a variety of motivations are at work with commercial fishers, including less savory motivations like public relations, resource grabs, and using their involvement to oppose any new proposals for more stringent limits. Such self-serving activites have sometimes, often?, resulted in pluralistic compromises, leaving no one truely satisfied. Longer-term experience has proven that, over sufficient time, such hard-won compromises can advance the greater good, but usually, only in smaller increments than some may desire or that may be justified by the science of the matter.

Likewise, sport fishermen have provided funding to both U.S. Federal fisheries management funds through voluntary contributions, license fees and excise taxes; and, to the academic study and local or regional conservation of freshwater and marine biodiversity & ecosystems, species-related fish conservation activities, and conservation of estuaries by academic organizations, local activist groups, local and regional governments, and NGOs. Sport fishers also provide or coordinate grants from private individuals and foundations. These fishers continue to provide always growing funding through their subsidies to Federal grant funds collected through the tax methods identified just above. Frequently, sport fishers have also voluntarily provided key guidance, cooperation, funding, other resources and equipment, and volunteer labor to cleanup and restore many lakes, streams and rivers, to help reintroduce stressed, hybridized, or extirpated native species to their former habitats, to establish new hatcheries and rehabilitate and expand older hatchery units. Their efforts have also included direct assistance and funding to conserve wetlands and estuarine fisheries. These latter natural areas harbor very important nesting, breeding, and juvenile nurturing areas for many important species of coastal and pelagic forms of fish and shellfish. These areas are important not only to the livelihood and enjoyment of fishers but to National and intrnational efforts to conserve and restore marine and aquatic biodiversity and ecosystem functionality.

I hope this is readable and cogent. I will check back for any comments and to post references.

-98.219.36.206 (talk) 05:21, 5 September 2008 (UTC)

minor edits
minor edits December 24, 2009 Greenopedia (talk) 16:25, 24 December 2009 (UTC)Greenopedia

Geographical inbalance
The article gives about the right attention to the US and too little to the rest of the world.

The solution is not to reduce the US coverage--leaving a stub--but to give better coverage for the rest of the world. I'll try to work on that. Rjensen (talk) 18:27, 2 August 2010 (UTC)

YOU ARE MEAN!!!!!!!!!
Hey — Preceding unsigned comment added by 170.177.237.93 (talk) 17:10, 8 March 2016 (UTC)

External links modified
Hello fellow Wikipedians,

I have just modified 2 external links on Conservation movement. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
 * Added archive https://web.archive.org/web/20120313144333/http://www.asiaticsociety.org.bd/journals/Golden_jubilee_vol/articles/H_468%20%28Brett%20M%20Benet%29.htm to http://www.asiaticsociety.org.bd/journals/Golden_jubilee_vol/articles/H_468%20%28Brett%20M%20Benet%29.htm
 * Added archive https://web.archive.org/web/20160114045519/http://cnu.edu/leadershipstudies/faculty/pdf/redekop-embodying_the_story_theodore_roosevelts_conservation_leadership.pdf to http://cnu.edu/leadershipstudies/faculty/pdf/redekop-embodying_the_story_theodore_roosevelts_conservation_leadership.pdf

When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.

Cheers.— InternetArchiveBot  (Report bug) 09:03, 12 August 2017 (UTC)

External links modified (January 2018)
Hello fellow Wikipedians,

I have just modified 3 external links on Conservation movement. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
 * Added archive https://web.archive.org/web/20090703095241/http://www.historycooperative.org/journals/jah/96.1/turner.html to http://www.historycooperative.org/journals/jah/96.1/turner.html
 * Added archive https://web.archive.org/web/20090703095241/http://www.historycooperative.org/journals/jah/96.1/turner.html to http://www.historycooperative.org/journals/jah/96.1/turner.html
 * Added archive https://web.archive.org/web/20080830075158/http://www.teara.govt.nz/TheBush/Conservation/ConservationAHistory/en to http://www.teara.govt.nz/TheBush/Conservation/ConservationAHistory/en

When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.

Cheers.— InternetArchiveBot  (Report bug) 07:31, 22 January 2018 (UTC)

Topic Relevance and Organization
I'm a student of a Political Science course evaluating articles based on topic presentation and relevance. As I read through this article, the organization of topics was a bit scattered and was more confusing than informative. Although the background information on the movement's origins was helpful to providing historical context, the excessive details provided distracted from the topic of the article. Alytras (talk) 22:55, 23 April 2022 (UTC)

 * In addition, the progressive sequence with which the writer of this article presents their ideas is lacking in cohesiveness which may further confuse readers. For example, the sudden shift in topic focus between the portion discussing party agendas since 1970 and the portion dedicated to explaining conservation in Costa Rica.  Reorganization of sub-topics could help clarify therein topic/purpose of the article.  Alytras (talk) 23:56, 23 April 2022 (UTC)

title: Talk:Conservation movement


text:
Crossbar switch

In electronics and telecommunications, a crossbar switch (cross-point switch, matrix switch) is a collection of switches arranged in a matrix configuration. A crossbar switch has multiple input and output lines that form a crossed pattern of interconnecting lines between which a connection may be established by closing a switch located at each intersection, the elements of the matrix. Originally, a crossbar switch consisted literally of crossing metal bars that provided the input and output paths. Later implementations achieved the same switching topology in solid-state electronics. The crossbar switch is one of the principal telephone exchange architectures, together with a rotary switch, memory switch, and a crossover switch.

General properties
A crossbar switch is an assembly of individual switches between a set of inputs and a set of outputs. The switches are arranged in a matrix. If the crossbar switch has M inputs and N outputs, then a crossbar has a matrix with M × N cross-points or places where connections can be made. At each crosspoint is a switch; when closed, it connects one of the inputs to one of the outputs. A given crossbar is a single layer, non-blocking switch. A crossbar switching system is also called a coordinate switching system.

Collections of crossbars can be used to implement multiple layer and blocking switches. A blocking switch prevents connecting more than one input. A non-blocking switch allows other concurrent connections from inputs to other outputs.

Applications
Crossbar switches are commonly used in information processing applications such as telephony and circuit switching, but they are also used in applications such as mechanical sorting machines.

The matrix layout of a crossbar switch is also used in some semiconductor memory devices which enables the data transmission. Here the bars are extremely thin metal wires, and the switches are fusible links. The fuses are blown or opened using high voltage and read using low voltage. Such devices are called programmable read-only memory. At the 2008 NSTI Nanotechnology Conference a paper was presented that discussed a nanoscale crossbar implementation of an adding circuit used as an alternative to logic gates for computation.

Matrix arrays are fundamental to modern flat-panel displays. Thin-film-transistor LCDs have a transistor at each crosspoint, so they could be considered to include a crossbar switch as part of their structure.

For video switching in home and professional theater applications, a crossbar switch (or a matrix switch, as it is more commonly called in this application) is used to distribute the output of multiple video appliances simultaneously to every monitor or every room throughout a building. In a typical installation, all the video sources are located on an equipment rack, and are connected as inputs to the matrix switch.

Where central control of the matrix is practical, a typical rack-mount matrix switch offers front-panel buttons to allow manual connection of inputs to outputs. An example of such a usage might be a sports bar, where numerous programs are displayed simultaneously. Ordinarily, a sports bar would install a separate desk top box for each display for which independent control is desired. The matrix switch enables the operator to route signals at will, so that only enough set top boxes are needed to cover the total number of unique programs to be viewed, while making it easier to control sound from any program in the overall sound system.

Such switches are used in high-end home theater applications. Video sources typically shared include set-top receivers or DVD changers; the same concept applies to audio. The outputs are wired to televisions in individual rooms. The matrix switch is controlled via an Ethernet or RS-232 connection by a whole-house automation controller, such as those made by AMX, Crestron, or Control4, which provides the user interface that enables the user in each room to select which appliance to watch. The actual user interface varies by system brand, and might include a combination of on-screen menus, touch-screens, and handheld remote controls. The system is necessary to enable the user to select the program they wish to watch from the same room they will watch it from, otherwise it would be necessary for them to walk to the equipment rack.

The special crossbar switches used in distributing satellite TV signals are called multiswitches.

Implementations
Historically, a crossbar switch consisted of metal bars associated with each input and output, together with some means of controlling movable contacts at each cross-point. The first switches used metal pins or plugs to bridge a vertical and horizontal bar. In the later part of the 20th century, the use of mechanical crossbar switches declined and the term described any rectangular array of switches in general. Modern crossbar switches are usually implemented with semiconductor technology. An important emerging class of optical crossbars is implemented with microelectromechanical systems (MEMS) technology.

Mechanical
A type of mid-20th-century telegraph exchange consisted of a grid of vertical and horizontal brass bars with a hole at each intersection (c.f. top picture). The operator inserted a metal pin to connect one telegraph line to another.

Electromechanical switching in telephony
A telephony crossbar switch is an electromechanical device for switching telephone calls. The first design of what is now called a crossbar switch was the Bell company Western Electric's coordinate selector of 1915. To save money on control systems, this system was organized on the stepping switch or selector principle rather than the link principle. It was little used in America, but the Televerket Swedish governmental agency manufactured its own design (the Gotthilf Betulander design from 1919, inspired by the Western Electric system), and used it in Sweden from 1926 until the digitization in the 1980s in small and medium-sized A204 model switches. The system design used in AT&T Corporation's 1XB crossbar exchanges, which entered revenue service from 1938, developed by Bell Telephone Labs, was inspired by the Swedish design but was based on the rediscovered link principle. In 1945, a similar design by Swedish Televerket was installed in Sweden, making it possible to increase the capacity of the A204 model switch. Delayed by the Second World War, several millions of urban 1XB lines were installed from the 1950s in the United States.

In 1950, the Swedish Ericsson company developed their own versions of the 1XB and A204 systems for the international market. In the early 1960s, the company's sales of crossbar switches exceeded those of their rotating 500-switching system, as measured in the number of lines. Crossbar switching quickly spread to the rest of the world, replacing most earlier designs like the Strowger (step-by-step) and Panel systems in larger installations in the U.S. Graduating from entirely electromechanical control on introduction, they were gradually elaborated to have full electronic control and a variety of calling features including short-code and speed-dialing. In the UK the Plessey Company produced a range of TXK crossbar exchanges, but their widespread rollout by the British Post Office began later than in other countries, and then was inhibited by the parallel development of TXE reed relay and electronic exchange systems, so they never achieved a large number of customer connections although they did find some success as tandem switch exchanges.

Crossbar switches use switching matrices made from a two-dimensional array of contacts arranged in an x–y format. These switching matrices are operated by a series of horizontal bars arranged over the contacts. Each such select bar can be rocked up or down by electromagnets to provide access to two levels of the matrix. A second set of vertical hold bars is set at right angles to the first (hence the name, "crossbar") and also operated by electromagnets. The select bars carry spring-loaded wire fingers that enable the hold bars to operate the contacts beneath the bars. When the select and then the hold electromagnets operate in sequence to move the bars, they trap one of the spring fingers to close the contacts beneath the point where two bars cross. This then makes the connection through the switch as part of setting up a calling path through the exchange. Once connected, the select magnet is then released so it can use its other fingers for other connections, while the hold magnet remains energized for the duration of the call to maintain the connection. The crossbar switching interface was referred to as the TXK or TXC (telephone exchange crossbar) switch in the UK.

However, the Bell System Type B crossbar switch of the 1960s was made in the largest quantity. The majority were 200-point switches, with twenty verticals and ten levels of three wires. Each select bar carries ten fingers so that any of the ten circuits assigned to the ten verticals can connect to either of two levels. Five select bars, each able to rotate up or down, mean a choice of ten links to the next stage of switching. Each crosspoint in this particular model connected six wires. The vertical off-normal contacts next to the hold magnets are lined up along the bottom of the switch. They perform logic and memory functions, and the hold bar keeps them in the active position as long as the connection is up. The horizontal off-normals on the sides of the switch are activated by the horizontal bars when the butterfly magnets rotate them. This only happens while the connection is being set up, since the butterflies are only energized then.

The majority of Bell System switches were made to connect three wires including the tip and ring of a balanced pair circuit and a sleeve lead for control. Many connected six wires, either for two distinct circuits or for a four wire circuit or other complex connection. The Bell System Type C miniature crossbar of the 1970s was similar, but the fingers projected forward from the back and the select bars held paddles to move them. The majority of type C had twelve levels; these were the less common ten level ones. The Northern Electric Minibar used in SP1 switch was similar but even smaller. The ITT Pentaconta Multiswitch of the same era had usually 22 verticals, 26 levels, and six to twelve wires. Ericsson crossbar switches sometimes had only five verticals.

Instrumentation
For instrumentation use, James Cunningham, Son and Company made high-speed, very-long-life crossbar switches with physically small mechanical parts which permitted faster operation than telephone-type crossbar switches. Many of their switches had the mechanical Boolean AND function of telephony crossbar switches, but other models had individual relays (one coil per crosspoint) in matrix arrays, connecting the relay contacts to [x] and [y] buses. These latter types were equivalent to separate relays; there was no logical AND function built in. Cunningham crossbar switches had precious-metal contacts capable of handling millivolt signals.

Telephone exchange
Early crossbar exchanges were divided into an originating side and a terminating side, while the later and prominent Canadian and US SP1 switch and 5XB switch were not. When a user picked up the telephone handset, the resulting line loop operating the user's line relay caused the exchange to connect the user's telephone to an originating sender, which returned the user a dial tone. The sender then recorded the dialed digits and passed them to the originating marker, which selected an outgoing trunk and operated the various crossbar switch stages to connect the calling user to it. The originating marker then passed the trunk call completion requirements (type of pulsing, resistance of the trunk, etc.) and the called party's details to the sender and released. The sender then relayed this information to a terminating sender (which could be on either the same or a different exchange). This sender then used a terminating marker to connect the calling user, via the selected incoming trunk, to the called user, and caused the controlling relay set to send the ring signal to the called user's phone, and return ringing tone to the caller.

The crossbar switch itself was simple: exchange design moved all the logical decision-making to the common control elements, which were very reliable as relay sets. The design criteria specified only two hours of downtime for service every forty years, which was a large improvement over earlier electromechanical systems. The exchange design concept lent itself to incremental upgrades, as the control elements could be replaced separately from the call switching elements. The minimum size of a crossbar exchange was comparatively large, but in city areas with a large installed line capacity the whole exchange occupied less space than other exchange technologies of equivalent capacity. For this reason they were also typically the first switches to be replaced with digital systems, which were even smaller and more reliable.

Two principles of crossbar switching existed. An early method was based on the selector principle, which used crossbar switches to implement the same switching fabric used with Strowger switches. In this principle, each crossbar switch would receive one dialed digit, corresponding to one of several groups of switches or trunks. The switch would then find an idle switch or trunk among those selected and connect to it. Each crossbar switch could only handle one call at a time; thus, an exchange with a hundred 10×10 switches in five stages could only have twenty conversations in progress. Distributed control meant there was no common point of failure, but also meant that the setup stage lasted for the ten seconds or so the caller took to dial the required number. In control occupancy terms this comparatively long interval degrades the traffic capacity of a switch.

Starting with the 1XB switch, the later and more common method was based on the link principle, and used the switches as crosspoints. Each moving contact was multipled to the other contacts on the same level by bare-strip wiring, often nicknamed banjo wiring. to a link on one of the inputs of a switch in the next stage. The switch could handle its portion of as many calls as it had levels or verticals. Thus an exchange with forty 10×10 switches in four stages could have one hundred conversations in progress. The link principle was more efficient, but required a complex control system to find idle links through the switching fabric.

This meant common control, as described above: all the digits were recorded, then passed to the common control equipment, the marker, to establish the call at all the separate switch stages simultaneously. A marker-controlled crossbar system had in the marker a highly vulnerable central control; this was invariably protected by having duplicate markers. The great advantage was that the control occupancy on the switches was of the order of one second or less, representing the operate and release lags of the X-then-Y armatures of the switches. The only downside of common control was the need to provide digit recorders enough to deal with the greatest forecast originating traffic level on the exchange.

The Plessey TXK1 or 5005 design used an intermediate form, in which a clear path was marked through the switching fabric by distributed logic, and then closed through all at once.

Crossbar exchanges remain in revenue service only in a few telephone networks. Preserved installations are maintained in museums, such as the Museum of Communications in Seattle, Washington, and the Science Museum in London.

Semiconductor
Semiconductor implementations of crossbar switches typically consist of a set of input amplifiers or retimers connected to a series of interconnects within a semiconductor device. A similar set of interconnects are connected to output amplifiers or retimers. At each cross-point where the bars cross, a pass transistor is implemented which connects the bars. When the pass transistor is enabled, the input is connected to the output.

As computer technologies have improved, crossbar switches have found uses in systems such as the multistage interconnection networks that connect the various processing units in a uniform memory access parallel processor to the array of memory elements.

Arbitration
A standard problem in using crossbar switches is that of setting the crosspoints. In the classic telephony application of crossbars, the crosspoints are closed, and open as the telephone calls come and go. In Asynchronous Transfer Mode or packet switching applications, the crosspoints must be made and broken at each decision interval. In high-speed switches, the settings of all of the crosspoints must be determined and then set millions or billions of times per second. One approach for making these decisions quickly is through the use of a wavefront arbiter.

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

title: Crossbar switch


text:
Crossbar

Crossbar may refer to:

Structures

 * Latch (hardware), a post barring a door
 * Top tube of a bicycle frame
 * Crossbar, the horizontal member of various sports goals
 * Crossbar, a horizontal member of an electricity pylon

Other

 * In electronics, crossbar switch, a switch connecting multiple inputs to multiple outputs in a matrix manner
 * In typeface anatomy, crossbar refers to some types of horizontal strokes
 * Crossbar (computer hardware manufacturer), a company manufacturing resistive random-access memory
 * Crossbar (film), a 1979 Canadian television film

title: Crossbar


text:
Control flow

In computer science, control flow (or flow of control) is the order in which individual statements, instructions or function calls of an imperative program are executed or evaluated. The emphasis on explicit control flow distinguishes an imperative programming language from a declarative programming language.

Within an imperative programming language, a control flow statement is a statement that results in a choice being made as to which of two or more paths to follow. For non-strict functional languages, functions and language constructs exist to achieve the same result, but they are usually not termed control flow statements.

A set of statements is in turn generally structured as a block, which in addition to grouping, also defines a lexical scope.

Interrupts and signals are low-level mechanisms that can alter the flow of control in a way similar to a subroutine, but usually occur as a response to some external stimulus or event (that can occur asynchronously), rather than execution of an in-line control flow statement.

At the level of machine language or assembly language, control flow instructions usually work by altering the program counter. For some central processing units (CPUs), the only control flow instructions available are conditional or unconditional branch instructions, also termed jumps.

Categories
The kinds of control flow statements supported by different languages vary, but can be categorized by their effect:
 * Continuation at a different statement (unconditional branch or jump)
 * Executing a set of statements only if some condition is met (choice - i.e., conditional branch)
 * Executing a set of statements zero or more times, until some condition is met (i.e., loop - the same as conditional branch)
 * Executing a set of distant statements, after which the flow of control usually returns (subroutines, coroutines, and continuations)
 * Stopping the program, preventing any further execution (unconditional halt)

Labels
A label is an explicit name or number assigned to a fixed position within the source code, and which may be referenced by control flow statements appearing elsewhere in the source code. A label marks a position within source code and has no other effect.

Line numbers are an alternative to a named label used in some languages (such as BASIC). They are whole numbers placed at the start of each line of text in the source code. Languages which use these often impose the constraint that the line numbers must increase in value in each following line, but may not require that they be consecutive. For example, in BASIC:

In other languages such as C and Ada, a label is an identifier, usually appearing at the start of a line and immediately followed by a colon. For example, in C:

The language ALGOL 60 allowed both whole numbers and identifiers as labels (both linked by colons to the following statement), but few if any other ALGOL variants allowed whole numbers. Early Fortran compilers only allowed whole numbers as labels. Beginning with Fortran-90, alphanumeric labels have also been allowed.

Goto
The goto statement (a combination of the English words go and to, and pronounced accordingly) is the most basic form of unconditional transfer of control.

Although the keyword may either be in upper or lower case depending on the language, it is usually written as: goto label The effect of a goto statement is to cause the next statement to be executed to be the statement appearing at (or immediately after) the indicated label.

Goto statements have been considered harmful by many computer scientists, notably Dijkstra.

Subroutines
The terminology for subroutines varies; they may alternatively be known as routines, procedures, functions (especially if they return results) or methods (especially if they belong to classes or type classes).

In the 1950s, computer memories were very small by current standards so subroutines were used mainly https://www.researchgate.net/publication/225114059_The_Bohm-Jacopini_Theorem_Is_False_Propositionally to reduce program size. A piece of code was written once and then used many times from various other places in a program.

Today, subroutines are more often used to help make a program more structured, e.g., by isolating some algorithm or hiding some data access method. If many programmers are working on one program, subroutines are one kind of modularity that can help divide the work.

Sequence
In structured programming, the ordered sequencing of successive commands is considered one of the basic control structures, which is used as a building block for programs alongside iteration, recursion and choice.

Minimal structured control flow
In May 1966, Böhm and Jacopini published an article in Communications of the ACM which showed that any program with gotos could be transformed into a goto-free form involving only choice (IF THEN ELSE) and loops (WHILE condition DO xxx), possibly with duplicated code and/or the addition of Boolean variables (true/false flags). Later authors showed that choice can be replaced by loops (and yet more Boolean variables).

That such minimalism is possible does not mean that it is necessarily desirable; after all, computers theoretically need only one machine instruction (subtract one number from another and branch if the result is negative), but practical computers have dozens or even hundreds of machine instructions.

What Böhm and Jacopini's article showed was that all programs could be goto-free. Other research showed that control structures with one entry and one exit were much easier to understand than any other form, mainly because they could be used anywhere as a statement without disrupting the control flow. In other words, they were composable. (Later developments, such as non-strict programming languages – and more recently, composable software transactions – have continued this strategy, making components of programs even more freely composable.)

Some academics took a purist approach to the Böhm–Jacopini result and argued that even instructions like  and   from the middle of loops are bad practice as they are not needed in the Böhm–Jacopini proof, and thus they advocated that all loops should have a single exit point. This purist approach is embodied in the language Pascal (designed in 1968–1969), which up to the mid-1990s was the preferred tool for teaching introductory programming in academia. The direct application of the Böhm–Jacopini theorem may result in additional local variables being introduced in the structured chart, and may also result in some code duplication. Pascal is affected by both of these problems and according to empirical studies cited by Eric S. Roberts, student programmers had difficulty formulating correct solutions in Pascal for several simple problems, including writing a function for searching an element in an array. A 1980 study by Henry Shapiro cited by Roberts found that using only the Pascal-provided control structures, the correct solution was given by only 20% of the subjects, while no subject wrote incorrect code for this problem if allowed to write a return from the middle of a loop.

Control structures in practice
Most programming languages with control structures have an initial keyword which indicates the type of control structure involved. Languages then divide as to whether or not control structures have a final keyword.

 * No final keyword: ALGOL 60, C, C++, Go, Haskell, Java, Pascal, Perl, PHP, PL/I, Python, PowerShell. Such languages need some way of grouping statements together:
 * ALGOL 60 and Pascal:  ...
 * C, C++, Go, Java, Perl, PHP, and PowerShell: curly brackets  ...
 * PL/I:  ...
 * Python: uses indent level (see Off-side rule)
 * Haskell: either indent level or curly brackets can be used, and they can be freely mixed
 * Lua: uses  ...
 * Final keyword: Ada, APL, ALGOL 68, Modula-2, Fortran 77, Mythryl, Visual Basic. The forms of the final keyword vary:
 * Ada: final keyword is  + space + initial keyword e.g.,   ... ,   ...
 * APL: final keyword is  optionally + initial keyword, e.g.,   ...   or   ... ,   ...   or   ...  , however, if adding an end condition, the end keyword becomes
 * ALGOL 68, Mythryl: initial keyword spelled backwards e.g.,  ... ,   ...
 * Fortran 77: final keyword is  + initial keyword e.g.,   ... ,   ...
 * Modula-2: same final keyword  for everything
 * Visual Basic: every control structure has its own keyword.  ...  ;   ...  ;   ...  ;   ...

If-then-(else) statements
Conditional expressions and conditional constructs are features of a programming language which perform different computations or actions depending on whether a programmer-specified boolean condition evaluates to true or false.
 * . A form found in unstructured languages, mimicking a typical machine code instruction, would jump to (GOTO) a label or line number when the condition was met.
 * . Rather than being restricted to a jump, any simple statement, or nested block, could follow the THEN key keyword. This a structured form.
 * . As above, but with a second action to be performed if the condition is false. This is one of the most common forms, with many variations. Some require a terminal, others do not. C and related languages do not require a terminal keyword, or a 'then', but do require parentheses around the condition.
 * Conditional statements can be and often are nested inside other conditional statements. Some languages allow  and   to be combined into , avoiding the need to have a series of   or other final statements at the end of a compound statement.

Less common variations include:
 * Some languages, such as Fortran, have a three-way or arithmetic if, testing whether a numeric value is positive, negative or zero.
 * Some languages have a functional form of an  statement, for instance Lisp's.
 * Some languages have an operator form of an  statement, such as C's ternary operator.
 * Perl supplements a C-style  with   and.
 * Smalltalk uses  and   messages to implement conditionals, rather than any fundamental language construct.

Case and switch statements
Switch statements (or case statements, or multiway branches) compare a given value with specified constants and take action according to the first constant to match. There is usually a provision for a default action ("else", "otherwise") to be taken if no match succeeds. Switch statements can allow compiler optimizations, such as lookup tables. In dynamic languages, the cases may not be limited to constant expressions, and might extend to pattern matching, as in the shell script example on the right, where the  implements the default case as a glob matching any string. Case logic can also be implemented in functional form, as in SQL's  statement.

Loops
A loop is a sequence of statements which is specified once but which may be carried out several times in succession. The code "inside" the loop (the body of the loop, shown below as xxx) is obeyed a specified number of times, or once for each of a collection of items, or until some condition is met, or indefinitely. When one of those items is itself also a loop, it is called a "nested loop".

In functional programming languages, such as Haskell and Scheme, both recursive and iterative processes are expressed with tail recursive procedures instead of looping constructs that are syntactic.

Count-controlled loops
Most programming languages have constructions for repeating a loop a certain number of times. In most cases counting can go downwards instead of upwards and step sizes other than 1 can be used.

In these examples, if N < 1 then the body of loop may execute once (with I having value 1) or not at all, depending on the programming language.

In many programming languages, only integers can be reliably used in a count-controlled loop. Floating-point numbers are represented imprecisely due to hardware constraints, so a loop such as

for X := 0.1 step 0.1 to 1.0 do

might be repeated 9 or 10 times, depending on rounding errors and/or the hardware and/or the compiler version. Furthermore, if the increment of X occurs by repeated addition, accumulated rounding errors may mean that the value of X in each iteration can differ quite significantly from the expected sequence 0.1, 0.2, 0.3, ..., 1.0.

Condition-controlled loops
Most programming languages have constructions for repeating a loop until some condition changes. Some variations test the condition at the start of the loop; others test it at the end. If the test is at the start, the body may be skipped completely; if it is at the end, the body is always executed at least once.

A control break is a value change detection method used within ordinary loops to trigger processing for groups of values. Values are monitored within the loop and a change diverts program flow to the handling of the group event associated with them.

DO UNTIL (End-of-File) IF new-zipcode <> current-zipcode display_tally(current-zipcode, zipcount) current-zipcode = new-zipcode zipcount = 0 ENDIF zipcount++ LOOP

Collection-controlled loops
Several programming languages (e.g., Ada, D, C++11, Smalltalk, PHP, Perl, Object Pascal, Java, C#, MATLAB, Visual Basic, Ruby, Python, JavaScript, Fortran 95 and later) have special constructs which allow implicit looping through all elements of an array, or all members of a set or collection.

someCollection do: [:eachElement |xxx]. for Item in Collection do begin xxx end; foreach (item; myCollection) { xxx } foreach someArray { xxx } foreach ($someArray as $k => $v) { xxx } Collection coll; for (String s : coll) {} foreach (string s in myStringCollection) { xxx } someCollection | ForEach-Object { $_ } forall ( index = first:last:step... ) Scala has for-expressions, which generalise collection-controlled loops, and also support other uses, such as asynchronous programming. Haskell has do-expressions and comprehensions, which together provide similar function to for-expressions in Scala.

General iteration
General iteration constructs such as C's  statement and Common Lisp's   form can be used to express any of the above sorts of loops, and others, such as looping over some number of collections in parallel. Where a more specific looping construct can be used, it is usually preferred over the general iteration construct, since it often makes the purpose of the expression clearer.

Infinite loops
Infinite loops are used to assure a program segment loops forever or until an exceptional condition arises, such as an error. For instance, an event-driven program (such as a server) should loop forever, handling events as they occur, only stopping when the process is terminated by an operator.

Infinite loops can be implemented using other control flow constructs. Most commonly, in unstructured programming this is jump back up (goto), while in structured programming this is an indefinite loop (while loop) set to never end, either by omitting the condition or explicitly setting it to true, as. Some languages have special constructs for infinite loops, typically by omitting the condition from an indefinite loop. Examples include Ada, Fortran , Go , and Ruby.

Often, an infinite loop is unintentionally created by a programming error in a condition-controlled loop, wherein the loop condition uses variables that never change within the loop.

Continuation with next iteration
Sometimes within the body of a loop there is a desire to skip the remainder of the loop body and continue with the next iteration of the loop. Some languages provide a statement such as  (most languages), ,   (Fortran), or   (Perl and Ruby), which will do this. The effect is to prematurely terminate the innermost loop body and then resume as normal with the next iteration. If the iteration is the last one in the loop, the effect is to terminate the entire loop early.

Redo current iteration
Some languages, like Perl and Ruby, have a  statement that restarts the current iteration from the start.

Restart loop
Ruby has a  statement that restarts the entire loop from the initial iteration.

Early exit from loops
When using a count-controlled loop to search through a table, it might be desirable to stop searching as soon as the required item is found. Some programming languages provide a statement such as  (most languages),   (Visual Basic), or   (Perl), which effect is to terminate the current loop immediately, and transfer control to the statement immediately after that loop. Another term for early-exit loops is loop-and-a-half.

The following example is done in Ada which supports both early exit from loops and loops with test in the middle. Both features are very similar and comparing both code snippets will show the difference: early exit must be combined with an if statement while a condition in the middle is a self-contained construct.

Python supports conditional execution of code depending on whether a loop was exited early (with a  statement) or not by using an else-clause with the loop. For example,

The  clause in the above example is linked to the   statement, and not the inner   statement. Both Python's  and   loops support such an else clause, which is executed only if early exit of the loop has not occurred.

Some languages support breaking out of nested loops; in theory circles, these are called multi-level breaks. One common use example is searching a multi-dimensional table. This can be done either via multilevel breaks (break out of N levels), as in bash and PHP, or via labeled breaks (break out and continue at given label), as in Go, Java and Perl. Alternatives to multilevel breaks include single breaks, together with a state variable which is tested to break out another level; exceptions, which are caught at the level being broken out to; placing the nested loops in a function and using return to effect termination of the entire nested loop; or using a label and a goto statement. C does not include a multilevel break, and the usual alternative is to use a goto to implement a labeled break. Python does not have a multilevel break or continue – this was proposed in PEP 3136, and rejected on the basis that the added complexity was not worth the rare legitimate use.

The notion of multi-level breaks is of some interest in theoretical computer science, because it gives rise to what is today called the Kosaraju hierarchy. In 1973 S. Rao Kosaraju refined the structured program theorem by proving that it is possible to avoid adding additional variables in structured programming, as long as arbitrary-depth, multi-level breaks from loops are allowed. Furthermore, Kosaraju proved that a strict hierarchy of programs exists: for every integer n, there exists a program containing a multi-level break of depth n that cannot be rewritten as a program with multi-level breaks of depth less than n without introducing added variables.

One can also  out of a subroutine executing the looped statements, breaking out of both the nested loop and the subroutine. There are other proposed control structures for multiple breaks, but these are generally implemented as exceptions instead.

In his 2004 textbook, David Watt uses Tennent's notion of sequencer to explain the similarity between multi-level breaks and return statements. Watt notes that a class of sequencers known as escape sequencers, defined as "sequencer that terminates execution of a textually enclosing command or procedure", encompasses both breaks from loops (including multi-level breaks) and return statements. As commonly implemented, however, return sequencers may also carry a (return) value, whereas the break sequencer as implemented in contemporary languages usually cannot.

Loop variants and invariants
Loop variants and loop invariants are used to express correctness of loops.

In practical terms, a loop variant is an integer expression which has an initial non-negative value. The variant's value must decrease during each loop iteration but must never become negative during the correct execution of the loop. Loop variants are used to guarantee that loops will terminate.

A loop invariant is an assertion which must be true before the first loop iteration and remain true after each iteration. This implies that when a loop terminates correctly, both the exit condition and the loop invariant are satisfied. Loop invariants are used to monitor specific properties of a loop during successive iterations.

Some programming languages, such as Eiffel contain native support for loop variants and invariants. In other cases, support is an add-on, such as the Java Modeling Language's specification for loop statements in Java.

Loop sublanguage
Some Lisp dialects provide an extensive sublanguage for describing Loops. An early example can be found in Conversional Lisp of Interlisp. Common Lisp provides a Loop macro which implements such a sublanguage.

Loop system cross-reference table

 * 1)    does not count as an infinite loop for this purpose, because it is not a dedicated language structure.
 * 2)  C's   loop is a general loop construct, not specifically a counting one, although it is often used for that.
 * 3)  Deep breaks may be accomplished in APL, C, C++ and C# through the use of labels and gotos.
 * 4)  Iteration over objects was added in PHP 5.
 * 5)  A counting loop can be simulated by iterating over an incrementing list or generator, for instance, Python's.
 * 6)  Deep breaks may be accomplished through the use of exception handling.
 * 7)  There is no special construct, since the   function can be used for this.
 * 8)  There is no special construct, but users can define general loop functions.
 * 9)  The C++11 standard introduced the range-based for. In the STL, there is a   template function which can iterate on STL containers and call a unary function for each element. The functionality also can be constructed as macro on these containers.
 * 10)  Count-controlled looping is effected by iteration across an integer interval; early exit by including an additional condition for exit.
 * 11)  Eiffel supports a reserved word , however it is used in exception handling, not loop control.
 * 12)  Requires Java Modeling Language (JML) behavioral interface specification language.
 * 13)  Requires loop variants to be integers; transfinite variants are not supported.
 * 14)  D supports infinite collections, and the ability to iterate over those collections. This does not require any special construct.
 * 15)  Deep breaks can be achieved using   and procedures.
 * 16)  Common Lisp predates the concept of generic collection type.

Structured non-local control flow
Many programming languages, especially those favoring more dynamic styles of programming, offer constructs for non-local control flow. These cause the flow of execution to jump out of a given context and resume at some predeclared point. Conditions, exceptions and continuations are three common sorts of non-local control constructs; more exotic ones also exist, such as generators, coroutines and the async keyword.

Conditions
PL/I has some 22 standard conditions (e.g., ZERODIVIDE SUBSCRIPTRANGE ENDFILE) which can be raised and which can be intercepted by: ON condition action; Programmers can also define and use their own named conditions.

Like the unstructured if, only one statement can be specified so in many cases a GOTO is needed to decide where flow of control should resume.

Unfortunately, some implementations had a substantial overhead in both space and time (especially SUBSCRIPTRANGE), so many programmers tried to avoid using conditions.

Common Syntax examples:

ON condition GOTO label

Exceptions
Modern languages have a specialized structured construct for exception handling which does not rely on the use of  or (multi-level) breaks or returns. For example, in C++ one can write:

Any number and variety of  clauses can be used above. If there is no  matching a particular , control percolates back through subroutine calls and/or nested blocks until a matching   is found or until the end of the main program is reached, at which point the program is forcibly stopped with a suitable error message.

Via C++'s influence,  is the keyword reserved for declaring a pattern-matching exception handler in other languages popular today, like Java or C#. Some other languages like Ada use the keyword  to introduce an exception handler and then may even employ a different keyword (  in Ada) for the pattern matching. A few languages like AppleScript incorporate placeholders in the exception handler syntax to automatically extract several pieces of information when the exception occurs. This approach is exemplified below by the  construct from AppleScript:

David Watt's 2004 textbook also analyzes exception handling in the framework of sequencers (introduced in this article in the section on early exits from loops). Watt notes that an abnormal situation, generally exemplified with arithmetic overflows or input/output failures like file not found, is a kind of error that "is detected in some low-level program unit, but [for which] a handler is more naturally located in a high-level program unit". For example, a program might contain several calls to read files, but the action to perform when a file is not found depends on the meaning (purpose) of the file in question to the program and thus a handling routine for this abnormal situation cannot be located in low-level system code. Watts further notes that introducing status flags testing in the caller, as single-exit structured programming or even (multi-exit) return sequencers would entail, results in a situation where "the application code tends to get cluttered by tests of status flags" and that "the programmer might forgetfully or lazily omit to test a status flag. In fact, abnormal situations represented by status flags are by default ignored!" Watt notes that in contrast to status flags testing, exceptions have the opposite default behavior, causing the program to terminate unless the program deals with the exception explicitly in some way, possibly by adding explicit code to ignore it. Based on these arguments, Watt concludes that jump sequencers or escape sequencers are less suitable as a dedicated exception sequencer with the semantics discussed above.

In Object Pascal, D, Java, C#, and Python a  clause can be added to the   construct. No matter how control leaves the  the code inside the   clause is guaranteed to execute. This is useful when writing code that must relinquish an expensive resource (such as an opened file or a database connection) when finished processing:

Since this pattern is fairly common, C# has a special syntax:

Upon leaving the -block, the compiler guarantees that the   object is released, effectively binding the variable to the file stream while abstracting from the side effects of initializing and releasing the file. Python's  statement and Ruby's block argument to   are used to similar effect.

All the languages mentioned above define standard exceptions and the circumstances under which they are thrown. Users can throw exceptions of their own; C++ allows users to throw and catch almost any type, including basic types like, whereas other languages like Java are less permissive.

Async
C# 5.0 introduced the async keyword for supporting asynchronous I/O in a "direct style".

Generators
Generators, also known as semicoroutines, allow control to be yielded to a consumer method temporarily, typically using a keyword (yield description). Like the async keyword, this supports programming in a "direct style".

Coroutines
Coroutines are functions that can yield control to each other - a form of co-operative multitasking without threads.

Coroutines can be implemented as a library if the programming language provides either continuations or generators - so the distinction between coroutines and generators in practice is a technical detail.

Proposed control structures
In a spoof Datamation article in 1973, R. Lawrence Clark suggested that the GOTO statement could be replaced by the COMEFROM statement, and provides some entertaining examples. COMEFROM was implemented in one esoteric programming language named INTERCAL.

Donald Knuth's 1974 article "Structured Programming with go to Statements", identifies two situations which were not covered by the control structures listed above, and gave examples of control structures which could handle these situations. Despite their utility, these constructs have not yet found their way into mainstream programming languages.

Loop with test in the middle
The following was proposed by Dahl in 1972:

loop                          loop xxx1                          read(char); while test;                   while not atEndOfFile; xxx2                          write(char); repeat;                       repeat;

If xxx1 is omitted, we get a loop with the test at the top (a traditional while loop). If xxx2 is omitted, we get a loop with the test at the bottom, equivalent to a do while loop in many languages. If while is omitted, we get an infinite loop. The construction here can be thought of as a do loop with the while check in the middle. Hence this single construction can replace several constructions in most programming languages.

Languages lacking this construct generally emulate it using an equivalent infinite-loop-with-break idiom: while (true) { xxx1 if (not test) break xxx2 }

A possible variant is to allow more than one while test; within the loop, but the use of exitwhen (see next section) appears to cover this case better.

In Ada, the above loop construct (loop-while-repeat) can be represented using a standard infinite loop (loop - end loop) that has an exit when clause in the middle (not to be confused with the exitwhen statement in the following section).

Naming a loop (like Read_Data in this example) is optional but permits leaving the outer loop of several nested loops.

Multiple early exit/exit from nested loops
This construct was proposed by Zahn in 1974. A modified version is presented here. exitwhen EventA or EventB or EventC; xxx exits EventA: actionA EventB: actionB EventC: actionC endexit;

exitwhen is used to specify the events which may occur within xxx, their occurrence is indicated by using the name of the event as a statement. When some event does occur, the relevant action is carried out, and then control passes just after endexit. This construction provides a very clear separation between determining that some situation applies, and the action to be taken for that situation.

exitwhen is conceptually similar to exception handling, and exceptions or similar constructs are used for this purpose in many languages.

The following simple example involves searching a two-dimensional table for a particular item.

exitwhen found or missing; for I := 1 to N do for J := 1 to M do if table[I,J] = target then found; missing; exits found:  print ("item is in table"); missing: print ("item is not in table"); endexit;

Security
One way to attack a piece of software is to redirect the flow of execution of a program. A variety of control-flow integrity techniques, including stack canaries, buffer overflow protection, shadow stacks, and vtable pointer verification, are used to defend against these attacks.

title: Control flow


text:
Talk:Infinite loop

Infinite loops found in society??
Wtf is the deal with this section? This article is part of the computer science wikiproject. It is not social science. 66.190.142.200 (talk) 08:11, 6 April 2008 (UTC)

 * I want to point out that I just checked the "citation" Rmarkosian gives in the "infinite loops in society" paragraph. It redirects to a website he made himself. It has absolutely ZERO to do with the topic of this article and I have removed it accordingly. That is ridiculous. 66.190.142.200 (talk) 08:19, 6 April 2008 (UTC)

Perhaps this section is here because it a study of systems, and systems in and of themselves are not limited to CS. — Preceding unsigned comment added by 66.162.159.254 (talk) 19:30, 8 July 2014 (UTC)

The example in BASIC
If a programmer were to create that 2-line example in QBASIC, QuickBASIC, or similar interpreter/compiler it would not be an infinite loop. The program would crash when it runs out of stack space. I changed it to:

This is a more correct example, as a DO LOOP instruction will not store a location in the stack for use by the RETURN function like a GOTO call does. —Preceding unsigned comment added by 66.190.142.200 (talk) 01:05, 6 April 2008 (UTC)

 * I believe you are wrong. GOSUB stores a location on the stack (because it has to return again later) but GOTO does not; it's a simple jump. 2001:630:53:26:3035:D7FD:D5B0:4A05 (talk) 14:25, 3 December 2014 (UTC)

What a joke!
The joke here (for the non-computer-programmer) is that infinite loop links to endless loop which links to infinite loop which links to endless loop which links to infinite loop which links to endless loop which links to infinite loop which links to endless loop which links to infinite loop which links to endless loop which links to infinite loop which links to endless loop which links to infinite loop which links to endless loop which links to infinite loop which links to endless loop which. ..

 * yes that's funny, but at the same time, not particularly helpful... sorry.  Wesley

 * Can't there be any jokes in the Wikipedia? Sheesh! (I won't un-revert if someone de-humorizes them.) User:Ed Poor

 * There are Jokes in Wikipedia, as well as humour, laughs, fun and even Sheesh!

But surely they are not the same thing.

I suggest that:
 * An endless loop is any loop that connects back to its self with no way of getting out.

user:Perry Bebbington
 * An infinite loop is a loop constructed of an infinite number of instructions and therefore only loops back after an infinite amount of time, or, more practically, never.

 * I've never heard infinite loop used to mean this. I've always heard  infinite loop used in the meaning above for endless loop:  it is defined this way in the Jargon Lexicon at http://www.tuxedo.org/~esr/jargon/   endless loop does not appear there. -- Olof

Thank you, Axel and Lee. It looks just about finished now. User:Ed Poor, unoffical "spirit of Larry"

Fair enough. user:Perry Bebbington

It seems fair game to link them to each other, it is not like the article was deleted to just include the other link! —Preceding unsigned comment added by Bennyj600 (talk • contribs) 21:54, 27 April 2009 (UTC)

Misnomer.
I'm actually a little tiny bit surprised that there is no mention that this is technically a misnomer. For something to be infinite, it must be growing without bounds. I have yet to see a program loop that "grows" let alone increases the rate of growth. Additionally, these loops all terminate - if nothing else, the programmer will pull the plug on the machine; the loop will stop. --Connel MacKenzie 06:24, Apr 6, 2005 (UTC)

 * Kind of a bizarre over-interpretation of the words, so not surprising no one would mention it. Also, only possible to "pull the plug" on a physical machine; the concept applies to theoretical constructs such as Turing machines, no plug-pulling there. Stan 14:09, 6 Apr 2005 (UTC)

 * In a theoretically exact implementation, the time required to execute the loop is infinite Superm401 01:55, Apr 14, 2005 (UTC).

I also find it strange to talk about the time needed to "execute" an endless loop. Since they do not end by definition, even an infinite amount of time won't bring an endless loop to its end. In short, endless loops are not executable in the usual sense - they wouldn't cause programmers headaches if they were. So, I'm voting for the term "endless loop" or at least a clarification of both terms, since "loop without end" is what they are, not "loop running/having run for an infinite time/nr. of iterations". If no one objects, I'm gonna add a clarification myself. Catskineater (talk) 03:45, 12 January 2010 (UTC)
 * I agree with the misnomer notion. While you surely cannot pull the plug on a theoretical construct like a turing machine, it is still misleading to call the concept "infinite loop". At every point in time it will only have executed a finite number of iterations, and it will never enter its "infinite-th" iteration. That is the same misconception that leads some people to believe the integers actually contain an element "infinity". They grow without bound, their cardinality is infinite, but every single one of them is finite. There may be valid theoretical constructs that allow a loop to execute an infinite number of iterations (maybe related to Omega language), but that's probably not the concept written about in this article.

 * Similarly you could say that it's not an endless loop — the loop ends when you pull the plug. I fail to see how "endless loop" is an improvement. The term "infinite loop" is ubiquitous in programming lingo, we should stick to that. -- intgr [talk] 22:32, 13 January 2010 (UTC)

 * I don't agree that this is a misnomer. No doubt you have a source that defines infinite as "growing" without bounds (I didn't find one), but even if you use that definition, the number of times the loop executes is the thing that grows without bounds, or the time taken to completion - both of which seem perfectly valid to me. I hardly think the user pulling the plug or any other externally acting force is relevant. Any number of computer science concepts would be wrong if you had to take power failure, someone attacking the RAM module with a soldering iron, bear attack, etc. into account. ("I've managed to rewrite your O(n^2) algorithm to be O(1)", "Really?", "Yes - the code's the same, but you drop the laptop into a volcano after the first iteration.", "Good thinking - that would definitely halt the program.")31.185.141.99 (talk) 11:27, 8 August 2014 (UTC)

Infinite recursion rewrite

 * Technically, an infinite loop can only occur in iterative programming, which is programming that repeats itself until some condition is met. However, infinite recursion can occur in recursive programming, and an infinitely recursive sequence can be seen as a pseudo-infinite loop. Recursive functions operate by solving part of a problem, then calling on themselves to solve the rest. For example, a recursive function to sum the numbers up to a number n might add n to the sum of the numbers up to n-1. The way this process ends is with a special case. In this situation, for instance, if n were 1 the function would return 1. It is possible to create infinite recursion by failing to have that ending condition, meaning the function theoretically calls itself forever. (It would actually run out of stack space.) Recursion is perfectly safe with an adequate ending condition.

I rewrote this. The distinction given between infinite loop and infinite recursion above isn't exact (see "LAMBDA: The Ultimate GOTO" by Guy Steele). I used the same example (plus a more trivial one), but with code. --Mgreenbe 13:41, 23 January 2006 (UTC)

This should...
... null result. -- Chris 18:14, 5 November 2006 (UTC)

tight loop
Tight loop links to this article. Is it the same as infinite loop? --Abdull 08:02, 6 July 2007 (UTC)
 * No. A tight loop is a loop with few instructions in the body that's executed many times (they are prime candidates for optimization). Infinite loops are often tight, but a tight loop is rarely infinite. The term "tight loop" doesn't warrant a separate article; at best it's dictionary material. The redirect isn't really appropriate, though. 82.95.254.249 15:15, 30 September 2007 (UTC)

Request for addition
Is there any standard/provable practices for avoiding and/or detecting infinite loops in a system? Can a check be made to the effect of "is this instruction causing an infinite loop? Or is that perhaps, on the contrary, theoretically impossible due to the halting problem? If so, a link and a blurb about how this problem relates to infinite loops would be useful. —Preceding unsigned comment added by 83.89.0.118 (talk) 12:56, 27 July 2008 (UTC) I see now that there is actually a very brief paragraph linking to the halting problem. I still think it would be nice if it was featured more prominently.  —Preceding unsigned comment added by 83.89.0.118 (talk) 13:02, 27 July 2008 (UTC)

Obviously "See also" should include a link to Infinite Loop
...it has been done so many times because it is funny and encyclopedic. This page is surely an exception to the "no self-links" rule, which is overwritten by the democratic rule of Wikipedia (the number of people wanting to add the link is greater than the number of people wanting to remove it). Please tell us why this argument is invalid or I'll add the link. ··gracefool☺ 10:21, 10 July 2009 (UTC)

 * Could not agree more. The somewhat snarky HTML comment in that section notwithstanding, it's exactly what that section needs. It's "been done, many times", because it's AWESOME. —Preceding unsigned comment added by 203.26.95.65 (talk) 05:09, 7 May 2010 (UTC)

C++ Example
I added one that is a perfect infinite loop, correct? —Preceding unsigned comment added by Segiddins (talk • contribs) 00:55, 19 July 2009 (UTC)

while ( true )
Is it considered bad form to use while ( true )? E.g.,

This is a simplistic example since here one could just as easily use

However, I'm sure we have all run into situations in which it was tempting to use a while ( true ), but is it bad form?  Tisane  talk/stalk 15:33, 16 June 2010 (UTC)

 * the rule is that every loop terminates, and when you pretend it doesn't like that, it makes the code harder to read. The example you gave is trivial, and all programming readability conventions can be ignored for trivial cases.

 * You can see how someone coming by later would have a hard time knowing what was going on. The condiiton at the top of the loop helps because it provides immediate context.  i kan reed (talk) 16:59, 7 June 2011 (UTC)

 * There are some scenarios where while(true) is useful. In such cases I find it is generally useful to add a comment noting where I expect the loop to terminate, eg:

 * Mitch Ames (talk) 10:39, 9 June 2011 (UTC)
 * Nah, it's fine. The compiler reads it fine. It's easier to read for some than
 * } Learning With Ameer (talk) 10:51, 31 January 2023 (UTC)
 * } Learning With Ameer (talk) 10:51, 31 January 2023 (UTC)

Image should be removed
The image has nothing to do with the subject matter of the article, leading to confusion. There is an article on the street, this image does not belong here. —Preceding unsigned comment added by 142.103.72.44 (talk) 16:57, 14 July 2010 (UTC)

Merger proposal
Alderson loop is a short article should be merged here. The loop is nothing special, it's just a common type of infinite loops and there is no reason to keep it as a separate article. Zakhalesh (talk) 17:40, 19 February 2011 (UTC)

No opposing opinions, so I'll get on with the merge. Zakhalesh (talk) 10:33, 26 February 2011 (UTC)

Done. Improve the section if you wish! Zakhalesh (talk) 10:56, 26 February 2011 (UTC)

Redirect
This should be redirected to Infinite loop. Ten Pound Hammer, his otters and a clue-bat • (Otters want attention) 01:58, 15 April 2011 (UTC)

Java
A humorous example of an infinite loop in Java:

Maybe we could include it, but IDK what section. Thanks! 68.173.113.106 (talk) 21:46, 3 February 2012 (UTC)

 * XD wow! Maybe replace with
 * ? Learning With Ameer (talk) 10:52, 31 January 2023 (UTC)
 * ? Learning With Ameer (talk) 10:52, 31 January 2023 (UTC)
 * ? Learning With Ameer (talk) 10:52, 31 January 2023 (UTC)

Undefined Behaviour
The C example in section 1.2.1 has undefined behaviour, as the int variables will eventually overflow; on a typical non-optimizing compiler the loop will terminate. TimothyEBaldwin (talk) 18:06, 10 February 2012 (UTC)

Pseudo-infinite loops??
...are just very long loops? This is so scientific. Long in code? Long in execution? Does someone call a long loop pseudo-infinite? --91.50.196.105 (talk) 19:04, 11 April 2012 (UTC)

"Alderson Loop" example is incorrect
The example of an "Alderson loop," near the end of the article, is not an endless loop at all. It's fairly simple to see that if (as the comments) say, the first section of the 'if' block never executes, then the 'else' block (and therefore the 'break' statement) always executes. Am I misunderstanding the intention of the section, or is that code just plain wrong?

If I'm not misunderstanding, the author's intention was this: Alex Heinz (talk) 16:54, 5 September 2012 (UTC)
 * ✅. You're right that it was broken; thanks!  I didn't use your exact logic, but tried to make something that was less involved with the if-else path. —chaos5023 (talk) 17:20, 5 September 2012 (UTC)

Undecidable problem
This sentence clearly refers specificly to Undecidable problem that is a subcategory of the decision problem and not to decision problems in general, it was laborous to find information about undecibility from that article. Also "Undecidable problem" article refers to "Decision problem" at the very begining so that if the reader does not understand the term he or she can check that out easily. 37.136.56.173 (talk) 10:27, 22 October 2013 (UTC)

Very Hard HSCTF Problem
HSCTF Participants should also be made aware that they should reverse the order of the first part and remove every other letter starting with removing the second to get their key. — Preceding unsigned comment added by Temptemptemp42 (talk • contribs) 01:59, 20 May 2014 (UTC)

Another BASH Example
I'm not sure if we should bother including it, as it is less useful, but I recently learned the following:

Displays:

...and so on. NickNackGus (talk) 02:25, 8 October 2014 (UTC)
 * That's not a loop per se; there is probably a loop inside the source code of the yes utility, though.--greenrd (talk) 09:21, 7 December 2014 (UTC)

Pseudo-infinite loops, Section "Impossible termination condition"
In the above mentioned section of the article it is stated, that a signed integer would behave differently. Now - correct me if I am wrong, but when I learned C and C++ (a little later), I was taught that on the level of bitwise arithmetic, a signed and unsigned int behave exactly the same. Let's use a signed char (8-bit-int) for explanation: Positive values range from 0 to 127 (0111'1111) and negative values from -128 (1000'0000) to -1 (1111'1111). Now doing i++ on a value of 127 gives -128, but bitwise it's just a "+0000'0001", wrapping into the sign-bit and thus turning the number negative. That said, a signed or unsigned int (char or short or long or...) would do the exact same thing in the loop and thus reach the break-condition exactly the same. Am I wrong? — Preceding unsigned comment added by 62.153.114.18 (talk) 10:16, 19 November 2019 (UTC)

 * First, comparison operators behave differently on signed and unsigned types. "x > 0" yields true (i.e., 1) and false (i.e., 0), if x was declared unsigned char and char, respectively, and x holds the binary value "1000'0000".
 * Second, I vaguely remember to have read that for unsigned char, incrementing the maximal value 1111'1111 is well-defined (and guaranteed to result in 0000'0000), but for signed char, incrementing the maximal value 0111'1111 undefined (meaning that the compiler may handle it as it likes). For example, it may assume that the result is 0111'1111 again, thus allowing it to translate it as an endless loop. I guess, this is what the text means. - Jochen Burghardt (talk) 17:34, 19 November 2019 (UTC)

A Commons file used on this page or its Wikidata item has been nominated for deletion
The following Wikimedia Commons file used on this page or its Wikidata item has been nominated for deletion: Participate in the deletion discussion at the. —Community Tech bot (talk) 08:23, 8 August 2020 (UTC)
 * Google Home vs. Amazon Echo.webm

Infinite loops should be added somewhere
Someone should link this to an actual infinite loop (like the endless to infinite loop infinite loop mentioned earlier).

Wow, where's JS?
Nice. Got stuck in many loops. But, why put examples in archaic langauges? Also, JS is now a prominent language. Can you add JS examples?

(or I do) Learning With Ameer (talk) 10:54, 31 January 2023 (UTC)

title: Talk:Infinite loop