master
Miloslav Ciz 1 year ago
parent 8bbd48afb6
commit 2bd0010bb2

@ -2,7 +2,7 @@
Anarchism is a [socialist](socialism.md) political philosophy rejecting any social hierarchy and oppression. **Anarchism doesn't mean without rules, but without rulers**; despite popular misconceptions anarchism is not [chaos](chaos.md) -- on the contrary, it strives for a stable, ideal society of equal people that live in peace. It means order without power. The symbols of anarchism include the letter A in a circle and a black flag that for different branches of anarchism is diagonally split from bottom left to top right and the top part is filled with a color specific for that branch.
Most things about anarchism are explained in the text *An Anarchist FAQ*, which is [free licensed](free_culture.md) and can be accessed e.g. at https://theanarchistlibrary.org/library/the-anarchist-faq-editorial-collective-an-anarchist-faq-full.
A great many things about anarchism are explained in the text *An Anarchist FAQ*, which is [free licensed](free_culture.md) and can be accessed e.g. at https://theanarchistlibrary.org/library/the-anarchist-faq-editorial-collective-an-anarchist-faq-full.
Anarchism is a wide term and encompasses many flavors such as [anarcho communism](ancom.md), [anarcho pacifism](anpac.md), [anarcho syndicalism](ansyn.md), [anarcho primitivism](anprim.md) or [anarcho mutualism](anmut.md). Some of the branches disagree on specific questions, e.g. about whether [violence](violence.md) is ever justifiable, or propose different solutions to issues such as organization of society, however **all branches of anarchism are socialist** and all aim for **elimination of social hierarchy** such as social classes created by wealth, jobs and weapons, i.e. anarchism opposes [state](state.md) (e.g. police having power over citizens) and [capitalism](capitalism.md) (employers exploiting employees, corporations exploiting consumers etc.).

@ -1,9 +1,9 @@
# Bill Gates
# Bill Gate$
William "Bill" Gates (28.10.1955 -- TODO) is a [mass murderer and rapist](entrepreneur.md) (i.e. [capitalist](capitalism.md)) who established and led the terrorist organization [Micro$oft](microsoft.md).
He is really dumb, only speaks one language and didn't even finish university. He also has no moral values, but that goes without saying for any rich businessman. He was owned pretty hard in [chess](chess.md) by Magnus Carlsen on some shitty TV show.
Bill was mentally [retarded](retard.md) as a child and as such had to attend a private school. He never really understood programming but with a below average intelligence he had a good shot at succeeding in [business](capitalism.md). Thanks to his family connections he got to Harvard where he met [Steve Ballmer](steve_ballmer.md) -- later he dropped out of the school due to his low intelligence.
When Bill was born, his father was just busy counting dollar bills, so he named him Bill. Bill was mentally [retarded](retard.md) as a child and as such had to attend a private school. He never really understood programming but with a below average intelligence he had a good shot at succeeding in [business](capitalism.md). Thanks to his family connections he got to Harvard where he met [Steve Ballmer](steve_ballmer.md) -- later he dropped out of the school due to his low intelligence.
In 1975 he founded [Micro$oft](microsoft.md), a [malware](malware.md) company named after his dick. By a sequence of extremely lucky events combined with a few dick moves by Bill the company then became successful: when around the year 1980 [IBM](ibm.md) was creating the [IBM PC](ibm_pc.md), they came to Bill because they needed an [operating system](os.md). He lied to them that he had one and sold them a license even though at the time he didn't have any OS (lol). After that he went to a programmer named Tim Paterson and basically stole (bought for some penny) his OS named QDOS and gave it to IBM, while still keeping ownership of the OS (he only sold IBM a license to use it, not exclusive rights for it). He basically fucked everyone for money and got away with it, the [American](usa.md) way. For this he is admired by Americans.

@ -19,6 +19,7 @@ The following is a list of software usually considered a good, typical example o
- [Blender](blender.md): quite useful [FOSS](foss.md) 3D editor which however integrates things like a whole video editor, game engine, several renderers, scripting language with text editor and so on.
- [CMake](cmake.md): gigantic build system that currently sits on top of a sandwich of other build systems.
- [Electron](electron.md): [GUI](gui.md) [framework](framework.md) infamous for its huge resource consumption.
- [flatpak](flatpak.md): Absolutely horrible "application distribution/execution platform???" with pakcage management, [sandboxes](sandbox.md) and all that kind of shit.
- [Systemd](systemd.md): Huge anti-[unix](unix_philosophy.md) do-it-all system taking over [GNU](gnu.md)/[Linux](linux.md).
- [Virtual machines](vm.md)/environments/sandboxes, big abstraction sandwiches (e.g. program running in an interpreter running in a sandbox inside web browser that's running in a virtual machine that's running on an operating system).
- [Firefox](firefox.md), [Chromium](chromium.md) and other mainstream web browsers.

19
c.md

@ -2,7 +2,7 @@
{ We have a [C tutorial](c_tutorial.md)! ~drummyfish }
C is a [low level](low_level.md), [statically typed](static_typing.md) [imperative](imperative.md) compiled [programming language](programming_language.md), the go-to language of most [less retarded software](lrs.md). It is the absolutely preferred language of the [suckless](suckless.md) community as well as of most true experts, for example the [Linux](linux.md) and [OpenBSD](openbsd.md) developers, because of its good minimal design, level of control, uncontested performance and a greatly established and tested status.
C is a [low level](low_level.md), [statically typed](static_typing.md) [imperative](imperative.md) compiled [programming language](programming_language.md), the go-to language of most [less retarded](lrs.md). It is the absolutely preferred language of the [suckless](suckless.md) community as well as of most true experts, for example the [Linux](linux.md) and [OpenBSD](openbsd.md) developers, because of its good minimal design, level of control, uncontested performance and a greatly established and tested status.
C is usually not considered an easy language to learn because of its low level nature: it requires good understanding of how a computer actually works and doesn't prevent the programmer from shooting himself in the foot. Programmer is given full control (and therefore responsibility). There are things considered "tricky" which one must be aware of, such as undefined behavior of certain operators and raw pointers. This is what can discourage a lot of modern "coding monkeys" from choosing C, but it's also what inevitably allows such great performance -- undefined behavior allows the compiler to choose the most efficient implementation.
@ -19,11 +19,12 @@ TODO
C is not a single language, there have been a few standards over the years since its inception in 1970s. The notable standards and versions are:
- **K&R C**: C as described by its inventors in the book *The C Programming Language*, before official standardization. This is kind of too ancient nowadays.
- **C89/C90 (ANSI/ISO C)**: First fully standardized version, usable even today.
- **C89/C90 (ANSI/ISO C)**: First fully standardized version, usable even today, many hardcore C programmers stick to this version so as to enjoy maximum compiler support.
- **C95**: A minor update of the previous standard, adds wide character support.
- **C99**: Updated standard from the year 1999 striking a great balance between "modern" and "good old". This is a good version to use in LRS programs, but will be a little less supported than C89.
- **C99**: Updated standard from the year 1999 striking a great balance between "[modern](modern.md)" and "good old". This is a good version to use in [LRS](lrs.md) programs, but will be a little less supported than C89, even though still very well supported.
- **C11**: Updated standard from the year 2011. This one is too [bloated](bloat.md) and isn't worth using.
- **C17/C18**: Yet another update, yet more bloated and not worth using.
- **C17/C18**: Yet another update, yet more bloated and not worth using anymore.
- ...
LRS should use C99 or C89 as the newer versions are considered [bloat](bloat.md) and don't have such great support in compilers, making them less portable and therefore less free.
@ -31,10 +32,12 @@ The standards of C99 and older are considered pretty [future-proof](future_proof
## Compilers
- [gcc](gcc.md)
- [clang](clang.md)
- [tcc](tcc.md)
- scc
- [gcc](gcc.md): the main "big name" that can compile all kinds of languages including C, used by default in many places, very [bloated](bloat.md)
- [clang](clang.md): another big bloated compiler, kind of competes with gcc
- [tcc](tcc.md): tiny C compiler, [suckless](suckless.md), cannot optimize as well as the big compilers but is pretty elegant
- [scc](scc.md): another small/suckless C compiler
- [8c](8c.md), [8cc](8cc.md)
- ...
## Standard Library

@ -4,11 +4,12 @@ The word *computer* can be defined in many ways and can also take many different
We can divide computers based on many attributes, e.g.:
- by **representation of data**: [digital](digital.md) vs [analog](analog.md)
- by continuous or discrete **representation of data**: [digital](digital.md) vs [analog](analog.md)
- by **[hardware](hw.md) technology**: [electronic](electronics.md), [mechanical](mechanical.md), [quantum](quantum.md), biological etc.
- by **purpose**: special purpose vs general purpose, [personal](pc.md), [embedded](embedded.md), [supercomputers](supercomputer.md) etc.
- by **purpose**: special purpose vs general purpose, [personal](pc.md), [embedded](embedded.md), [supercomputers](supercomputer.md), gaming computer etc.
- by **[programmability](programming.md)**: non-programmable, partially or fully programmable
- by **other criteria**: conventional vs [quantum computers](quantum.md), gaming computers etc.
- by the theoretical **[model of computation](model_of_computation.md)** it is based on: [Turing machine](turing_machine.md), [lambda calculus](lambda_calculus.md) etc.
- by **other criteria**: price, reliability etcetc.
Computers are studied by [computer science](compsci.md). The kind of computer we normally talk about consists of two main parts:
@ -19,7 +20,7 @@ The power of computers is limited, [Alan Turing](turing.md) mathematically prove
## Typical Computer
Computers we normally talk about are [electronic](electronics.md) [digital](digital.md) mostly personal computers such as [desktops](desktop.md) and [laptops](laptop.md), possibly also [cell phones](phone.md), [tablets](tablet.md) etc.
Computers we normally talk about in daily conversations are [electronic](electronics.md) [digital](digital.md) mostly personal computers such as [desktops](desktop.md) and [laptops](laptop.md), possibly also [cell phones](phone.md), [tablets](tablet.md) etc.
Such a computer consists of some kind of [case](case.md) (chassis), internal [hardware](hardware.md) plus [peripheral devices](peripheral.md) that serve for [input and output](io.md) -- these are for example a [keyboard](keyboard.md) and [mouse](mouse.md) (input devices), a [monitor](monitor.md) (output device) or [harddisk](hdd.md) (input/output device). The internals of the computer normally include:

@ -1,6 +1,6 @@
# Copyright
Copyright (better called copyrestriction) is one of many types of so called [intellectual property](intellectual_property.md) (IP), i.e. a legal concept that allows ownership (restriction) of certain kind of information. Copyright specifically allows to own (i.e. restrict other people's rights to) [art](art.md) creations such as images, songs or texts, which include source code of computer programs. Copyright is not to be confused with [trademark](trademark.md) or [patent](patent.md). Copyright is symbolized by C in a circle or in brackets: (C).
Copyright (better called copyrestriction) is one of many types of so called [intellectual property](intellectual_property.md) (IP), i.e. a legal concept that allows ownership (restriction) of certain kinds of [information](information.md). Copyright specifically allows to own (i.e. restrict other people's rights to) [art](art.md) creations such as images, songs or texts, which include source code of computer programs. Copyright is not to be confused with [trademark](trademark.md) or [patent](patent.md). Copyright is symbolized by C in a circle or in brackets: (C).
When someone creates something that can even remotely be considered artistic expression (even such things as e.g. a mere collection of already existing things), they automatically gain copyright on it, without having to register it anywhere or let it be known anywhere. They then have practically full control over the work and can successfully sue anyone who basically just touches it in any way. Therefore **any code without a [free](free_software.md) license attached is implicitly fully owned by its creator** (so called "all rights reserved") and can't be used by anyone without permission. It is said that copyright can't apply to ideas, only to expressions of ideas, however that's [bullshit](bs.md), the line isn't clear and is arbitrarily drawn by judges; for example regarding stories in books it's been established that the story itself can be copyrighted, not just its expression (you can't rewrite the Harry Potter story in different words and start selling it).

@ -2,7 +2,7 @@
*"God doesn't play dice."* --[some German dude](einstein.md)
Deterministic system is one which over time evolves without any involvement of [randomness](randomness.md) and probability; i.e. its current state along with the rules according to which it behaves unambiguously and precisely determine its following state. This means that a deterministic [algorithm](algorithm.md) will always give the same result if run multiple times with the same input values. Determinism is an extremely important concept in [computer science](compsci.md) and [programming](programming.md) (and in many other fields of science and philosophy).
Deterministic system (such as a computer program or an equation) is one which over time evolves without any involvement of [randomness](randomness.md) and probability; i.e. its current state along with the rules according to which it behaves unambiguously and precisely determine its following state. This means that a deterministic [algorithm](algorithm.md) will always give the same result if run multiple times with the same input values. Determinism is an extremely important concept in [computer science](compsci.md) and [programming](programming.md) (and in many other fields of science and philosophy).
[Computers](computer.md) are mostly deterministic by nature and design, they operate by strict rules and engineers normally try to eliminate any random behavior as that is mostly undesirable (with certain exceptions mentioned below) -- randomness leads to hard to detect and hard to fix [bugs](bug.md), unpredictability etc. Determinism has furthermore many advantages, for example if we want to record a behavior of a deterministic system, it is enough if we record only the inputs to the system without the need to record its state which saves a great amount of space -- if we later want to replay the system's behavior we simply rerun the system with the recorded inputs and its behavior will be the same as before (this is exploited e.g. in recording gameplay demos in video [games](game.md) such as [Doom](doom.md)).
@ -14,4 +14,6 @@ Even if we're creating a program that somehow works with probability, we usually
In theoretical computer science non-determinism means that a model of computation, such as a [Turing machine](turing_machine.md), may at certain points decide to make one of several possible actions which is somehow most convenient, e.g. which will lead to finding a solution in shortest time. Or in other words it means that the model makes many computations, each in different path, and at the end we conveniently pick the "best" one, e.g. the fastest one. Then we may talk e.g. about how the computational strength or speed of computation differ between a deterministic and non-deterministic Turing machine etc.
Determinism is also a philosophical theory that says our Universe is deterministic, i.e. that everything is already predetermined by the state of the universe and the laws of physics, i.e. that we don't have "free will" (whatever it means) etc. Many believe [quantum physics](quantum.md) disproves determinism which is however not the case, there may e.g. exist hidden variables that still make quantum physics deterministic. Anyway, this is already beyond the scope of technological determinism.
Determinism is also a philosophical theory that says our Universe is deterministic, i.e. that everything is already predetermined by the state of the universe and the laws of physics, i.e. that we don't have "free will" (whatever it means) etc. Many believe [quantum physics](quantum.md) disproves determinism which is however not the case, there may e.g. exist hidden variables that still make quantum physics deterministic. Anyway, this is already beyond the scope of technological determinism.
**Determinism does NOT guarantee [reversibility](reversibility.md)**, i.e. if we know a state of a deterministic system, it may not always be possible to say from which state it evolved. This reversibility is only possible if the rules of the system are such that no state can evolve from two or more different states. If this holds then it is always possible to time-reverse the system and step it backwards to its initial state. This may be useful for things such as [undos](undo.md) in programs. Also note that even if a system is reversible, it may be computationally very time consuming and sometimes practically impossible to reverse the system (imagine e.g. reversing a cryptographic [hash](hash.md) -- mathematical reversibility of such hash may be arbitrarily ensured by e.g. pairing each hash with the lowest value that produces it).

@ -1,12 +1,14 @@
# Floating Point
Floating point arithmetic (normally just *float*) is a method of computer representation of [fractional](rational_number.md) numbers, i.e. numbers with higher than [integer](integer.md) precision (such as 5.13), which is more complex than e.g. [fixed point](fixed_point.md). The core idea of it is to use a radix point that's not fixed but can move around so as to allow representation of both very small and very big values. Nowadays floating point is the standard way of [approximating](approximation.md) [real numbers](real_number.md) in computers, basically all of the popular [programming languages](programming_language.md) have a floating point [data type](data_type.md) that adheres to the IEEE 754 standard, all personal computers also have the floating point hardware unit (FPU) and so it is widely used in all [modern](modern.md) programs. However most of the time a simpler representation of fractional numbers, such as the mentioned [fixed point](fixed_point.md), suffices, and weaker computers (e.g. [embedded](embedded.md)) may lack the hardware support so floating point operations are emulated in software and therefore slow -- for these reasons we consider floating point [bloat](bloat.md) and recommend the preference of fixed point.
Floating point arithmetic (normally just *float*) is a method of computer representation of [fractional](rational_number.md) numbers and approximating [real numbers](real_number.md), i.e. numbers with higher than [integer](integer.md) precision (such as 5.13), which is more complex than e.g. [fixed point](fixed_point.md). The core idea of it is to use a radix ("decimal") point that's not fixed but can move around so as to allow representation of both very small and very big values. Nowadays floating point is the standard way of [approximating](approximation.md) [real numbers](real_number.md) in computers (floating point types are called *real* in some programming languages, even though they represent only [rational numbers](rational_number.md), floats can't e.g. represent [pi](pi.md) exactly), basically all of the popular [programming languages](programming_language.md) have a floating point [data type](data_type.md) that adheres to the IEEE 754 standard, all personal computers also have the floating point hardware unit (FPU) and so it is widely used in all [modern](modern.md) programs. However most of the time a simpler representation of fractional numbers, such as the mentioned [fixed point](fixed_point.md), suffices, and weaker computers (e.g. [embedded](embedded.md)) may lack the hardware support so floating point operations are emulated in software and therefore slow -- for these reasons we consider floating point [bloat](bloat.md) and recommend the preference of fixed point.
Is floating point literal evil? Well, of course not, but it is extremely overused. You may need it for precise scientific simulations, e.g. [numerical integration](numerical_integration.md), but as our [small3dlib](small3dlib.md) shows, you can comfortably do even [3D rendering](3d_rendering.md) without it. So always consider whether you REALLY need float.
Is floating point literal evil? Well, of course not, but it is extremely overused. You may need it for precise scientific simulations, e.g. [numerical integration](numerical_integration.md), but as our [small3dlib](small3dlib.md) shows, you can comfortably do even [3D rendering](3d_rendering.md) without it. So always consider whether you REALLY need float. You mostly do not.
## How It Works
Floats represent numbers by representing two main parts: the *base* -- actual encoded digits, called **mantissa** (or significand etc.) -- and the position of the radix point. The position of radix point is called the **exponent** because mathematically the floating point works similarly to the scientific notation of extreme numbers that use exponentiation. For example instead of writing 0.0000123 scientists write 123 * 10^-7 -- here 123 would be the mantissa and -7 the exponent.
The very basic idea is following: we have digits in memory and in addition we have a position of the radix point among these digits, i.e. both digits and position of the radix point can change. The fact that the radix point can move is reflected in the name *floating point*. In the end any number stored in float can be written with a finite number of digits with a radix point, e.g. 12.34. Notice that any such number can also always be written as a simple fraction of two integers (e.g. 12.34 = 1 * 10 + 2 * 1 + 3 * 1/10 + 4 * 1/100 = 617/50), i.e. any such number is always a rational number. This is why we say that floats represent fractional numbers and not true real numbers (real numbers such as [pi](pi.md), [e](e.md) or square root of 2 can only be approximated).
More precisely floats represent numbers by representing two main parts: the *base* -- actual encoded digits, called **mantissa** (or significand etc.) -- and the position of the radix point. The position of radix point is called the **exponent** because mathematically the floating point works similarly to the scientific notation of extreme numbers that use exponentiation. For example instead of writing 0.0000123 scientists write 123 * 10^-7 -- here 123 would be the mantissa and -7 the exponent.
Though various numeric bases can be used, in [computers](computer.md) we normally use [base 2](binary.md), so let's consider it from now on. So our numbers will be of format:

@ -6,7 +6,9 @@ Free (as in freedom) software is a type of ethical [software](software.md) that'
Free software is also known as *free as in freedom*, *free as in speech* software or *libre* software. It is sometimes equated with [open source](open_source.md), even though open source is fundamentally different ([evil](evil.md)), or neutrally labelled FOSS or FLOSS (free/libre and open-source software). Software that is gratis (freeware) is sometimes called *free as in beer*.
[Richard Stallman](rms.md), the inventor of the concept and the term "free software", says free software is about ensuring the freedom of computer users, i.e. people truly owning their tools -- he points out that unless people have complete control over their tools, they don't truly own them and will instead become controlled and abused by the makers (true owners) of those tools, which in [capitalism](capitalism.md) are [corporations](corporation.md). Richard Stallman stressed that **there is no such thing as partially free software** -- it takes only a single line of code to take away the user's freedom and therefore if software is to be free, it has to be free as a whole. This is in direct contrast with [open source](open_source.md) which happily tolerates for example [Windows](windows.md) only programs and accepts them as "open source", even though such a program cannot be run without the underlying proprietary code of the platform. It is therefore important to support free software rather than the business spoiled open source.
**Examples of free software** include the [GNU](gnu.md) operating system (also known as "[Linux](linux.md)"), [GIMP](gimp.md) (image editor), [Stockfish](stockfish.md) chess engine, or games such as [Xonotic](xonotic.md) and [Anarch](anarch.md). Free software is actually what runs the world, it is a standard among experts and it is possible to do computing with exclusively free software, even though most normal people don't even know the term free software exists because they only ever come in contact with abusive [proprietary](proprietary.md) consumer software such as [Windows](windows.md) and capitalist [games](game.md). There also exists a lot of big and successful software, such as [Fireforx](firefox.md), [Linux](linux.md) (the kernel) or [Blender](blender.md), that's often spoken of as free software which may however be only technically true or true only to a big (but not full) degree: for example even though [Linux](linux.md) is 99% free, in its [vanilla](vanilla.md) version it comes with [proprietary](proprietary.md) [binary blobs](binary_blob.md) which breaks the rules of free software. [Blender](blender.md) is technically free but it is also [capitalist software](capitalist_software.md) which doesn't really care about freedom and may de-facto limit some freedoms required by free software, even if they are granted legally by Blender's license. Such software is better called "[open source](open_source.md)" or [FOSS](foss.md) because it doesn't meet the high standards of free software.
[Richard Stallman](rms.md), the inventor of the concept and the term "free software", says free software is about ensuring the freedom of computer users, i.e. people truly owning their tools -- he points out that unless people have complete control over their tools, they don't truly own them and will instead become controlled and abused by the makers (true owners) of those tools, which in [capitalism](capitalism.md) are [corporations](corporation.md). Richard Stallman stressed that **there is no such thing as partially free software** -- it takes only a single line of code to take away the user's freedom and therefore if software is to be free, it has to be free as a whole. This is in direct contrast with [open source](open_source.md) (a term discourages by Stallman himself) which happily tolerates for example [Windows](windows.md) only programs and accepts them as "open source", even though such a program cannot be run without the underlying proprietary code of the platform. It is therefore important to support free software rather than the business spoiled open source.
**Is free software [communism](communism.md)?** This is a question often debated by [Americans](usa.md) who have a panic phobia of anything resembling ideas of sharing and giving away for free. The answer is: yes and no. No as in it's not [Marxism](marxism.md), the kind of [evil](evil.md) pseudocommunism that plagued the world not a long time long ago -- that was a hugely complex, twisted violent ideology encompassing whole society which furthermore betrayed many basic ideas of equality and so on. Compared to this free software is just a simple idea of not applying intellectual property to software, and this idea may well function under some form of early capitalism. But on the other hand yes, free software is communism in its general form that simply states that sharing is good, it is communism as much e.g. teaching a kid to share toys with its siblings.

@ -0,0 +1,5 @@
# Githopping
Githopping is a disease similar to [distrohopping](distrohopping.md) but applied to [git](git.md) hosting websites. The disease has become an epidemics after the [Micro$oft](microsoft.md)'s take over of [GitHub](github.md) when people started protest-migrating to [GitLab](gitlab.md), however GitLab became [shit](shit.md) as well so people started hopping to other services like [Codeberg](codeberg.md) etcetc. and now they are addicted to just copying their code from one site to another instead of doing actual programming.
Cure: free yourself of any git hosting, don't centralize your repos on one hosting, use multiple git hostings as mirrors for your code, i.e. add multiple push remotes to your local git and with every push update your repos all over the internet. Just spray the internet with your code and let it sink in, let it be captured in caches and archive sites and let it be preserved. **DO NOT** tie yourself to any specific git hosting by using any non-git features such as issue trackers or specialized [CLI](cli.md) tools such as github cli. **DO NOT** use git hosting sites as a [social network](social_network.md), just stop attention whoring for stars and likes, leave this kind of shit to tiktokers.

@ -2,7 +2,7 @@
*Love everyone, help [selflessly](selflessness.md).*
Welcome to [Less Retarded Wiki](lrs_wiki.md), an encyclopedia only I can edit. But you can [fork](fork.md) it, it is [public domain](public_domain.md) under [CC0](cc0.md) (see [wiki rights](wiki_rights.md)) :) Holy [shit](shit.md), I'm gonna get [cancelled](cancel_culture.md) hard as soon as [SJWs](sjw.md) find out about this. Until then, let's enjoy the ride. THERE'S NO [MODERATION](moderation.md), I can do whatever I want here lol. I love this. INB4 "[hate speech](hate_speech.md)" website ([LMAO](lmao.md) [codeberg](codeberg.md) has already banned it). CONGRATULATIONS, you have discovered the one true, undistorted and unbiased view of the world -- this is not a joke, this wiki contains pure truth and the solution to most of the issues of our society.
Welcome to [Less Retarded Wiki](lrs_wiki.md), an encyclopedia only I can edit. But you can [fork](fork.md) it, it is [public domain](public_domain.md) under [CC0](cc0.md) (see [wiki rights](wiki_rights.md)) :) Holy [shit](shit.md), I'm gonna get [cancelled](cancel_culture.md) hard as soon as [SJWs](sjw.md) find out about this. Until then, let's enjoy the ride. THERE'S NO [MODERATION](moderation.md), I can do whatever I want here lol. I love this. INB4 "[hate speech](hate_speech.md)" website ([LMAO](lmao.md) [codeberg](codeberg.md) has already banned it). CONGRATULATIONS, you have discovered the one true, undistorted and unbiased view of the world -- this is not a [joke](jokes.md), this wiki contains pure truth and the solution to most of the issues of our society.
```

@ -29,7 +29,7 @@ There are many terms that are very similar and are sometimes used interchangeabl
- **[coherence](coherence.md)** vs **[consistency](consistency.md)**
- **[computational model](computational_model.md)** vs **[model of computation](model_of_computation.md)**
- **[convolution](convolution.md)** vs **[correlation](correlation.md)**
- **[copyright](copyright.md)** vs **[patent](patent.md)** vs **[trademark](trademark.md)**
- **[copyright](copyright.md)** vs **[patent](patent.md)** vs **[trademark](trademark.md)** etc.
- **[crossplatform/multiplatform](multiplatform.md)** vs **[portable](portability.md)**
- **[cryptography](cryptography.md)** vs **[security](security.md)**
- **[data](data.md)** vs **[information](information.md)**

@ -2,7 +2,7 @@
{ This is WIP, I use Vim but am not such guru really so there may appear some errors, I know this topic is pretty religious so don't eat me. ~drummyfish }
Vim (Vi Improved) is a legendary [free as in freedom](free_software.md), fairly [minimalist](minimalism.md) and [suckless](suckless.md) [terminal](terminal.md)-only (no [GUI](gui.md)) [text editor](text_editor.md) for skilled programmers and hackers, possibly the best editor you can choose for text editing and [programming](programming.md). It is a successor of a much simpler editor [vi](vi.md) that was made in 1976 and which has become a standard text editor installed on every [Unix](unix.md) system. Vim added features like tabs, [syntax highlight](syntax_highlight.md), [scriptability](script.md), sessions and plugins and as such has become not just a simple text editor but an editor that can comfortably be used for [programming](programming.md) instead of any bloated [IDE](ide.md). Observing a skilled Vim user edit text is really like watching a magician or a literal movie hacker -- the editing is extremely fast, without any use of mouse, it transcends mere text editing and for some becomes something akin a way of life.
Vim (Vi Improved) is a legendary [free as in freedom](free_software.md), fairly (though not hardcore) [minimalist](minimalism.md) and [suckless](suckless.md) [terminal](terminal.md)-only (no [GUI](gui.md)) [text editor](text_editor.md) for skilled programmers and hackers, and one of the best editors you can choose for text editing and [programming](programming.md). It is a successor of a much simpler editor [vi](vi.md) that was made in 1976 and which has become a standard text editor installed on every [Unix](unix.md) system. Vim added features like tabs, [syntax highlight](syntax_highlight.md), [scriptability](script.md), sessions and plugins and as such has become not just a simple text editor but an editor that can comfortably be used for [programming](programming.md) instead of any bloated [IDE](ide.md). Observing a skilled Vim user edit text is really like watching a magician or a literal movie hacker -- the editing is extremely fast, without any use of mouse, it transcends mere text editing and for some becomes something akin a way of life.
Vim is generally known to be **"difficult to learn"** -- it is not because it is inherently difficult but rather for being very different from other editors -- it has no [GUI](gui.md) (even though it's still a screen-oriented [interactive](interactive.md) [TUI](tui.md)), it is keyboard-only and is operated via text commands rather than with a [mouse](mouse.md), it's also preferable to not even use arrow keys but rather [hjkl](hjkl.md) keys. There is even a [meme](meme.md) that says Vim is so difficult that just exiting it is a non-trivial task. People not acquainted with Vim aren't able to do it and if they accidentally open Vim they have to either Google how to close it or force kill the terminal [xD](xd.md) Of course it's not so difficult to do, it's a little bit different than in other software -- you have to press escape, then type `:q` and press enter (although depending on the situation this may not work, e.g. if you have multiple documents open and want to exit without saving you have to type `:wqa` etc.). The (sad) fact is that most [coding monkeys](coding.md) and "professional programmers" [nowadays](kids_these_days.md) choose some ugly [bloated](bloat.md) [IDE](ide.md) as their most important tool rather than investing two days into learning Vim, probably the best editor.
@ -10,7 +10,7 @@ Vim is generally known to be **"difficult to learn"** -- it is not because it is
Vim's biggest rival is [Emacs](emacs.md), a similar editor which is however more complex and [bloated](bloat.md) (it is [joked](jokes.md) that Emacs is really an [operating system](os.md)) -- Vim is more [suckless](suckless.md), yet not less powerful, and so it is naturally the choice of the suckless community and also [ours](lrs.md). Vim and Emacs are a subject of a **[holy war](holy_war.md)** for the the best editor yet developed; the Emacs side calls itself the *[Church of Emacs](church_of_emacs.md)*, led by [Richard Stallman](rms.md) (who created Emacs) while the Vi supporters are called members of the *[Cult of Vi](cult_of_vi.md)* (vi vi vi = 666).
It has to be noted that **Vim as a program is still kind of [bloated](bloat.md)**, large part of the [suckless](suckless.md) community acknowledges this. Nonetheless the important thing is that **Vim is a good [de facto standard](de_facto_standard.md)** -- the Vim's interface and philosophy is what matters the most, there are alternatives you can comfortably switch to. The situation is similar to for example "Unix as a concept", i.e. its interface, [philosophy](unix_philosophy.md) and culture, which together create a certain standardization that allows for different implementations that can be switched without much trouble. In the suckless community Vim has a similar status to [C](c.md), [Linux](linux.md) or [X11](x11.md) -- it is not ideal, by the strict standards it is a little bit bloated, however it is one of the best existing solutions and makes up for its shortcomings by being a stable, well established de-facto standard.
It has to be noted that **Vim as a program is still kind of [bloated](bloat.md)**, large part of the [suckless](suckless.md) community acknowledges this ([cat-v](cat_v.md) lists Vim as [harmful](harmful.md), recommends [Acme](acme.md), [Sam](sam.md) or [ed](ed.md) instead). Nonetheless the important thing is that **Vim is a good [de facto standard](de_facto_standard.md)** -- the Vim's interface and philosophy is what matters the most, there are alternatives you can comfortably switch to. The situation is similar to for example "Unix as a concept", i.e. its interface, [philosophy](unix_philosophy.md) and culture, which together create a certain standardization that allows for different implementations that can be switched without much trouble. In the suckless community Vim has a similar status to [C](c.md), [Linux](linux.md) or [X11](x11.md) -- it is not ideal, by the strict standards it is a little bit bloated, however it is one of the best existing solutions and makes up for its shortcomings by being a stable, well established de-facto standard.
## How To
@ -68,7 +68,7 @@ syntax on
## Alternatives
Of course there are alternatives to Vim that are based on different paradigms, such as [Emacs](emacs.md), its biggest rival. In this regard any [text editor](text_editor.md) is a potential alternative. Nevertheless people looking for Vim alternatives are usually looking for other vi-like editors. These are for example:
Of course there are alternatives to Vim that are based on different paradigms, such as [Emacs](emacs.md), its biggest rival, or plan9 editors such as [Acme](acme.md). In this regard any [text editor](text_editor.md) is a potential alternative. Nevertheless people looking for Vim alternatives are usually looking for other vi-like editors. These are for example:
- **[vi](vi.md)**: While you probably won't use the original ancient vi program but rather something like [nvi](nvi.md), vi is a [POSIX](posix.md) standard for a text editor that's much simpler and universal than Vim. It lacks many features one may be used to from Vim such as tabs, [autocompletion](autocomplete.md), [syntax highligh](syntax_highlight.md) or multiple [undos](undo.mf). But limiting yourself to only using the features specified by the standard makes you more likely to be able to operate any vi-like text editor you encounter. (List of features added by Vim to vi can be found in `runtime/doc/vi_diff.txt` in Vim source tree.)
- **[neovim](neovim.md)**: Tries to be the "[modernized](modern.md)" ([refactored](refactoring.md)) fork of Vim, it removes some code, adds a new plugin system but also [bloat](bloat.md) like [CMake](cmake.md). One of its self-stated goals is to be more "community driven". It is also written in C99 (while Vim is in C89, more portable). { At least I think. ~drummyfish }

@ -4,7 +4,7 @@
Wavelet transform is a [mathematical](math.md) operation, similar to e.g. [Fourier transform](fourier_transform.md), that takes a [signal](signal_processing.md) (e.g. audio or an image) and outputs information about the [frequencies](frequency.md) contained in that signal AS WELL as the locations of those frequencies. This is of course extremely useful when we want to analyze and manipulate frequencies in our signal -- for example [JPEG 2000](jpeg_2000.md) uses wavelet transforms for [compressing](compression.md) images by discarding certain frequencies in them that our eyes are not so sensitive to.
The main advantage over [Fourier transform](fourier_transform.md) (and similar transforms such as [cosine transform](cosine_transform.md)) is that wavelet transform shows us not only the frequencies, but ALSO their locations (i.e. for example time at which these frequencies come into play in an audio signal). This allows us for example to locate specific sounds in audio or apply compression only to certain parts of an image. While localizing frequencies is also possible with Fourier transform with tricks such as [spectrograms](spectrogram.md), wavelet transforms are a more elegant, natural and continuous way of doing so. Note that due to [Heisenberg's uncertainty principle](uncertainty_principle.md) is it mathematically IMPOSSIBLE to know both frequencies and their locations exactly, there always has to be a tradeoff -- the input signal itself tells us everything about location but nothing about frequencies, Fourier transform tells us everything about frequencies but nothing about their locations and wavelet transform is a **midway** between the two -- it tells us something about frequencies and their approximate locations.
The main advantage over [Fourier transform](fourier_transform.md) (and similar transforms such as [cosine transform](cosine_transform.md)) is that wavelet transform shows us not only the frequencies, but ALSO their locations (i.e. for example time at which these frequencies come into play in an audio signal). This allows us for example to locate specific sounds in audio or apply compression only to certain parts of an image. While localizing frequencies is also possible with Fourier transform with tricks such as [spectrograms](spectrogram.md), wavelet transforms are a more elegant, natural and continuous way of doing so. Note that due to [Heisenberg's uncertainty principle](uncertainty_principle.md) it is mathematically IMPOSSIBLE to know both frequencies and their locations exactly, there always has to be a tradeoff -- the input signal itself tells us everything about location but nothing about frequencies, Fourier transform tells us everything about frequencies but nothing about their locations and wavelet transform is a **midway** between the two -- it tells us something about frequencies and their approximate locations.
Of course there is always an inverse transform for a wavelet transform so we can transform the signal, then manipulate the frequencies and transform it back.

Loading…
Cancel
Save