This commit is contained in:
Miloslav Ciz 2024-08-26 15:22:39 +02:00
parent 9df795a150
commit 2c518b91ca
11 changed files with 1807 additions and 1808 deletions

2
ai.md
View file

@ -1,6 +1,6 @@
# Artificial Intelligence
Artificial intelligence (AI) is an area of [computer science](compsci.md) whose effort lies in making [computers](computer.md) simulate thinking of humans and possibly other biologically [living beings](life.md). This may include making computers play [games](game.md) such as [chess](chess.md), compose music, paint pictures, understand and processing audio, images and text on high level of [abstraction](abstraction.md) (e.g. translation between natural languages), making predictions about complex systems such as stock market or weather or even exhibit a general human-like behavior. Even though today's focus in AI is on [machine learning](machine_learning.md) and especially [neural networks](neural_network.md), there are many other usable approaches and models such as "hand crafted" state tree searching algorithms that can simulate and even outperform the behavior of humans in certain specialized areas.
Artificial intelligence (AI) is an area of [computer science](compsci.md) whose effort lies in making [computers](computer.md) simulate thinking of humans and possibly other biologically [living beings](life.md). This may include making computers play [games](game.md) such as [chess](chess.md), compose [music](music.md), paint pictures, understand and processing audio, images and text on high level of [abstraction](abstraction.md) and understanding (e.g. translation between natural languages), making predictions about complex systems such as stock market or weather or even exhibit a general human-like behavior. Even though today's focus in AI is on [machine learning](machine_learning.md) and especially [neural networks](neural_network.md), there are many other usable approaches and models such as "hand crafted" state tree searching algorithms that can simulate and even outperform the behavior of humans in certain specialized areas.
There's a concern that's still a matter of discussion about the dangers of developing a powerful AI, as that could possibly lead to a [technological singularity](tech_singularity.md) in which a super intelligent AI might take control over the whole world without humans being able to seize the control back. Even though it's still likely a far future and many people say the danger is not real, the question seems to be about *when* rather than *if*.

51
c.md
View file

@ -2,19 +2,21 @@
{ We have a [C tutorial](c_tutorial.md)! ~drummyfish }
C is an [old](old.md) [low level](low_level.md) structured [statically typed](static_typing.md) [imperative](imperative.md) compiled [programming language](programming_language.md), it is very fast and currently mostly used by [less retarded software](lrs.md). Though by very strict standards it would still be considered [bloated](bloat.md), compared to any mainstream [modern](modern.md) language it is very bullshitless, [KISS](kiss.md) and greatly established and "culturally stable", so it is also the go-to language of the [suckless](suckless.md) community as well as most true experts, for example the [Linux](linux.md) and [OpenBSD](openbsd.md) developers, because of its good, relatively simple design, **uncontested performance**, **wide support**, great number of compilers, level of control and a greatly established and tested status. C doesn't belong to the class of most minimal languages but it is among the most minimalist "traditional" kind of languages. C is **perhaps the most important language in history**; it influenced, to smaller or greater degree, basically all of the widely used languages today such as [C++](c.md), [Java](java.md), [JavaScript](javascript.md) etc., however it is not a thing of the past -- in the area of low level programming C is still the number one unsurpassed language. C is by no means perfect but it is currently probably the best choice of a programming language (along with [comun](comun.md), of course). Though C is almost always compiled, there have appeared some C interpreters as well.
C is an [old](old.md) [low level](low_level.md) structured [statically typed](static_typing.md) [imperative](imperative.md) compiled [programming language](programming_language.md), it is very fast, efficient and currently possibly the most commonly used language by many [minimalist](minimalism.md) programmers including [less retarded software](lrs.md). Though by very strict standards it would still be considered [bloated](bloat.md), compared to any mainstream [modern](modern.md) language it is very bullshitless, [KISS](kiss.md), very well optimized, culturally established and stable, so it is also the go-to language of the [suckless](suckless.md) community as well as most true experts, for example the [Linux](linux.md) and [OpenBSD](openbsd.md) developers, owing to a good, relatively simple design, **uncontested performance**, **wide support**, great number of compilers, high level of control and a status of firmly tested and established language. C doesn't belong to the class of most minimal languages like [Forth](forth.md), [Lisp](lisp.md) and [Brainfuck](brainfuck.md), but it is among the most minimalist "traditional" kind of languages. C is **perhaps the most important language in [history](history.md)**; it influenced, to smaller or bigger degree, basically all of the widely used languages today such as [C++](c.md), [Java](java.md), [JavaScript](javascript.md) etc., however it is not a relic of the past, it is still actively used -- in the area of low level programming C is probably still the number one unsurpassed language. C is by no means perfect or extremely mathematically [elegant](beauty.md), but it is currently one of the best practical choice of a programming language. Though C is almost always compiled, C interpreters can be found too.
{ See https://wiki.bibanon.org/The_Perpetual_Playthings. Also look up *The Ten Commandments for C Programmers* by Henry Spencer. Also the *Write in C* song (parody of *Let it Be*). ~drummyfish }
It is usually **not considered an easy language to learn** because of its low level nature: it requires good understanding of how a [computer](computer.md) 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. On the other hand, C as a language is pretty simple without [modern](modern.md) bullshit concepts such as [OOP](oop.md), it is not as much hard to learn but rather hard to master, as any other true art. In any case **you have to learn C** even if you don't plan to program in it regularly, it's the most important language in history and lingua franca of programming, you will meet C in many places and have to at least understand it: programmers very often use C instead of [pseudocode](pseudocode.md) to explain algorithms, C is used for optimizing critical parts even in non-C projects, many languages compile to C, it is just all around and you have to understand it like you have to understand [English](english.md).
It is usually **not considered an easy language to learn** because of its low level nature and amount of control (fuck up opportunities) it gives: it requires good understanding of how a [computer](computer.md) works on the lower level 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 or manual [memory management](memory_management.md). This is what can discourage a lot of modern "[coding monkeys](soydev.md)" from choosing C, but it's also what inevitably allows such great performance -- undefined behavior allows the compiler to choose the most efficient implementation. On the other hand, C as a language is pretty simple without [modern](modern.md) bullshit concepts such as [OOP](oop.md), it is not as much hard to learn but rather hard to master, as any other true [art](art.md). In any case **you have to learn C** even if you don't plan to program in it regularly, it's the most important language in history and lingua franca of programming, you will meet C in many places and have to at least understand it: programmers very often use C instead of [pseudocode](pseudocode.md) to explain algorithms, C is used for [optimizing](optimization.md) critical parts even in non-C projects, many languages compile to C, it is just all around and you have to understand it like you have to understand [English](english.md).
Some of the typical traits of C include great reliance on and utilization of **[preprocessor](preprocessor.md)** ([macros](macro.md), the underlying C code is infamously littered with "`#ifdefs`" all over the place which modify the code just before compiling -- this is mostly used for compile-time configuration and/or achieving better performance and/or for [portability](portability.md)), **[pointers](pointer.md)** (direct access to memory, used e.g. for memory allocation, this is infamously related to "shooting oneself in the foot", e.g. by getting [memory leaks](memory_leak.md)) and a lot of **[undefined behavior](undefined_behavior.md)** (many things are purposefully left undefined in C to allow compilers to generate greatly efficient code, but this sometimes lead to weird [bugs](bug.md) or a program working on one machine but not another, so C requires some knowledge of its specification). You can also infamously meet complicated type declarations like `void (*float(int,void (*n)(int)))(int)`, these are frequently a subject of [jokes](jokes.md) ("look, C is simple").
Some of the typical traits of C include plentiful (over)utilization of **[preprocessor](preprocessor.md)** ([macros](macro.md), the underlying C code is infamously littered with "`#ifdefs`" all over the place which modify the code just before compiling -- this is mostly used for compile-time configuration and/or achieving better performance and/or for [portability](portability.md)), **[pointers](pointer.md)** (direct access to memory, used e.g. for memory allocation, this is infamously related to "shooting oneself in the foot", e.g. by getting [memory leaks](memory_leak.md)) and a lot of **[undefined behavior](undefined_behavior.md)** (many things are purposefully left undefined in C to allow compilers to generate greatly efficient code, but this sometimes lead to weird [bugs](bug.md) or a program working on one machine but not another, so C requires some knowledge of its specification). Also a bit infamous one may encounter complicated type declarations like `void (*float(int,void (*n)(int)))(int)`, these are frequently a subject of [jokes](jokes.md) ("look, C is simple").
Unlike many "[modern](modern.md)" languages, C by itself doesn't offer too much advanced functionality such as displaying graphics, working with network, getting keyboard state and so on -- the base language doesn't even have any [input/output](io.md), it's a pure processor of values in memory. The standard library offers things like basic I/O with standard input/output streams, basic operations with [files](file.md), strings, time, math functions and other things, but for anything more advanced you will need an external library like [SDL](sdl.md) or [Posix](posix.md) libraries.
Unlike many "[modern](modern.md)" languages, C by itself doesn't offer too much advanced and fancy functionality such as displaying graphics, working with [network](network.md), getting raw keyboard state and so on -- the base language doesn't even have any [input/output](io.md), it's a pure processor of values in memory. The standard library offers things like basic I/O with standard input/output streams, handling [files](file.md) on the disk, manipulating [strings](string.md), handling time, evaluating [mathematical](math.md) functions and other things, but for anything more advanced you will need an external library like [SDL](sdl.md) or those defined by [Posix](posix.md).
C is said to be a **"[portable](portability.md) [assembly](assembly.md)"** because of its low level nature, great performance etc. -- though C is structured (has control structures such as branches and loops) and can be used in a relatively high level manner, it is also possible to write assembly-like code that operates directly with bytes in memory through [pointers](pointer.md) without many safety mechanisms, so C is often used for writing things like hardware [drivers](driver.md). On the other hand some restrain from likening C to assembly because C compilers still perform many transformations of the code and what you write is not necessarily always what you get.
C is said to be a **"[portable](portability.md) [assembly](assembly.md)"** not only because it is quite low level and almost on par with assembly in performance, but also because many languages just choose to compile to C rather than to compile to assembly. Though C is structured (has control structures such as branches and loops) and can be used in a relatively high level manner, it is also possible to write assembly-like code that operates directly with bytes in memory through [pointers](pointer.md) without many safety mechanisms, so C is often used for writing things like hardware [drivers](driver.md). On the other hand some restrain from likening C to assembly because C compilers still perform many transformations of the code and what you write is not necessarily always what you get.
Mainstream consensus acknowledges that C is among the best languages for writing low level code and code that requires **performance**, such as [operating systems](operating_system.md), [drivers](driver.md) or [games](game.md). Even scientific libraries with normie-language interfaces -- e.g. various [machine learning](machine_learning.md) [Python](python.md) libraries -- usually have the performance critical core written in [C](c.md). Normies will tell you that for things outside this scope C is not a good language, with which we disagree -- [we](lrs.md) recommend using C for basically everything that's supposed to last, i.e. if you want to write a good website, you should write it in C etc.
Mainstream consensus acknowledges that C is among the best languages for writing low level code and code that requires **performance**, such as [operating systems](operating_system.md), [drivers](driver.md) or [games](game.md). Even scientific libraries with normie-language interfaces -- e.g. various [machine learning](machine_learning.md) [Python](python.md) libraries -- usually have the performance critical core written in [C](c.md). Normies will tell you that for things outside this scope C is not a good language, with which we disagree -- [we](lrs.md) recommend using C for basically everything that's [supposed to last](future_proof.md), i.e. if you want to write a good dynamic website, you should probably write it in C.
**C is NOT a subset of C++.** This is proven for example by the simple example of a C program that uses the word `class` as a name for a variable -- in C++ this cannot be done. Sometimes the differences between C and C++ are bigger, for example in semantics, and may cause trouble to those who don't know about them. It is true that many C programs will run as C++ just fine, but not nearly all, and some C programs that run as C++ will have different behavior. We have to always be aware of this.
**Is C low or high level?** This depends on the context. Firstly back in the day when most computers were programmed in [assembly](assembly.md), C was seen as high level, simply because it offered the highest level of abstraction at the time, while nowadays with languages like [Python](python.md) and [JavaScript](js.md) around people see C as very low level by comparison -- so it really depends on if you talk about C in context of "old" or "modern" programming and which languages you compare it to. Secondly it also depends on HOW you program in C -- you may choose to imitate assembly programming in C a lot, avoid using libraries, touch hardware directly, avoid using complex features and creating your own abstractions -- here you are really doing low level programming. On the other hand you can emulate the "modern" high-level style programming in C too, you can even mimic [OOP](oop.md) and make it kind of "C++ with different syntax", you may use libraries that allow you to easily work with strings, heavy macros that pimp the language to some spectacular abomination, you may write your own garbage collector etc. -- here you are basically doing high level programming in C.
@ -151,29 +153,29 @@ The standard library (libc) is a subject of live debate because while its interf
Firstly let's sum up some of the reasons why C is so good:
- **C as a language is relatively simple**: Though strictly speaking it's not in the league of most minimal languages like [Forth](forth.md) and [Lisp](lisp.md), C is the next best thing in terms of [minimalism](minimalism.md) and the small amount of bloat it contains is usually somehow justified at least, the language (or its subset) can be implemented in a quite minimal way if one so desires. It employs little [abstraction](abstraction.md). This all helps performance, freedom and encourages many implementations. C's standard library also isn't gigantic, the important parts basically just provide I/O and help with simple things like manipulating strings and memory allocation, so new C implementations aren't burdened by having to implement tons of libraries.
- **It is extremely fast and efficient**: Owing to other mentioned points such as good specification, simplicity, lack of bullshit and having a good balance between low and high level attributes, C is known for being possibly the fastest [portable](portability.md) language in existence, also greatly efficient with memory etc.
- **C doesn't limit you or hold (tie) your hands**: This is bad for the beginner but great for the expert, most of the times C won't "protect" you from doing anything, even crashing your program -- this kind of freedom is necessary to achieve truly marvelous things, C is like a race car, it doesn't have speed limiters and automatic transmission, nothing that would tie your hands or increase the car weight, it trusts in you being a good driver.
- **C as a language is relatively simple**: Though strictly speaking it's not in the league of most minimal languages like [Forth](forth.md) and [Lisp](lisp.md), C is the next best thing in terms of [minimalism](minimalism.md) and the small amount of bloat it contains is usually somehow justified at least, the language (or its subset) can be implemented in a quite minimal way if one so desires. It employs little [abstraction](abstraction.md). This all helps performance, freedom and encourages many implementations. C's standard library also isn't gigantic like that of for example [Python](python.md), the important parts basically just provide I/O and help with simple things like manipulating strings and memory allocation, so new C implementations aren't burdened by having to implement tons of libraries. There are several C compilers that were made by a single man.
- **It is extremely fast and efficient**: Owing to mentioned attributes such as good specification, simplicity, lack of bullshit and having a good balance between low and high level, C is known for being possibly the fastest [portable](portability.md) language in existence, also with very small memory footprint etc.
- **C doesn't limit you or hold (tie) your hands**: This may bad for the beginner but is necessary for the expert, most of the times C won't "protect" you from doing anything, even crashing your program -- this kind of freedom is necessary to achieve truly marvelous things, C is like a race car, it doesn't have speed limiters and automatic transmission, nothing that's hidden from you or which would increase the car weight, it trusts in you being a good driver.
- **C is highly standardized**: Many languages have some kind of "online specification", however C is on the next level by literally being officially standardized by the forefront standardizing organizations like ANSI and ISO, by full time paid experts over many years and iterations, so the language is extremely well defined and described, down to saying which exact things are left undefined/unspecified, leaving freedom of implementation that leads to the language's great performance.
- **It's extremely well establishes, optimized, stable and time tested, with many tools**: Being among the oldest languages, the language of the old time [hackers](hacking.md) and the language of [Unix](unix.md), maybe the most important piece of software in history, C has been so widely adopted, reimplemented, optimized and tested over and over that it's considered to be among the most essential pieces of software any platform has to have. Everything on the low level is written in C, so you essentially first have to have C to be able to run anything else. Many companies have invested great many resources to making C fast as it benefited them. While other languages come and go, or at least mutate and become something else over time, C stands as one of very few stable things in computer technology. There are also tons and tons of tools that help with C development, various static analyzers, debuggers, code beautifiers etcetc.
- **It doesn't have any [modern](modern.md) [bullshit](bullshit.md)**: There is no [OOP](oop.md), [generics](generics.md), [garbage collection](garbage_collection.md), no [package manager](package_manager.md) etc.
- **There is a huge number of [compilers](compiler.md)**: While a "[modern](modern.md)" language has some kind of main reference implementation and then maybe one of two alternative implementations, C has dozens (maybe even hundreds) of compilers. You'll find compilers under all the [licenses](license.md), huge ones with many features and great optimizations, small ones that will run on tiny devices, ones that compile very fast, ones that translate C to other languages etcetc.
- **It is elitist**: The relatively higher difficulty of learning the language has a nice effect of keeping idiots out of its community, keeping the language less intoxicated by retarded ideas. { NOTE: The word "elitist" here is not to really mean inherently "discriminating" of course, but rather "unpopular" because it's quite different from the mainstream and requires some effort on unlearning bad mainstream habits, i.e. nowadays it needs some dedication, you can't just join in effortlessly. It's elitist in the same way in which Unix systems or suckless software are elitist. ~drummyfish }
- **It's extremely well establishes, optimized, stable and time tested, plus many helper tools exists**: Being among the oldest languages, one of the old time [hackers](hacking.md) and the language of [Unix](unix.md), maybe the most important piece of software in history, C has been so widely adopted, reimplemented, optimized and tested over and over that it's considered to be among the most essential pieces of software any platform has to have. Everything on the low level is written in C, so you essentially first have to have C to be able to run anything else. Many companies have invested great many resources to making C fast as it benefited them. While other languages come and go, or at least mutate and become something else over time, C stands as one very few stable things in computer technology, which is a rarity. Along the way hackers have also made tons and tons of tools that help with C development, various static analyzers, debuggers, code beautifiers, transpilers etcetc.
- **It doesn't have any [modern](modern.md) [bullshit](bullshit.md)**: There is no [OOP](oop.md), [generics](generics.md), [garbage collection](garbage_collection.md), no [package manager](package_manager.md), no [furry](furry.md) mascots etc.
- **There is a huge number of [compilers](compiler.md)**: While a "[modern](modern.md)" language has some kind of main reference implementation and then maybe one of two alternative implementations, C has dozens (maybe even hundreds) of compilers. You'll find compilers under all possible [licenses](license.md), huge ones with many features and uber optimizations, small ones that will run on tiny devices, ones that compile very fast, ones that translate C to other languages and so on.
- **It is elitist**: Higher difficulty of learning C creates a nice "barrier to entry" with an effect that keeps absolute idiots away, keeping the language less intoxicated by retarded ideas. { NOTE: The word "elitist" here is not to really mean inherently "discriminating" of course, but rather "unpopular among the stupid" because it's quite different from the mainstream and requires some effort on unlearning bad mainstream habits, i.e. nowadays it needs some dedication, you can't just join in effortlessly. It's elitist in the same way in which Unix systems or suckless software are elitist. ~drummyfish }
- **C is close to the [hardware](hw.md), reflecting how computers work**: This has many advantages: firstly efficiency, as code that maps well to hardware is predictable and efficient, lacking [magic](magic.md) in translation. It simplifies implementations, making the language more free. Then also the programmer himself is close to the machine, he has to learn how it works, what it likes and dislikes -- a knowledge every programmer has to have.
- **There is a great balance between low and high level (minimalism vs "features")**: C seems to have hit a sweet spot at which it offers just enough high level features for comfortable programming, such as [data types](data_type.md), functions and expressions, while not crossing the line beyond which it would have to pay a high cost for this comfort, i.e. it managed to buy us a lot practically for free. Things like this cannot really be planned well, it takes a genius and intuition to design a language this way, this shows the greatness of the old master programmers.
- **It is [old](old.md), written only by white male [hackers](hacking.md), at times when [capitalism](capitalism.md) was weaker**: No [women](woman.md) were probably involved in the development (of course we aren't racists or sexists, it's just a fact that white men are best at programming), the development was largely part of genuine research, at the time when computers weren't mainstream and computer technology wasn't being raped as hard as today. C developers didn't even think of embedding any political message in the language. Times like this will never be repeated.
- **There is a good balance between low and high level (minimalism vs "features")**: C seems to have hit the sweet spot at which it offers just enough high level features for comfortable programming, such as [data type](data_type.md) checks, routines and preprocessor, while not crossing the line beyond which it would have to pay an unreasonably high cost for the comfort, i.e. it managed to buy a lot for a very low price. Things like this cannot really be completely planned, it requires a genius, intuition and many years of trial and error iterations to create a language like this.
- **It is [old](old.md), written only by white male [hackers](hacking.md), at times when [capitalism](capitalism.md) was weaker**: No [women](woman.md) were probably involved in the development, making the language wasn't a form of some angry minority's political protest (of course we aren't racists or sexists, it's just a fact that white men are best at programming), the development was largely part of genuine research, at the time when computers weren't mainstream and computer technology wasn't being raped as hard as today. C developers didn't even think of embedding any political message in the language. Times like that will never be repeated.
- ...
Now let's admit that nothing is [perfect](perfect.md), not even C; it was one of the first relatively higher level languages and even though it has showed to have been designed extremely well, some things didn't age great, or were simply bad from the start. We still prefer this language as usually the best choice, but it's good to be aware of its downsides or smaller issues, if only for the sake of one day designing a better language. Please bear in mind all here are just suggestions, they made of course be a subject to counter arguments and further discussion. Here are some of the **bad things** about the language:
Now let's admit that nothing is [perfect](perfect.md), not even C; it was one of the first relatively higher level languages and even though it has showed to have been designed extremely well, some things didn't turn out that well. We still prefer C as one of the best choices, but it's good to be aware of its downsides and smaller issues, if only for the sake of one day designing a better language. Please bear in mind all here are just suggestions, they may of course be a subject to counter arguments and further discussion. Here are some of the **bad things** about the language:
- **C specification (the ISO standard) is [proprietary](proprietary.md)** :( The language itself probably can't be copyrighted, nevertheless this may change in the future, and a proprietary specs lowers C's accessibility and moddability (you can't make derivative versions of the spec).
- **The specification is also long as fuck** (approx. 500 pages, our of that 163 of the pure language), indicating [bloat](bloat.md)/complexity/obscurity. A good, free language should have a simple definition. It could be simplified a lot by simplifying the language itself as well as dropping some truly legacy considerations (like [BCD](bcd.md) systems?) and removing a lot of undefined behavior.
- **Some behavior is weird and has unnecessary exceptions**, for example a function can return anything, including a `struct`, except for an array. This makes it awkward to e.g. implement vectors which would best be made as arrays but you want functions to return them, so you may do hacks like wrapping them inside a struct just for this.
- **Some things could be made simpler**, e.g. using [reverse polish](reverse_polish.md) notation for expressions, rather than expressions with brackets and operator precedence, would make implementations much simpler, increasing sucklessness (of course readability is an argument).
- **C specification (the ISO standard) is [proprietary](proprietary.md)**. The language itself probably can't be copyrighted, nevertheless this may change in the future, and a proprietary spec lowers C's accessibility and moddability (you can't make derivative versions of the spec).
- **The specification is also long as fuck** (approx. 500 pages, our of that 163 of the pure language), indicating [bloat](bloat.md)/complexity/obscurity. A good, free language should have a simple definition and specification. It could be simplified a lot by simplifying the language itself as well as dropping some truly legacy considerations (like [BCD](bcd.md) systems?).
- **Some behavior is weird and has unnecessary exceptions**, for example a function can return anything, including a `struct`, except for an array. This makes it awkward for example when implementing [vectors](vector.md) which would best be made as arrays but you want functions to return them, so you are forced to ugly hacks like wrapping them inside a struct just for this.
- **Some things could be made simpler**: e.g. using [reverse polish](reverse_polish.md) notation for expressions?
- **Some things could be dropped entirely** ([enums](enum.md), [bitfields](bitfield.md), possibly also unions etc.), they can be done and imitated in other ways without much hassle.
- **The preprocessor isn't exactly elegant**, it has completely different syntax and rules from the main language, not very suckless -- ideally preprocessor uses the same language as the base language.
- **The syntax is sucky sometimes**, infamously e.g. division by pointer dereference can actually create a comment (like `myvalue /*myptr`), also multiplication and pointer dereference use the same symbol `*` while both operation can be used with a pointer -- that can create confusion. Also a case label with variables inside it HAS TO be enclosed in curly brackets but other ones don't, data type names may consist of multiple tokens (`long long int` etc.), many preprocessor commands need to be on separate lines (makes some one liners impossible), also it's pretty weird that the condition after `if` has to be in brackets etc., it could all be designed better. Keywords also might be better being single chars, like `?` instead of `if` etc. (see [comun](comun.md)). A shorter source code that doesn't try to imitate English would be probably better.
- **Some undefined/unspecified behavior is probably unnecessary** -- undefined behavior isn't bad in general of course, it is what allows C to be so fast and efficient in the first place, but some of it has shown to be rather cumbersome; for example the unspecified representation of integers, their binary size and behavior of floats leads to a lot of trouble (unknown upper bounds, sizes, dangerous and unpredictable behavior of many operators, difficult testing etc.) while practically all computers have settled on using 8 bit bytes, [two's complement](twos_complement.md) and IEEE754 for [floats](float.md) -- this could easily be made a mandatory assumption which would simplify great many things without doing basically any harm. New versions of C actually already settle on two's complement. This doesn't mean C should be shaped to reflect the degenerate "[modern](modern.md)" trends in programming though!
- **The syntax is sucky sometimes**, infamously e.g. division by pointer dereference can actually create a comment (like `myvalue /*myptr`), also multiplication and pointer dereference use the same symbol `*` while both operation can be used with a pointer -- that may create confusion. Also a case label with variables inside it HAS TO be enclosed in curly brackets but other ones don't, data type names may consist of multiple tokens (`long long int` etc.), many preprocessor commands need to be on separate lines (makes some one liners impossible), also it's pretty weird that the condition after `if` has to be in brackets etc., it could all be designed better. Keywords also might be better being single chars, like `?` instead of `if` etc. (see [comun](comun.md)). A shorter source code that doesn't try to imitate English would be probably better.
- **Some undefined/unspecified behavior is probably unnecessary** -- undefined behavior isn't bad in general of course, but some of it has shown to be rather cumbersome; for example the unspecified representation of integers, their binary size and behavior of floats leads to a lot of trouble (unknown upper bounds, sizes, dangerous and unpredictable behavior of many operators, difficult testing etc.) while practically all computers have settled on using 8 bit bytes, [two's complement](twos_complement.md) and IEEE754 for [floats](float.md) -- this could easily be made a mandatory assumption which would simplify great many things without doing basically any harm. New versions of C actually already settle on two's complement. This doesn't mean C should be shaped to reflect the degenerate "[modern](modern.md)" trends in programming though!
- Some basic things that are part of libraries or extensions, like fixed width types and binary literals and possibly very basic I/O (putchar/readchar), could be part of the language itself rather than provided by libraries.
- All that stuff with *.c* and *.h* files is unnecessary, there should just be one file type probably.
- It's not [Forth](forth.md).
@ -193,14 +195,13 @@ int main(void)
// this is the main program
puts("welcome to C");
return 0; // end with success
}
```
You can simply paste this code into a file which you name e.g. `program.c`, then you can compile the program from command line like this:
You can simply paste this code into a file which you name let's say `program.c`, then you can compile the program from command line like this:
`gcc -o program program.c`
`cc -o program program.c`
Then if you run the program from command line (`./program` on Unix like systems) you should see the message.

2
cc0.md
View file

@ -2,7 +2,7 @@
CC0 is a [waiver](waiver.md) (similar to a [license](license.md)) of [copyright](copyright.md), created by [Creative Commons](creative_commons.md), that can be used to dedicate one's work to the [public domain](public_domain.md) (kind of).
UPDATE: There is now a similar waiver called [WPDD](wpdd.md) (*worldwide public domain dedication*, https://wpdd.info/), intended to also waive patents.
UPDATE: There is now a similar waiver called [WPDD](wpdd.md) (*worldwide public domain dedication*, https://wpdd.info/), intended to also waive [patents](patent.md).
Unlike a license, a waiver such as this *removes* (at least effectively) the author's copyright; by using CC0 the author willingly gives up his own copyright so that the work will no longer be owned by anyone (while a license preserves the author's copyright while granting some rights to other people). It's therefore the most [free](free_software.md) and [permissive](permissive.md) option for releasing intellectual works. CC0 is designed in a pretty sophisticated way, it also waives "neighboring rights" (e.g. [moral rights](moral_rights.md); waving these rights is why we prefer CC0 over other waivers such as [unlicense](unlicense.md)), and also contains a fallback license in case waiving copyright isn't possible in a certain country. For this CC0 is one of the best ways, if not the best, of truly and completely dedicating works to public domain world-wide (well, at least in terms of copyright). In this world of extremely fucked up [intellectual property](intellectual_property.md) laws it is not enough to state "my work is public domain" -- you need to use something like CC0 to achieve legally valid public domain status.

View file

@ -1,18 +1,18 @@
# Football
*Not to be confused with any [American](usa.md) pseudosport.*
*Not to be confused with any [American](usa.md) [homosexual](gay.md) pseudosport.*
Football is one of the most famous [sport](sport.md) [games](game.md) in which two teams face each other and try to score goals by kicking an inflated ball. It is one of the best sports not only because it is genuinely [fun](fun.md) to play and watch but also because of its essentially simple rules, accessibility (not for rich only, all that's really needed is something resembling a ball) and relatively low discrimination -- basically anyone can play it, unlike for example basketball in which height is key; in amateur football even fat people can take part (they are usually assigned the role of a goalkeeper). [Idiots](usa.md) call football *soccer*.
Football is one of the most famous [sport](sport.md) [games](game.md) in which two teams face each other and try to score goals by kicking an inflated ball. It is one of the best sports not only because it is genuinely [fun](fun.md) to play and watch but also because of its essentially simple rules, accessibility (not for rich only, all that's really needed is something resembling a ball) and relatively low discrimination -- basically anyone can play it, unlike for example basketball in which height is key or ice hockey that requires ice and expensive gear; in amateur football even fat people may take part (they are usually assigned the role of a goalkeeper). [Idiots](usa.md) call football *soccer*.
We, [LRS](lrs.md), highly value football, as it's a very [KISS](kiss.md) sport that can be played by anyone anywhere without needing expensive equipment. It is the sport of the people, very popular in poor parts of the world.
Football can be implemented as a video [game](game.md) or inspire a game mode -- this has been done e.g. in [Xonotic](xonotic.md) (the Nexball mode) or [SuperTuxKart](supertuxkart.md). There is a popular mainstream [proprietary](proprietary.md) video game called Rocket League in which cars play football (INB4 zoomers start calling football "Rocket League with people"). There is also a greatly suckless [pen and paper](pen_and_paper.md) version of football called [paper football](paper_football.md).
Football can be implemented as a video [game](game.md) or inspire a game mode -- this has been done e.g. in [Xonotic](xonotic.md) (the Nexball mode) or [SuperTuxKart](supertuxkart.md). There is a popular mainstream [proprietary](proprietary.md) video game called Rocket League in which cars play football (INB4 [zoomers](zoomer.md) start calling football "Rocket League with people"). There is also a greatly suckless [pen and paper](pen_and_paper.md) version of football called [paper football](paper_football.md).
## Rules
As football is so widely played on all levels and all around the world, there are many versions and rule sets of different games in the *football* family, and it can sometimes be difficult to even say what classifies as football and what's a different sport. There are games like futsal and beach football that may or may not be seen as a different sport. The most official rules of what we'd call football are probably those known as *Laws of the Game* governed by International Football Association Board (IFAB) -- these rules are used e.g. by FIFA, various national competitions etc. Some organizations, e.g. some in the [US](usa.md), use different but usually similar rules. We needn't say these high level rules are pretty complex -- *Laws of the Game* have over 200 pages and talk not just about the mechanics of the game but also things such as allowed advertising, political and religious symbolism, referee behavior etc.
As football is so widely spread and played on all levels and all around the [world](earth.md), there are many versions and rule sets of different games in the *football* family, and it may occasionally get difficult to even say what classifies as football and what's a different sport entirely. There are games like futsal and beach football that may or may not be seen as a different sport. The most official rules of what we'd call football are probably those known as *Laws of the Game* governed by International Football Association Board (IFAB) -- these rules are used e.g. by FIFA, various national competitions etc. Some organizations, e.g. some in the [US](usa.md), use different but usually similar rules. We needn't say these high level rules are pretty complex -- *Laws of the Game* have over 200 pages and talk not just about the mechanics of the game but also things such as allowed advertising, political and religious symbolism, referee behavior etc.
Here is a simple ASCII rendering of the football pitch:
Here is a simple [ASCII](ascii_art.md) rendering of the football pitch:
```
C1_________________________________________C2

View file

@ -1,6 +1,6 @@
# Future-Proof Technology
Future-proof technology is [technology](technology.md) that is very likely to stay functional for a very long time with minimal to no [maintenance](maintenance.md), even considering significant changes in state of technology in society. In a world of relatively complex technology, such as that of [computers](computer.md), this feature is generally pretty hard to achieve; today's [consumerist](consumerism.md) society makes the situation even much worse by focusing on immediate profit without long-term planning and by implementing things such as [bloat](bloat.md), intentional introduction of complexity, [obscurity](obscurity.md), [dependencies](dependency.md) and [planned obsolescence](planned_obsolescence.md). But with good approach, such as that of [LRS](lrs.md), it is very possible to achieve.
[Future](future.md)-[proof](proof.md) technology is [technology](technology.md) that is very likely to stay functional for a very long time with minimal to no [maintenance](maintenance.md), even considering significant changes in state of technology in society. In a world of relatively complex technology, such as that of [computers](computer.md), this feature is generally pretty hard to achieve; today's [consumerist](consumerism.md) society makes the situation even much worse by focusing on immediate profit without long-term planning and by implementing things such as [bloat](bloat.md), intentional introduction of complexity, [obscurity](obscurity.md), [dependencies](dependency.md) and [planned obsolescence](planned_obsolescence.md). But with good approach, such as that of [LRS](lrs.md), it is very possible to achieve.
A [truly good technology](lrs.md) is trying to be future-proof because this saves us the great cost of maintenance and reinventing wheels and it gives its users comfort and safety; users of future-proof technology know they can build upon it without fearing it will suddenly break.

3
iq.md
View file

@ -62,7 +62,7 @@ TODO: more details, history, where to measure (web vs Mensa vs SAT etc.)
|-----------------------------------99.999999802%-----------------------------------|---1 in 1013594327.1152-
```
*IQ distribution along with approximate placement of certain groups and individuals. Notice how interesting people are either far to the right or far to the left. Also notice how the smartest you've rarely heard of while you've heard of all the dumbest.*
*IQ distribution along with approximate placement of certain groups and individuals (each line represents another Gaussian distribution so the borders aren't strict). Notice how interesting people are either far to the right or far to the left. Also notice how the smartest you've rarely heard of while you've heard of all the dumbest.*
**IQ and [race](race.md) and [sex](sex.md)**: IQ is correlated with race and sex. The following is a comparison of average IQs of groups with various combination of the two factors:
@ -114,4 +114,3 @@ DISCLAIMER: The previous paragraph is suitable to everyone. The following is a b
- [divine intellect](terry_davis.md)

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
# Transistor
Transistor is a small [semiconductor](semiconductor.md) element of [electronic](electronics.md) circuits that can be used as an amplifier or a switch, and which is a basic building block of [digital](digital.md) electronic [computers](computer.md), integrated circuits and many other electronic devices. Transistors replaced [vacuum tubes](vacuum_tube.md) and [relays](relay.md) which were used in primitive computers of the 20th century; transistors can be made much smaller, cheaper, more reliable and, unlike relays, operated purely electronically and therefore much faster. Transistor has become the most manufactured device in history.
Transistor is a small [semiconductor](semiconductor.md) element of [electronic](electronics.md) circuits that can be used as an amplifier or a switch, and which is a basic building block of [digital](digital.md) electronic [computers](computer.md), integrated circuits and many other electronic devices. Transistors replaced [vacuum tubes](vacuum_tube.md) and [relays](relay.md) which were used in primitive computers of the 20th century; transistors can be made much smaller, cheaper, more reliable and, unlike relays, operated purely electronically and therefore much faster. Transistor has become the most manufactured device in [history](history.md).
Transistor generally has three terminals. Its key principle is that of behaving like an electronically operated amplifier or switch: we can make a transistor *open* or *close* (i.e. conduct or not conduct electricity) by applying different voltage or current (and we can also make it something between *open* and *close*). The voltage/current by which we control the transistor can be lower than that which we control, so we can see this as an amplifier: we can control high current with low current, i.e. the high current follows the low current but has higher amplitude. We can also see this as a switch: by applying voltage/current we can make a wire connect (low resistivity) or disconnect (high resistivity) similarly to a physical switch. This switch behavior is important for computers because we can exploit it to implement [binary](binary.md) (on/off) [logic circuits](logic_gate.md).
@ -26,5 +26,4 @@ B___|.-' B___|.-' G |--' G |--'
BJT (NPN) BJT (PNP) FET (N) FET (P)
```
First FET transistors were JFETs (junction-gate FET) but by today were mostly replaced by **MOSFETs** (metal-oxide-semiconductor FET), a transistor using a metal oxide layer for separating the gate terminal which gives it some nice properties over JFET. These transistors are used to implement [logic gates](logic_gate.md) e.g. using the **[CMOS](cmos.md)** fabrication process which uses complementary pairs of P and N channel FETs so that e.g. one is always off which decreases power consumption.
First FET transistors were JFETs (junction-gate FET) but by today were mostly replaced by **MOSFETs** (metal-oxide-semiconductor FET), a transistor using a metal oxide layer for separating the gate terminal which gives it some nice properties over JFET. These transistors are used to implement [logic gates](logic_gate.md) e.g. using the **[CMOS](cmos.md)** fabrication process which uses complementary pairs of P and N channel FETs so that e.g. one is always off which decreases power consumption.

File diff suppressed because one or more lines are too long

View file

@ -3,9 +3,9 @@
This is an autogenerated article holding stats about this wiki.
- number of articles: 591
- number of commits: 867
- total size of all texts in bytes: 4262308
- total number of lines of article texts: 32531
- number of commits: 868
- total size of all texts in bytes: 4262682
- total number of lines of article texts: 32533
- number of script lines: 262
- occurences of the word "person": 7
- occurences of the word "nigger": 91
@ -35,7 +35,7 @@ longest articles:
top 50 5+ letter words:
- which (2405)
- which (2407)
- there (1849)
- people (1642)
- example (1427)
@ -48,7 +48,7 @@ top 50 5+ letter words:
- their (885)
- would (882)
- called (824)
- language (821)
- language (822)
- being (806)
- things (802)
- something (800)
@ -56,28 +56,28 @@ top 50 5+ letter words:
- simple (763)
- computer (750)
- without (714)
- programming (711)
- programming (712)
- function (701)
- these (683)
- different (671)
- however (663)
- system (639)
- world (620)
- world (619)
- doesn (614)
- should (612)
- while (591)
- point (587)
- society (578)
- games (578)
- simply (556)
- simply (557)
- drummyfish (554)
- using (548)
- using (549)
- though (548)
- still (542)
- possible (533)
- memory (521)
- similar (520)
- https (508)
- https (510)
- course (507)
- value (503)
- technology (496)
@ -89,6 +89,15 @@ top 50 5+ letter words:
latest changes:
```
Date: Mon Aug 26 12:26:56 2024 +0200
cc0.md
future_proof.md
kiss.md
license.md
main.md
random_page.md
wiki_pages.md
wiki_stats.md
Date: Sun Aug 25 01:56:24 2024 +0200
ancap.md
attribution.md
@ -113,17 +122,6 @@ Date: Sun Aug 25 01:56:24 2024 +0200
Date: Thu Aug 22 22:58:37 2024 +0200
3d_rendering.md
algorithm.md
assembly.md
brainfuck.md
fight_culture.md
jokes.md
macrofucker.md
main.md
random_page.md
update_culture.md
wiki_pages.md
wiki_stats.md
Date: Thu Aug 22 02:23:24 2024 +0200
```
most wanted pages:
@ -165,7 +163,7 @@ most popular and lonely pages:
- [modern](modern.md) (95)
- [linux](linux.md) (92)
- [gnu](gnu.md) (91)
- [programming](programming.md) (87)
- [programming](programming.md) (88)
- [fun](fun.md) (86)
- [censorship](censorship.md) (86)
- [math](math.md) (83)

View file

@ -6,12 +6,14 @@ Work, better known as slavery, is an unpleasant effort that one is required to s
**[Fun](fun.md) fact**: the Spanish (also Portuguese etc.) word for work, "trabajo", comes from *tripalium*, a device made of three sticks used to force slaves to work. { Thanks to my friend who told me about this <3 ~drummyfish }
While good society tries to eliminate work, [capitalism](capitalism.md) aims for the opposite, i.e. artificially creating bullshit jobs and bullshit needs so as to keep everyone enslaved to the system. Fortunately movements such as the [antiwork](antiwork.md) movement try to oppose this, however masses have already been brainwashed to be hostile to such movements and instead demand their own enslavement.
While [good society](less_retarded_society.md) tries to eliminate work, [capitalism](capitalism.md) aims for the opposite, i.e. artificially creating bullshit jobs and bullshit needs so as to keep everyone enslaved to the system. Fortunately movements such as the [antiwork](antiwork.md) movement try to oppose this, however masses have already been brainwashed to be hostile to such movements and instead demand their own enslavement.
[We](lrs.md) see it as essential to start educating people about the issue as well as starting to eliminate jobs immediately with things such as [automation](automation.md) and [universal basic income](ubi.md).
**Slavery has NOT been abolished.** On the contrary, more people than ever are enslaved, and the conditions don't much differ from those of slaves in older times. How is it so? Well, firstly slavery back then wasn't as bad as you see in the movies (just like for example a typical day of a cop is much different from what you'll see in a movie, it's a fucking movie) where you usually see black men in chains rowing in a ship or people dragging stones to the pyramids while being constantly whipped -- indeed that did happen, as it still happens today in the third world, but it wasn't so common, slaves were often owned by a family and were part of it. Yes, they were owned, but your [dog](dog.md) is also owned by you, and still love it and take great care of it, don't you? The slave was a worker but many times had a good relationship with his master, just as you can have a good relationship with your boss; the master didn't take pleasure in torturing the slave or overworking him to death in a week, he wanted to keep him in good shape and happy so that he would live long and do work for him. The slave might have had a relatively good life -- if he could read and write he might have been a transcriber or teacher of the master's children; [Diogenes](diogenes.md) for example was a wise slave who had great respect of his master. A slave could many times save up money and buy his freedom in a few years if he desired. Today's propaganda paints historical slavery as much worse so as to make seem today's slavery not so bad -- yes, it was bad back then but it is possibly even worse today -- the only changes that we made are just cosmetic: for example we don't call slave masters *masters* but *managers* or *bosses*, your employer still owns you through your work contract (which you technically "may quit", but won't because you need money, or because you would simply have to go to another slave master who will treat you exactly the same), we (at least in the first world) don't use physical force on people anymore but we use a much more effective and cruel psychological, economical and social pressure (it works just as well and keeps the slave in better physical shape, and we can call it "[progress](progress.md)"), we no longer physically chain people in place because we can tie people down by holding their families hostage or making them dependent on drugs, and we can track down any individual no matter where he goes, physical chain is not needed anymore, another cosmetic change we call "progress". People commit more [suicides](suicide.md) from overworking than ever, that alone says something. Many modern capitalists put people under much worse conditions than old slavemasters, for example at one point Henry Ford allowed his workers only 10 minutes for lunch -- that's as fucked up as it gets. If you think slavery doesn't exist, see for example the documentary *Shipbreakers* in which you'll see today's people -- men, women and children -- in India in conditions as miserable as you could ever image, being forced to dismantle ships all day long just to earn a few dimes for food, breathing toxic fumes, getting cancer and going blind, dying on daily basis from no work safety, living in small huts on beaches soaked with toxic chemical poison. That's today's world.
**Stop working right now!** Society has brainwashed you into constantly "planning for retirement", to keep postponing living for "later", to sacrifice the best years of your life, your whole life -- the only life you will every have -- to do something you hate from your heart, to sacrifice time you could spend with your loved ones, by helping others, by creating art of love. You are constantly made to chase something and never just live -- you are working hard to graduate, then to pass exams in University, then to defend your thesis, then to get a job, then to get a promotion, then to pay off your mortgage, and suddenly you are 70 years old and your life is gone. Do not waste your life like this, start living right now.
## How To Avoid Work
For lawyers: we officially DO NOT ADVISE any illegal methods mentioned here. However unofficially we highly welcome them. Also for lawyers: fuck you. Here are some ways in which it might IN THEORY be possible to avoid work: