master
Miloslav Ciz 6 months ago
parent 8899b4ff7f
commit 5d2126a4ee

@ -128,6 +128,10 @@ And yeah, of course sometimes we make [jokes](jokes.md) and sarcastic comments,
Yes, but it may need an elaboration. There are many different kinds of love: love of a sexual partner, love of a parent, love of a pet, love of a hobby, love of nature etc. Obviously we can't love everyone with the same kind of love we have e.g. for our life partner, that's impossible if we've actually never even seen most people who live on this planet. The love we are talking about -- our universal love of everyone -- is an unconditional love of life itself. Being alive is a miracle, it's beautiful, and as living beings we feel a sense of connection with all other living beings in this universe who were for some reason chosen to experience this rare miracle as well -- we know what it feels like to live and we know other living beings experience this special, mysterious privilege too, though for a limited time. This is the most basic kind of love, an empathy, the happiness of seeing someone else live. It is sacred, there's nothing more pure in this universe than feeling this empathy, it works without language, without science, without explanation. While not all living beings are capable of this love (a virus probably won't feel any empathy), we believe all humans have this love in them, even if it's being suppressed by their environment that often forces them compete, hate, even kill. Our goal is to awaken this love in everyone as we believe it's the only way to achieve a truly happy coexistence of us, living beings.
### Why do you say you don't fight when clearly you are fighting the whole world here.
That's what you would call it -- am I literally physically punching the world in the face or something? Rather ask yourself why you choose to compare things like education and advocating love to a war. I am just revealing truth, educating, sometimes expressing frustration, anger and emotion, sometimes [joking](jokes.md), without [political correctness](political_correctness.md). [Sometimes names greatly matter](name_is_important.md) and LRS voluntarily chooses to never view its endeavor as being comparable to a [fight](fight_culture.md), like capitalists like to do -- in many situations this literally IS only about using a different word -- seemingly something of small to no importance -- however the word sets a mood and establishes a mindset, when we go far enough, it will start to matter that we have chosen to not see ourselves as fighter, for example we **will NEVER advocate any violence or call for anyone's death**, unlike for example [LGBT](lgbt.md), [feminists](feminism.md) and [Antifa](antifa.md), the "fighters".
### I dislike this wiki, our teacher taught us that global variables are bad and that [OOP](oop.md) is good.
This is not a question you dummy. Have you even read the title of this page? Anyway, your teacher is stupid, he is, very likely unknowingly, just spreading the capitalist propaganda. He probably believes what he's saying but he's wrong.

@ -41,6 +41,8 @@ The following is a sum up of some basic properties of the game, many of which sh
- It is very fun to play around with. There are many creatures to discover, observe and document (making this kind of a Pokémon game lol?).
- ...
**Where to try it out?** You can easily write your own game of life simulator, it's very simple -- you can even just copy paste the code below ;) However a nice, more advanced [FOSS](foss.md) program is e.g. [Golly](golly.md).
## Rules
We have an [infinite](infinity.md), regular two dimensional grid of cells, each of which may be in one of two states: alive or dead. Each cell considers its nearest eight cells its neighbors. The game runs in discrete steps, or rounds. Every round each cell counts its neighbors' states and will set its state for the next round according to these rules:
@ -54,10 +56,34 @@ This is basically it as for the definition of rules -- as we can see, the game i
## Rule Implications And Properties
There are thousands of documented structures, kind of "life forms" or "species" behaving in interesting ways, that can exist in game of life, some appear commonly and naturally (from a randomly initialized start state), some are rare and often have to be manually created. Common classes of such structures include **still life** (structures that persist and won't disappear on their own, some may just persist without even changing -- possibly simplest such structure is a 2x2 block of live cells), **oscillators** (structures that stay in place and periodically change their appearance, one of the simplest is blinker, a 1x3 block of live cells) and **space ships** (structures moving through space on their own, one of the simplest and most famous is glider), further include for example **guns** (structures that produce, or "shoot" space ships). Some patterns can [self replicate](self_replication.md) (create an identical copy of themselves), some can [grow without limit](cancer.md).
There are thousands of documented structures, kind of "life forms" or "species" behaving in interesting ways, that can exist in game of life, some appear commonly and naturally (from a randomly initialized start state), some are rare and often have to be manually created. Common classes of such structures include **still life** (structures that persist and won't disappear on their own, some may just persist without even changing -- possibly simplest such structure is a 2x2 block of live cells), **oscillators** (structures that stay in place and periodically change their appearance, one of the simplest is blinker, a 1x3 block of live cells) and **space ships** (structures moving through space on their own, one of the simplest and most famous is glider), further include for example *guns* (structures that produce, or "shoot" space ships), *puffers* (kind of spaceships that leave a trail behind them), *waves*, *rotors*, *crawlers* etc. Some patterns can [self replicate](self_replication.md) (create an identical copy of themselves), some can [grow without limit](cancer.md). Here are some basic life structures:
```
[] [] [][] [][] [][]
[] [][] [] [] [] [] []
[][][] [][] [] [][] [][] [][]
glider block blinker beehive mirrored table
[][] [][][][] [][]
[][] [] [] []
[] []
[][][][] [] [] [][]
[][] [] []
[][] [][] [] lightweight beacon
[] [] [] [][] spaceship
[] [] [] [][] [][]
[][][][] []
[]
[][] pin wheel [][]
[][] toad
```
A typical run of the game from a randomly initialized grid looks a bit similar to the evolution of our [Universe](universe.md): initially (after the [Big Bang](big_bang.md)) the world exhibits a [chaotic](chaos.md) behavior, looking like a random noise of cells switching on and off seemingly without order, then, after a short while, more orderly patterns of the three basic kinds (still lives, oscillators and space ships) emerge and start interacting, either by being too close to each other or by shooting space ships and hitting each other -- this is a kind of "golden age" of life (interesting events, for example spontaneous emergences of [symmetry](symmetry.md)). After some time this usually settles on a repeating set of states with just still life and oscillators, far enough from each other to influence each other (a kind of heat death of the universe).
Staying at analogies with our Universe, game of life also recognizes its analogy to **[speed of light](speed_of_light.md)** (or *speed of life*), the fastest speed by which [information](information.md) can propagate through the game of life universe -- in the basic version this speed is simply one cell per turn (as any possible pattern, no matter how complex, can only ever influence its immediately neighboring cells in one turn). This speed is exploited by some algorithms to [optimize](optimize.md) the game's simulation.
As game of life is [Turing complete](turing_complete.md), some things about it are [undecidable](decidability.md), for example whether a given pattern will ever appear.
**Statistical properties**: the following experiments were performed in a world with 128x128 cells and wrapping space. From a random starting state with 50% live cells populations mostly seem to soon somewhat stabilize at around a little bit more than one third of cells being alive. The following shows 16 runs, noting percentage of live cells after each 256 steps (notice how in one case a population just dies out immediately and in another it very much struggles to stay alive):
@ -83,6 +109,8 @@ run 16: 50% 33% 39% 37% 34% 43% 32% 38% 36% 45% 32% 35% 28% 35% 32% 35% 43%
## Code/Programming
Programming a simple version of game of life is quite easy and may take just 10 minutes, however if we aim for greatly optimized efficiency (speed, memory) or features such as truly infinite space or reversible time, matters will of course get very complex. Let's start with the simple way.
The following is a simple [C](c.md) implementation of a [wrapping](wrap.md) version of game of life (i.e. the world is not actually infinite):
```
@ -175,7 +203,11 @@ int main(void)
The world cells are kept in the `world` array -- each cell holds the current state in the lowest bit. We perform drawing and update of the world at the same time. Notice especially that while updating the cells, we mustn't overwrite the cell's current state until its neighbors have been updated as well! Not realizing this is a **common beginner error** and results in so called [naive](naive.md) implementation. We avoid this error by first storing each cell's next state in the second lowest bit (keeping its current state in the lowest bit), and then, after all cells have been updated, we iterate over all cells again and perform one bit shift to the left (making the computed next states into current states).
TODO: extensions, continuous, code, optimizations
For real serious projects there exist highly optimized [algorithms](algorithm.md) such as [QuickLife](quicklife.md) and [HashLife](hashlife.md) -- if you are aiming to create a state-of-the-art program, check them out. Here we will not be discussing them further as the are beyond the scope of this article.
**Implementing infinite world:** it is possible to program the game so that the world has no boundaries (or possibly has boundaries imposed only by maximum values of the used integer [data type](data_type.md); these could of course be removed by using an advanced arbitrary size integer type). The immediate straightforward idea is to simply resize the world when we need more space, i.e initially we allocate some space to the world (let's say 128x128 cells) and once a cell comes to life outside this area we resize it by [allocating](memory_allocation.md) more memory -- of course this resizing should happen by some bigger step than one because the pattern will likely grow further (so we may resize e.g. from 128x128 right to 256x256). This can of course be highly inefficient, a single glider traveling far away in one direction may cause resizing the world to astronomical size; therefore more smartness can be applied, for example we may allocate spaces by big tiles (let's say 64x64) wherever they are needed (and of course deallocate/free the ones that no longer have any live cells) -- this will require a lot of code for managing the tiles and being able to actually quickly simulate such representation of the world. It would also be possible to have no world array at all but rather only keep a [list](list.md) of cells that are alive, each one storing its coordinates -- this might of course become inefficient for a big number of live cells, however good optimization could make this approach bearable; a basic optimization here would have to focus on very quick determination of each cell's neighbors, which could be achieved e.g. by keeping the list of the cells sorted (e.g. from northwestmost to southeastmost). Another idea (used e.g. by the QuickLife algorithm) is to use a dynamic [tree](tree.md) to represent the world.
Some basic **[optimization](optimization.md)** ideas are following: firstly, as shown in the code above, even though we could theoretically only allocate 1 bit for each cell, it is better to store each cell as a whole byte or possibly a whole integer (which will help memory alignment and likely speed up the simulation greatly) -- this also comes with the great feature of being able to store the current state in the lowest bit and older states in higher bits, which firstly allows rewinding time a few states back (which as seen below will be useful further) and secondly we don't need an extra array for performing the cell updates. Next, as another simplest optimization, we may try to skip big empty areas of the world during the update (however watch out for the border where a new cell can spawn due to a neighboring pattern). We may take this further and also skip areas that contain static, unchanging still life -- this could all be done e.g. by dividing the world into tiles (let's say 64x64) and keeping a record about each tile. This can be taken yet further and also detect e.g. periodically repeating still life (such as blinkers); if for example we know a tile contains pattern that repeats with period 2 and we are able to rewind time one step back (which we can easily do, as shown above), we can simply do this step back in time instead of simulating the whole cell. Next we may try to use [dynamic programming](dynamic_programming.md), e.g. [caches](caches.md) and [hash tables](hash_table.md) to keep results of recently performed big pattern simulations to reuse in the future, so that we don't have to simulate them again (i.e. for example remembering how a glider evolved from one frame to another so that next frame we simply copy-paste the result instead of actually simulating each cell again); HashLife algorithm is doing something like this. Also try to focus greatly on the [bottle necks](bottle_neck.md) such as counting the cell's neighbors -- it will be greatly worth it if you speed this code up, even for the cost of using more memory, i.e. consider things like loop unrolling, function inlining and [look up tables](lut.md) for counting the neighbors. Further speedup may be achieved by [parallelization](parallelism.md) ([multithreading](multithreading.md), [GPU](gpu.md), [SIMD](simd.md), ...) as isolated parts of the world may be simulated independently, though this will introduce hardware dependencies and [bloat](bloat.md) and is therefore discouraged.
## Extensions, Modifications And Generalizations
@ -186,5 +218,3 @@ Game of Life can be extended/generalized/modified in great number of ways, some
- **[Lenia](lenia.md)**: A relatively recent, highly generalized continuous version of Game of Life -- it is yet more generalized version of Smooth Life where all variables are continuous, including space, time and states, AND furthermore adds multiple channels ("plains" of existence that interact with each other). This system produces incredible patterns and great many organisms.
- **different grid geometry, more states, additional rules, ...**: Slight modifications one can make to experiment, e.g. trying out hexagonal grid, triangular grid, [hyperbolic space](hyperbolic.md), 3D and higher dimensional grids, more states (e.g. cells that remember their age) etc. Modifying the base rules is also possible, creating so called life-like automata: the basic game of life is denoted as B3/S23 (born with 3, stays alive with 2 or 3), some life-like variants include e.g. High Life which adds a rule that a dead cell with 6 live neighbors comes alive (B36/S23) -- this gives rise to a new pattern known as *replicator*.
TODO

@ -57,7 +57,7 @@ LRS Wiki is [collapse](collapse.md) ready! Feel free to print it out, take it to
If you're new here, you may want to read answers to [frequently asked questions](faq.md) (**FAQ**), including "Are you a fascist?" (spoiler: no) and "Do you love Hitler?".
STOP [CAPITALISM](capitalism.md) STOP [BLOAT](bloat.md) STOP [censorship](censorship.md) STOP [business](business.md) STOP [bullshit](bs.md) STOP [copyright](copyright.md) STOP [working](work.md) STOP [coding](coding.md) STOP [competing](competition.md) STOP [fighting](fight_culture.md) STOP [consuming](consumerism.md) STOP [producing](productivity_cult.md) STOP [worshiping people](hero_culture.md) STOP [fascism](fascism.md) STOP [economy](economy.md) STOP slavery STOP violence STOP wearing clothes STOP eating animals [STOP being an idiot](unretard.md) etc. Start [loving](love.md), sharing, creating and caring :) <3
STOP [CAPITALISM](capitalism.md) STOP [BLOAT](bloat.md) STOP [censorship](censorship.md) STOP [business](business.md) STOP [bullshit](bs.md) STOP [copyright](copyright.md) STOP [working](work.md) STOP [coding](coding.md) STOP [competing](competition.md) STOP [fighting](fight_culture.md) STOP [consuming](consumerism.md) STOP [producing](productivity_cult.md) STOP [worshiping people](hero_culture.md) STOP [fascism](fascism.md) STOP [economy](economy.md) STOP [slavery](work.md) STOP violence STOP [pedophobia](pedophobia.md) STOP wearing clothes STOP [eating animals](vegetarianism.md) [STOP being an idiot](unretard.md) etc. Start [loving](love.md), sharing, creating and caring :) <3
## What Is Less Retarded Software/Society?
@ -92,7 +92,7 @@ Are you a noob but see our ideas as appealing and would like to join us? Say no
Here there are quick directions to some of the important topics; for more see the links provided at the top that include the list of all articles as well as a single page HTML which is good for "fulltext search" via crtl+F :)
- **basics**: [bloat](bloat.md) -- [capitalist software](capitalist_software.md) -- [less retarded society](less_retarded_society.md) -- [LRS](lrs.md) -- [pseudoleft](pseudoleft.md)
- **LRS inventions/propositions**: [Anarch](anarch.md) -- [comun](comun.md) -- less retarded [chess](chess.md) -- [less retarded hardware](less_retarded_hardware.md) -- [less retarded society](less_retarded_society.md) -- [less retarded software](lrs.md) -- [less retarded watch](less_retarded_watch.md) -- [public domain computer](public_domain_computer.md) -- [raycastlib](raycastlib.md) -- [rock carved binary data](rock_carved_binary_data.md) -- [SAF](saf.md) -- [small3dlib](small3dlib.md) -- [smallchesslib](smallchesslib.md) -- [world broadcast](world_broadcast.md) -- [unretardation](unretard.md)
- **LRS inventions/propositions**: [Anarch](anarch.md) -- [comun](comun.md) -- less retarded [chess](chess.md) -- [less retarded hardware](less_retarded_hardware.md) -- [less retarded society](less_retarded_society.md) -- [less retarded software](lrs.md) -- [less retarded watch](less_retarded_watch.md) -- [public domain computer](public_domain_computer.md) -- [raycastlib](raycastlib.md) -- [rock carved binary data](rock_carved_binary_data.md) -- [SAF](saf.md) -- [small3dlib](small3dlib.md) -- [smallchesslib](smallchesslib.md) -- [tinyphysicsengine](tinyphysicsengine.md) -- [world broadcast](world_broadcast.md) -- [unretardation](unretard.md)
- **programming/computers**: [3D rendering](3d_rendering.md) -- [binary](binary.md) -- [computer](computer.md) -- [AI](ai.md) -- [algorithm](algorithm.md) -- [C](c.md) -- [C tutorial](c_tutorial.md) -- [computer graphics](graphics.md) -- [data structure](data_structure.md) -- [demoscene](demoscene.md) -- [GNU](gnu.md) -- [hacker culture](hacking.md) -- [hardware](hardware.md) -- [Internet](internet.md) -- [KISS](kiss.md) -- [Linux](linux.md) -- [OOP](oop.md) -- [open consoles](open_console.md) -- [operating system](os.md) -- [optimization](optimization.md) -- [portability](portability.md) -- [procedural generation](procgen.md) -- [programming](programming.md) -- [programming language](programming_language.md) -- [suckless](suckless.md) -- [Unix philosophy](unix_philosophy.md) -- [web](www.md)
- **math/theory**: [aliasing](aliasing.md) -- [chaos](chaos.md) -- [combinatorics](combinatorics.md) -- [fractal](fractal.md) -- [formal languages](formal_language.md) -- [information](information.md) -- [linear algebra](linear_algebra.md) -- [logic](logic.md) -- [math](math.md) -- [pi](pi.md) -- [probability](probability.md)
- **society**: [anarchism](anarchism.md) -- [anarcho pacifism](anpac.md) -- [capitalism](capitalism.md) -- [censorship](censorship.md) -- [collapse](collapse.md) -- [communism](communism.md) -- [democracy](democracy.md) -- [everyone does it](everyone_does_it.md) -- [fascism](fascism.md) -- [feminism](feminism.md) -- [fight culture](fight_culture.md) -- [history](history.md) -- [homosexuality](gay.md) -- [left vs right vs pseudoleft](left_right.md) -- [Jesus](jesus.md) -- [less retarded society](less_retarded_society.md) -- [LGBTQWTF](lgbt.md) -- [science](science.md) vs [soyence](soyence.md) -- [productivity cult](productivity_cult.md) -- [selflessness](selflessness.md) -- [socialism](socialism.md) -- [Venus project](venus_project.md) -- [work](work.md)

@ -23,4 +23,6 @@ Political correctness goes strictly against [free speech](free_speech.md), it tr
Of course, political correctness doesn't stop at censoring simple words, don't get mistaken. Facts in textbooks and encyclopedias such as those regarding [race](race.md) and sex differences are censored and replaced with lies with the help of [soyence](soyence.md). Political correctness tries to forcefully dictate standards of a culture by an extremely rapidly changing fashion, e.g. the standard of beauty, politeness and so on -- last week we celebrated the international gender fluid day but THIS WEEK we celebrate fat disabled women with acne issues, all TV ads must have at least one crippled landwhale or else you're cancelled. If you can't keep up with their latest inventions you'll be executed -- on no, you used the term "mentally ill"! HOW DARE YOU THAT'S SO OFFENSIVELY AGGRESSIVE YOU HAVE TO SAY NEURODIVERGENT, you're basically [Hitler](hitler.md) now (but wait until next week when the word *neuro* itself becomes offensive).
OK, let's get back to a bit more serious. Just for the autistic neuroretarded people persons that might misunderstand our stance on social equality: [LRS](lrs.md) is for complete social equality of all people and eventually all living beings, however political correctness has nothing to do with achieving this goal, in fact it mostly goes against it, it creates huge amount of collateral damage, it divides people and fuels social conflict rather than calm it. We try to not cure symptoms of a shit society by harmful means but rather address the root cause by transitioning to a [good society](less_retaded_society.md) without conflict where there is no need for censorship, fact distortion and brainwashing to prevent discrimination. In the society we envision accepting facts about physical inequality does not imply an attack or discrimination at all as humans don't compete by their abilities, in such society the idea of political correctness is as ridiculous as e.g. arguing we should be creating numerically more inclusive datasets with higher leading digits as by [Benford's law](benfords_law.md) smaller digits are are a statistical majority that oppresses higher digits.
OK, let's get back to a bit more serious. Just for the autistic neuroretarded people persons that might misunderstand our stance on social equality: [LRS](lrs.md) is for complete social equality of all people and eventually all living beings, however political correctness has nothing to do with achieving this goal, in fact it mostly goes against it, it creates huge amount of collateral damage, it divides people and fuels social conflict rather than calm it. We try to not cure symptoms of a shit society by harmful means but rather address the root cause by transitioning to a [good society](less_retaded_society.md) without conflict where there is no need for censorship, fact distortion and brainwashing to prevent discrimination. In the society we envision accepting facts about physical inequality does not imply an attack or discrimination at all as humans don't compete by their abilities, in such society the idea of political correctness is as ridiculous as e.g. arguing we should be creating numerically more inclusive datasets with higher leading digits as by [Benford's law](benfords_law.md) smaller digits are are a statistical majority that oppresses higher digits.
Latest trend on social media seems to be the **pseudo political incorrectness**, i.e. pretending to be politically incorrect by just using for example rude words, which of course aren't politically incorrect by themselves, for the sake of improving one's image. It goes along the lines of "IN TIMES OF POLITICAL CORRECTNESS, this SUPER HERO CELEBRITY IS A COOL NONCONFORMING REBEL who is not afraid of saying the word *fuck* in a youtube video". Of course this is retarded as fuck, political incorrectness isn't at all about being rude, it is only about opposing the gospel of pseudoleftists, you may be politically incorrect without being rude simply by saying "white women are less intelligent than white men but more intelligent than black men", and you may be rude without being politically incorrect, e.g. by saying "we should murder this white guy because he is white so fuck him".

@ -1,9 +1,11 @@
# Social Justice Warrior
Social [justice](justice.md) [warrior](fight_culture.md) (SJW) is an especially active, [toxic](toxic.md) and aggressive kind of [pseudoleftist](pseudoleft.md) (a kind of [fascist](fascism.md)) that tries to [fight](fight_culture.md) (especially on the Internet) anyone opposing or even just slightly criticizing the mainstream pseudoleftist gospel such as the [feminism](feminism.md) and [LGBT](lgbt.md) propaganda. SJWs divide people rather than unite them, they operate on the basis of hate, revenge and mass hysteria and as we know, hate spawns more hate, they fuel a war mentality in society. They support hard [censorship](censorship.md) (forced [political correctness](political_correctness.md)) and bullying of their opposition, so called [cancelling](cancel_culture.md), and also such retardism as [sanism](sanism.md) and whatnot. [Wokeism](woke.md) is yet more extreme form of SJWery.
Social [justice](justice.md) [warrior](fight_culture.md) (SJW) is an especially active, [toxic](toxic.md) and aggressive kind of [pseudoleftist](pseudoleft.md) (a kind of [fascist](fascism.md)) that tries to [fight](fight_culture.md) (nowadays mostly on the Internet but eventually also as an a member of a physical execution squad) anyone opposing or even just slightly criticizing the mainstream pseudoleftist gospel such as the [feminism](feminism.md) and [LGBT](lgbt.md) propaganda. SJWs divide people rather than unite them, they operate on the basis of hate, revenge and mass hysteria and as we know, hate spawns more hate and [fear](fear_culture.md), they fuel a war mentality in society. They support hard [censorship](censorship.md) (forced [political correctness](political_correctness.md)) and bullying of their opposition, so called [cancelling](cancel_culture.md), and also such retardism as [sanism](sanism.md) and whatnot. [Wokeism](woke.md) is yet more extreme form of SJWery that doesn't even anymore try to hide its militant ambitions.
SJWs say the term is pejorative. We say it's not pejorative enough xD
SJWs want to murder all straight white men, however they try to make it seem as though they tolerate all races and orientations by excluding from their death sentence (only for now) those straight white males that agree to help kill all straight white men than do not agree to do the same. Once they decimate the population of straight white men like this to a minimum, they will also kill off the rest. This works basically the same as how [Nazi](nazi.md) made some Jews collaborate on killing of other Jews by promising they would let them live; of course eventually Nazis aimed to exterminating all of them, but they figured they might just make it easier this way.
A sneaky tactic of an SJW is **masked hypocrisy**. As any good [marketing](marketing.md) guy he will proclaim some principle OUT LOUD IN BIG LETTERS, adding asterisks with exceptions that immediately break that principle. For example:
- "WE HAVE TO CREATE A CENSORSHIP RESISTANT INFORMATION NETWORK" (asterisk: "But we have to build in mechanisms to censor [pedophiles](pedophilia.md) and racists and other information we dislike.")
@ -13,5 +15,5 @@ A sneaky tactic of an SJW is **masked hypocrisy**. As any good [marketing](marke
- "WE SUPPORT [FREE SPEECH](free_speech.md) AND FREE INFORMATION SHARING" (asterisk: "Speech we dislike doesn't fall under free speech.")
- "WE SUPPORT TECHNOLOGICAL [MINIMALISM](minimalism.md)" (asterisk: "As long as it's written in [Rust](rust.md), [Python](python.md) and [JavaScript](js.md) with [encryption](encryption.md) and [virtual machines](vm.md) for [security](security.md).")
- "WE PROMOTE SCIENCE" (asterisk: "Science being defined as trusting the word of authorities we approve without questioning them.")
- "THIS [ENCYCLOPEDIA](wikipedia.md) CAN BE EDITED BY EVERYONE" (asterisk: "Except for 90% of population who are blocked for not conforming to our political style of writing.")
- "THIS [ENCYCLOPEDIA](wikipedia.md) CAN BE EDITED BY EVERYONE" (asterisk: "Except for 90% of population who are blocked for not conforming to our political style of writing, also with the exception of articles that will probably be read by someone.")
- etc.

@ -4,6 +4,8 @@ Turing machine is a mathematical model of a [computer](computer.md) which works
The advantage of a Turing machine is that it's firstly very simple (it's basically a finite state automaton operating on a memory tape), so it can be mathematically grasped very easily, and secondly it is, unlike many other systems of computations, actually similar to real computers in principle, mainly by its sequential instruction execution and possession of an explicit memory tape it operates on (equivalent to [RAM](ram.md) in traditional computers). However note that a **pure Turing machine cannot exist in reality** because there can never exist a computer with infinite amount of memory which Turing machine possesses; computers that can physically exist are really equivalent to [finite state automata](finite_state_automaton.md), i.e. the "weakest" kind of systems of computation. However we can see our physical computers as [approximations](approximation.md) of a Turing machine that in most relevant cases behave the same, so we do tend to theoretically view computers as "Turing machines with limited memory".
In Turing machine data and program are separated (data is stored on the tape, program is represented by the control unit), i.e. it is closer to [Harvard architecture](harvard_architecture.md) than [von Neumann architecture](von_neumann_architecture.md).
**Is there anything computationally more powerful than a Turing machine?** Well, yes, but it's just kind of "mathematical fantasy". See e.g. [oracle machine](oracle_machine.md) which adds a special "oracle" device to a Turing machine to make it [magically](magic.md) solve undecidable problems.
## How It Works
@ -12,7 +14,7 @@ Turing machine has a few different versions (such as one with multiple memory ta
A Turing machine is composed of:
- **memory tape**: Memory composed of infinitely many cells (numbered 0, 1, 2, ...), each cell can hold exactly one symbol from some given alphabet (can be e.g. just symbols 0 and 1) OR the special *blank* symbol. At the beginning all memory cells contain the *blank* symbol.
- **memory tape**: Memory composed of infinitely many cells (numbered 0, 1, 2, ...), each cell can hold exactly one symbol from some given alphabet (can be e.g. just symbols 0 and 1) OR the special *blank* symbol. At the beginning all memory cells contain the *blank* symbol. Memory holds the [data](data.md) on which we perform computation.
- **read/write head**: Head that is positioned above a memory cell, can be moved to left or right. At the beginning the head is at memory cell 0.
- **control unit**: The program ([algorithm](algorithm.md)) that's "loaded" on the machine (the controls unit by itself is really a [finite state automaton](finite_state_automaton.md)). It is composed of:
- **a [set](set.md) of N (finitely many) states** {Q0, Q1, ... QN-1}: The machine is always in one of these states. One state is defined as starting (this is the state the machine is in at the beginning), one is the end state (the one which halts the machine when it is reached).

Loading…
Cancel
Save