Update
This commit is contained in:
parent
9f8a2c5392
commit
79e565687b
7 changed files with 2218 additions and 1913 deletions
|
@ -1,5 +1,5 @@
|
|||
# Education
|
||||
|
||||
*not to be confused with [indoctrination](indoctrination.md)*
|
||||
*not to be [confused](often_confused.md) with [indoctrination](indoctrination.md)*
|
||||
|
||||
TODO
|
|
@ -1,11 +1,13 @@
|
|||
# Elon Mu$k
|
||||
|
||||
Elon Musk is an enormous [capitalist](capitalism.md) dick. Elon's hair is the least fake thing about him. His [IQ](iq.md) is immesurably low, he barely even passes the mirror self recognition test but he likes to LARP as Einstein on Twitter, it's super cringe, he's like a child, just more retarded and uglier.
|
||||
Elon Musk is an enormous [capitalist](capitalism.md) dick. Elon's hair is the least fake thing about him. His [IQ](iq.md) is immesurably low, he barely even passes the mirror self recognition test but he likes to LARP as [Einstein](einstein.md) on Twitter, it's super cringe, he's like a child, just more retarded and uglier.
|
||||
|
||||
Lololol how pathetic, this faggot PUBLICLY LIED for years about being good at games to make himself look cooler to [zoomers](zoomer.md), he made up having been a semi pro at [Quake](quake.md) lol, he paid people to grind his game accounts, then streamed playing the games and despite having top characters on the ladder showed he didn't know how to play the fucking games [LMAOOOOOO](lmao.md), he reluctantly admitted it now :D How the fuck were people supposed to believe he is running 20 companies while also being able to put enough time to be at the top of competitive game ladders FKN SHIT. EVERY SINGLE [ENTREPRENEUR](entrepreneur.md) IS A FUCKING PATHOLOGICAL LIAR, when will people fucking realize this.
|
||||
|
||||
Musk's company [Neuralink](neuralink.md) killed 1500 animals in 4 years, was charged with animal cruelty ([sauce](https://me.mashable.com/tech/22724/elon-musks-neuralink-killed-1500-animals-in-four-years-now-under-trial-for-animal-cruelty-report)).
|
||||
|
||||
Elon was born 1971 in Africa. How come he's white then? No one knows. He got so successful at business he won numerous awards and prizes, including [Faggot](faggot.md) of the Year and personal handjob from president [Trump](trump.md).
|
||||
|
||||
TODO: more dirt
|
||||
|
||||
TODO: that moment he tried to play [superhero](hero_culture.md) when the kids got stuck in the cave :D
|
||||
|
|
325
exercises.md
325
exercises.md
|
@ -26,13 +26,15 @@ This place is for suggesting programming [projects](project.md) that will in fir
|
|||
|
||||
### Level 0: Trivial, *Piece Of Cake*
|
||||
|
||||
*If you're a noob coming from the [C tutorial](c_tutorial.md), solutions to this level are found down below, just in case you get stuck somewhere.*
|
||||
|
||||
1. **hello**: Make a program that outputs `hello`.
|
||||
2. **counting**: Make a program that outputs numbers from 1 up to 100.
|
||||
3. **guess a number**: Make a game in which the computer secretly thinks a number from 0 to 9 and the player guesses the number. The computer then says if the player won and what the secret number was.
|
||||
4. **password generator**: Make a program which when run outputs randomly generated password (of course it must generate different password each time, i.e. you can't output the exact same password every time). The password must be at least 10 characters long, contain at least one English alphabet letter, one decimal digit and one special character.
|
||||
5. **rock, paper scissors**: Make a game of rock paper scissors, the player plays against the computer.
|
||||
6. **average**: Make a program that reads two numbers (you can assume only non-negative integers will be input) and writes out their average (it can be rounded, even to just integer, e.g. 3 and 8 can give 5).
|
||||
7. **dyslexia simulator**: Make a program that will read text (or any length) from the standard input, then output it on standard output so that each pair of letters will be swapped. For example when passed `hi everyone`, the program will output `ihe evyrnoe`.
|
||||
7. **dyslexia simulator**: Make a program that will read text (of any length) from the standard input, then output it on standard output so that each pair of letters will be swapped. For example when passed `hi everyone`, the program will output `ihe evyrnoe`. Besides normal end of input (`EOF`) you can also consider the *end of line* character (`\n`) to be the end of input (it causes some trouble if you don't).
|
||||
8. **kawaii filter**: Make a program that will filter input text to make it more kawai senpai. It has to read characters from input until end is reached (you can consider either EOF or end of line the end of input, that's up to you), outputting each character it reads as soon as it reads it, except for letters *r*/*R* that will be replaced with *w*/*W*. Also when period is read, the word *desu* must be output before it. For example the input *"This program is really good."* will produce output *"This pwogwam is weally good desu."*.
|
||||
9. **info tool**: Make a tool that will output some basic info about real world, the computer, its operating system or the programming language -- you have to really retrieve this info e.g. using standard library, OS files, language's built-in functions etc. When run, it has to output at least three of the following things: current time, current date, operating system name and version, programming language version, native integer size in bits, amount of computer RAM, free disk space, CPU name and/or frequency and/or number of cores or locale info (language, timezone, ...). (hints: see *time.h*, *limits.h*, *locale.h*, *man system* etc.)
|
||||
10. **[ASCII art](ascii_art.md) animation**: Program a simple ASCII art animation that will play in terminal -- just make a few frames of the animation in some text editor, then make a program that will show one frame after another. After each frame write out like 50 spaces to scroll the old frame away from the screen, then draw the next frame. The animation can be advanced just with a key press, i.e. you can just have a loop that draws the frames and at the end of the loop you just wait for user input (but thumbs up if you can figure out how to pause for some fixed time after each frame). Thumbs up: if you can do it, you can also generate the animation [procedurally](procgen.md), i.e. you can for example make an animation of expanding circle without having to draw it all by hand, but this is more difficult.
|
||||
|
@ -101,6 +103,305 @@ This place is for suggesting programming [projects](project.md) that will in fir
|
|||
|
||||
TODO: tetris, voice synth?, snake, quadratic equation, fractals, 2D raycasting, fourier transform, primes, image library, web browser, diff, HTML parser/visualizer?, markov chain, syntax beautifier, grep, some kinda server, function plotter, pi digits, 2D physics engine, encryption?, custom markup lang, procedural MIDI, machine translation?, maze gen., genetic prog., language recognizer, AI?, photogrammetry, solar system simulator, emulator, chat (P2P?), auto integrator, steganography, driver? ...
|
||||
|
||||
### Solutions To Level 0
|
||||
|
||||
Here are solutions to level 0 (not the only valid ones of course):
|
||||
|
||||
1:
|
||||
|
||||
```
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
puts("hello");
|
||||
}
|
||||
```
|
||||
|
||||
2:
|
||||
|
||||
```
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
for (int i = 1; i <= 100; ++i)
|
||||
printf("%d\n",i);
|
||||
}
|
||||
```
|
||||
|
||||
3:
|
||||
|
||||
```
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int secretNumber, userGuess;
|
||||
|
||||
puts("I'm thinking a number, guess what it is:");
|
||||
|
||||
srand(clock()); // seed the random generator, to get different random numbers
|
||||
secretNumber = rand() % 10;
|
||||
userGuess = getchar() - '0';
|
||||
|
||||
if (secretNumber == userGuess)
|
||||
puts("You guessed it!");
|
||||
else
|
||||
printf("No, it was %d.\n",secretNumber);
|
||||
}
|
||||
```
|
||||
|
||||
4:
|
||||
|
||||
```
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
srand(clock()); // seed the random generator
|
||||
|
||||
int passwordLen = 10 + rand() % 6; // 10 to 15 characters
|
||||
|
||||
for (int i = 0; i < passwordLen; ++i)
|
||||
putchar(
|
||||
i == 0 ? ('0' + rand() % 10) :
|
||||
(i == 1 ? ('!' + rand() % 7) : ('a' + rand() % 26)));
|
||||
|
||||
putchar('\n');
|
||||
}
|
||||
```
|
||||
|
||||
5:
|
||||
|
||||
```
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
srand(clock());
|
||||
puts("paper (0), rock (1) or scissors (2)?");
|
||||
|
||||
// 0 = paper, 1 = rock, 2 = scissors; so that N beats (N + 1) % 3
|
||||
int computerPlays = rand() % 3,
|
||||
playerPlays = getchar() - '0';
|
||||
|
||||
printf("I played %d. %s won!\n",computerPlays,
|
||||
playerPlays == computerPlays ? "No one" : (
|
||||
playerPlays == ((computerPlays + 1) % 3) ? "I" : "You"));
|
||||
}
|
||||
```
|
||||
|
||||
6:
|
||||
|
||||
```
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b;
|
||||
scanf("%d",&a);
|
||||
scanf("%d",&b);
|
||||
printf("%d\n",(a + b) / 2);
|
||||
}
|
||||
```
|
||||
|
||||
7:
|
||||
|
||||
```
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
int c1, c2;
|
||||
c1 = getchar();
|
||||
|
||||
if (c1 == EOF || c1 == '\n')
|
||||
break;
|
||||
|
||||
c2 = getchar();
|
||||
|
||||
if (c2 == EOF || c2 == '\n')
|
||||
{
|
||||
putchar(c1);
|
||||
break;
|
||||
}
|
||||
|
||||
putchar(c2);
|
||||
putchar(c1);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
8:
|
||||
|
||||
```
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int c;
|
||||
|
||||
while (1)
|
||||
{
|
||||
c = getchar();
|
||||
|
||||
if (c == EOF || c == '\n')
|
||||
break;
|
||||
|
||||
switch (c)
|
||||
{
|
||||
case 'r': putchar('w'); break;
|
||||
case 'R': putchar('W'); break;
|
||||
case '.': printf(" desu."); break;
|
||||
default: putchar(c); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
9:
|
||||
|
||||
```
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <limits.h>
|
||||
#include <locale.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
time_t t;
|
||||
struct tm *t2;
|
||||
unsigned int testInt = UINT_MAX;
|
||||
unsigned int intBits = 0;
|
||||
|
||||
time(&t);
|
||||
t2 = localtime(&t);
|
||||
|
||||
while (testInt)
|
||||
{
|
||||
testInt >>= 1;
|
||||
intBits++;
|
||||
}
|
||||
|
||||
printf("C version: %lu\n",(unsigned long) __STDC_VERSION__);
|
||||
printf("integer bits: %d\n",intBits);
|
||||
printf("locale: %s\n",setlocale(LC_ALL,NULL));
|
||||
printf("time and date: %s",asctime(t2));
|
||||
}
|
||||
```
|
||||
|
||||
10:
|
||||
|
||||
```
|
||||
// rocket flying to space
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define WIDTH 50
|
||||
#define HEIGHT 20
|
||||
|
||||
void drawFrame(int n)
|
||||
{
|
||||
for (int i = 0; i < 50; ++i) // scroll up
|
||||
putchar('\n');
|
||||
|
||||
for (int y = 0; y < HEIGHT; ++y) // lines
|
||||
{
|
||||
for (int x = 0; x < WIDTH; ++x) // rows
|
||||
{
|
||||
char c = ' ';
|
||||
|
||||
int rocketBottom = HEIGHT - n;
|
||||
int rocketUp = rocketBottom - 8;
|
||||
|
||||
if ((x == WIDTH / 2 || x == WIDTH / 2 + 1) &&
|
||||
(y >= rocketUp && y <= rocketBottom))
|
||||
{
|
||||
if (y == rocketUp || y == rocketBottom - 1)
|
||||
c = x == WIDTH / 2 ? '/' : '\\';
|
||||
else if (y == rocketBottom)
|
||||
c = n % 2 ? '#' : 'v';
|
||||
else
|
||||
c = '|';
|
||||
}
|
||||
else if (y == HEIGHT / 3 && x == WIDTH / 3)
|
||||
c = 'o'; // moon or something
|
||||
else if (y == HEIGHT - 1)
|
||||
c = '_'; // ground
|
||||
else if (
|
||||
(x + y * HEIGHT) % 128 == 0 || // permanent stars
|
||||
((rand() % 128) == 0)) // blinking stars
|
||||
c = rand() % 2 ? '.' : '*'; // randomly choose small or big
|
||||
|
||||
putchar(c);
|
||||
}
|
||||
|
||||
putchar('\n');
|
||||
}
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
for (int i = 0; i < 20; ++i)
|
||||
{
|
||||
drawFrame(i);
|
||||
getchar();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
11:
|
||||
|
||||
```
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
srand(clock());
|
||||
int matches = 10 + rand() % 6, turn = 0;
|
||||
|
||||
while (matches)
|
||||
{
|
||||
char playerInput;
|
||||
|
||||
for (int i = 0; i < matches; ++i)
|
||||
putchar('|');
|
||||
|
||||
printf(" (%d)\nplayer %d, how many to take? (1/2/3):\n",matches,turn);
|
||||
|
||||
while (1)
|
||||
{
|
||||
playerInput = getchar();
|
||||
|
||||
if (playerInput >= '1' && playerInput <= '3') // valid?
|
||||
break;
|
||||
else if (playerInput != '\n') // just ignore confirming newlines
|
||||
puts("bad input");
|
||||
}
|
||||
|
||||
matches -= (playerInput - '0');
|
||||
|
||||
if (matches < 0)
|
||||
matches = 0;
|
||||
|
||||
turn = !turn;
|
||||
}
|
||||
|
||||
printf("Player %d won!",turn);
|
||||
}
|
||||
```
|
||||
|
||||
## Quiz/Questions/Problems/Test
|
||||
|
||||
Here are some questions to test your LRS related knowledge :D Questions here are of varying difficulty, areas and may potentially have even multiple solutions, just like in [real life](irl.md).
|
||||
|
@ -227,11 +528,12 @@ Bear in mind this is not a school test that's supposed to decide if you get to a
|
|||
118. [Jara Cimrman](jara_cimrman.md) invented a brilliant self-powered mine elevator design that worked as follows. When miners came to start a new shift in the mine, two of them would enter a down-coming lift, which by the weight of the two workers started to move down and lifted another lift up; in the up-coming lift one miner, ending his shift in the mine, would come up (as he was lighter than the two miners in the down-coming lift). However they soon realized this system had one fatal flaw. What was it?
|
||||
119. Use only the logical function [NAND](nand.md) (which gives a negated result of [AND](and.md)) to implement the [XOR](xor.md) logical function.
|
||||
120. We have a rubber rope 1 meter long. On one side there is an ant. He starts moving over the rubber towards its other end by the speed of 1 cm/s, however as he starts to move we start stretching the rubber also by the speed of 1 cm/s, so that after 1 second it's 101 cm long, after 2 seconds it's 102 cm long etc. The ant keeps the same speed. Will he ever reach the end? How long would it take him?
|
||||
121. Today in [slavery](work.md) I tried to fix 6 computers: I ended up destroying twice as many of them than I fixed. Every time I destroyed a computer my boss told me I'm a retard. How many times did my boss repeat I'm a retard?
|
||||
122. What does constant [bitrate](bitrate.md) mean in relation to video encoding? What are some of its advantages and disadvantages against variable bitrate?
|
||||
123. The ISS orbits 400 km above [Earth](earth.md) surface. The Earth radius is 6378 km. How far away (from the ISS) is the Earth's horizon?
|
||||
124. Write the hexadecimal values of a pure green color in 24 bit RGB, [RGB565](rgb565.md) and [RGB332](rgb332.md) formats.
|
||||
125. Did you enjoy this quiz?
|
||||
122. [Permutation](permutation.md) is a kind of "shuffling scheme", it says to which position we move items. For example a permutation 213 says the 1st item moves to position 2, 2nd item to position 1 and 3rd item stays in position 3. Applying this permutation to string "abc" would therefore give us "bac", and applying it the second time gets us back to "abc". Find a permutation of length 5 (i.e. some shufling of the string of digits 12345) which among all permutations of length 5 takes the longest possible number of steps to get back to the original arrangement.
|
||||
123. Today in [slavery](work.md) I tried to fix 6 computers: I ended up destroying twice as many of them than I fixed. Every time I destroyed a computer my boss told me I'm a retard. How many times did my boss repeat I'm a retard?
|
||||
124. What does constant [bitrate](bitrate.md) mean in relation to video encoding? What are some of its advantages and disadvantages against variable bitrate?
|
||||
125. The ISS orbits 400 km above [Earth](earth.md) surface. The Earth radius is 6378 km. How far away (from the ISS) is the Earth's horizon?
|
||||
126. Write the hexadecimal values of a pure green color in 24 bit RGB, [RGB565](rgb565.md) and [RGB332](rgb332.md) formats.
|
||||
127. Did you enjoy this quiz?
|
||||
|
||||
### Answers
|
||||
|
||||
|
@ -356,11 +658,12 @@ sin(x) / cos(x) - log2(2) = tg(x) - 1*, so we get *tg(x) >= 1*. So that will hol
|
|||
118. Two miners were coming down but only one up, more workers were entering the mine than were leaving, so the workers started to pile up in the mine. Cimrman solved this by advising the workers to eat a lot before the shift and then work hard to lose some weight so that two heavy miners would be able to lift two lighter ones.
|
||||
119. a XOR b = (a AND NOT(b)) OR (NOT(a) AND b) = (a AND (b NAND b)) OR ((a NAND a) AND b) = NOT(a NAND (b NAND b)) AND ((a NAND a) NAND b) = (a NAND (b NAND b)) NAND ((a NAND a) NAND b).
|
||||
120. Let *p* be the ant's relative position on the rubber, i.e. the fraction of the rubber he has already traveled; when *p = 1* he'll be in the finish. At the beginning his speed in fractions of the rubber per second is *v = 1/100*. As the rubber expands, the fractional speed decreases (he keeps moving at 1 cm/s but the total number of cm to be traveled increases): we can write the speed as a function of time: *v = 1/(100 + t)*. Now the fractional position *p* over time is an [integral](integral.md) of speed, i.e. *p = integrate 1/(100 + t) dt = log(100 + t) + C* and the initial position is *p = 0*, i.e. *C = -log(100)*, so *p = log(100 + t) - log(100)*. Now we just have to compute when *p* reaches 1, i.e. *log(100 + t) - log(100) = 1*, which gives us *t = 100 * (e - 1) ~= 171.83*. So the ant will reach the end in nearly 3 minutes.
|
||||
121. 3: I destroyed 4 computers, so he told me 4 times I'm a retard, i.e. he first told me I'm a retard (this was not a repetition) and then repeated it three times.
|
||||
122. Constant bitrate means a given time unit of the video will always be encoded with (at least approximately) the same number of [bits](bit.md). One second of the video will therefore take the same size no matter how complex or simple the encoded scene is. Advantages are for example being able to estimate size of any video just from its duration alone, easier seeking and rewinding to a random position, or that during streaming over network there will be a constant number of bits transferred per second, which is very predictable and good for many protocols. Disadvantage may be that sometimes space is wasted (we encode a simple scene with more bits than necessary) and that quality of the video won't be constant (scenes for which bits don't suffice will have to have their quality lowered).
|
||||
123. Draw the shit on paper: draw a ball (Earth) and a point above it (ISS), then draw a tangent line from the point to the ball. Then draw a line from the ball center to the ISS and from the ball center to where the tangent line touches that ball (the horizon). Obviously there's a right angle at the tangent line touch point, so we have a right triangle. One side is the Earth radius and the longest side is the radius plus the orbit height. From this we compute the remaining side as *sqrt((6378 + 400)^2 - 6378^2)*, which gives us approx. 2293 km.
|
||||
124. 24 bit RGB is easy: 00ff00. For 565 we want a 16 bit value whose upper and lower 5 bits are zero, with the middle bits being ones, i.e. 0000011111100000 in binary, which is 07e0 in hexadecimal. Similarly for 332 we get 1c.
|
||||
125. yes
|
||||
121. Permutations can be represented in terms of cycles and the lowest common multiple of the cycle lengths is the permutation order, which says "after how many steps we get back to the start". So we are looking for the highest order permutation of length 5. The highest possible order is 6 -- this we get when we have one 3-cycle and one 2-cycle, which gives us LCM(2,3) = 6. So the cycles can be for example (123)(45), which written as before may start as 23154. Indeed, it takes 6 steps to get back to the same permutation: 23154 -> 31245 -> 12354 -> 23145 -> 31254 -> 12345 -> 23154.
|
||||
122. 3: I destroyed 4 computers, so he told me 4 times I'm a retard, i.e. he first told me I'm a retard (this was not a repetition) and then repeated it three times.
|
||||
123. Constant bitrate means a given time unit of the video will always be encoded with (at least approximately) the same number of [bits](bit.md). One second of the video will therefore take the same size no matter how complex or simple the encoded scene is. Advantages are for example being able to estimate size of any video just from its duration alone, easier seeking and rewinding to a random position, or that during streaming over network there will be a constant number of bits transferred per second, which is very predictable and good for many protocols. Disadvantage may be that sometimes space is wasted (we encode a simple scene with more bits than necessary) and that quality of the video won't be constant (scenes for which bits don't suffice will have to have their quality lowered).
|
||||
124. Draw the shit on paper: draw a ball (Earth) and a point above it (ISS), then draw a tangent line from the point to the ball. Then draw a line from the ball center to the ISS and from the ball center to where the tangent line touches that ball (the horizon). Obviously there's a right angle at the tangent line touch point, so we have a right triangle. One side is the Earth radius and the longest side is the radius plus the orbit height. From this we compute the remaining side as *sqrt((6378 + 400)^2 - 6378^2)*, which gives us approx. 2293 km.
|
||||
125. 24 bit RGB is easy: 00ff00. For 565 we want a 16 bit value whose upper and lower 5 bits are zero, with the middle bits being ones, i.e. 0000011111100000 in binary, which is 07e0 in hexadecimal. Similarly for 332 we get 1c.
|
||||
126. yes
|
||||
|
||||
## Other
|
||||
|
||||
|
|
|
@ -56,9 +56,9 @@ Let's demonstrate it on a few examples:
|
|||
|
||||
Precursors to free software may reach as far back in [history](history.md) as we are willing to look. They may include for example ancient [mathematicians](math.md) sharing their equations with each other, engineers sharing plans, people sharing recipes for meals, and influence can possibly also come from the general ideas of [communism](communism.md) (not to be [confused](often_confused.md) with [Marxism](marxism.md)). In 20th century the early digital sharing communities on networks such as [BBS](bbs.md) and [Usenet](usenet.md) worked like free software communities "by default", without really articulating or naming the concept -- they shared software informally without [licenses](license.md) as back then it was believed [copyright](copyright.md) didn't even apply to software -- capitalists haven't yet had enough time to fuck everything up, but that slowly started to change with more commercialization of the brand new field and legal cases that would indeed establish that software was copyrightable.
|
||||
|
||||
Free software, in a form discussed here, was invented by [Richard Stallman](rms.md) in the 1980s. He cites his frustration with a proprietary printer driver as an initial impulse. In 1983 he announced the now already legendary project called [GNU](gnu.md) -- one to implement a completely free as in freedom [operating system](os.md). The announcement described the system as "free", however still more in a sense of "not having to pay for permissions". Additionally in 1985 Stallman established the [Free Software Foundation](fsf.md), a non-profit for promotion and support of free software, and this is when the term *free software* seems to have been clearly distinguished. In late 1980s Stallman wrote [GPL](gpl.md), the major (and now one of the most frequent) free licenses. Other standard free licenses, such as the [MIT](mit.md) or [BSD](bsd.md), also appeared around this time. Before these standard licenses programs had to use custom ones, which was much harder and less legally safe.
|
||||
Free software, in a form discussed here, was invented by [Richard Stallman](rms.md) in the 1980s as a reaction to the corporate rape of computer industry. He cites his frustration with a proprietary Xerox printer driver as an initial impulse. The newly imposed [secrecy](censorship.md) of source code and limitations of legal rights for it strongly violated the [hacker](hacking.md) culture based on free sharing of code -- hackers valued openness and sharing so much that Stallman himself was even refusing to use password on his computer (source: the book *Free as in Freedom*). In 1983 he announced the now already legendary project called [GNU](gnu.md) -- one to implement a completely free as in freedom [operating system](os.md), and later on the GNU Manifesto. The announcement described the system as "free", however still more in a sense of "not having to pay for permissions". Additionally in 1985 Stallman established the [Free Software Foundation](fsf.md), a non-profit for promotion and support of free software, and this is when the term *free software* seems to have been clearly distinguished. In late 1980s Stallman wrote [GPL](gpl.md), the major (and now one of the most frequent) free licenses. Other standard free licenses, such as the [MIT](mit.md) or [BSD](bsd.md), also appeared around this time. Before these standard licenses programs had to use custom ones, which was much harder and less legally safe.
|
||||
|
||||
In early [1990s](90s.md) a new project called [Linux](linux.md) -- an operating system kernel -- joined GNU and as a final piece of the puzzle completed its main goal. From now on it became practically possibly to do one's computing solely with free software.
|
||||
In early [1990s](90s.md) a new project called [Linux](linux.md) -- an operating system [kernel](kernel.md) -- joined GNU and as a final missing part completed its main goal. From now on it became practically possible to do one's computing solely with free software, and this would further be facilitated by the creation of various distributions, notably e.g. [Debian](debian.md). Also during mid 90s the BSD operating systems ([FreeBSD](freebsd.md), [NetBSD](netbsd.md) and [OpenBSD](openbsd.md)) were released under a free license as well, offering another alternative of a free [Unix](unix.md) clone. While personal PCs were taken over by [Windows](windows.md) and [Mac](mac.md) due to aggressive [marketing](marketing.md), practically all Internet servers chose some of the free operating systems and many professionals started to highly prefer them because the proprietary systems were, quite simply put, absolute [garbage](shit.md). Free software proved to objectively better.
|
||||
|
||||
Free software gained enough momentum to become a serious threat to capitalism and so opposition appeared, most notably [Microsoft](microsoft.md), caught red handed with the leak of so called *Halloween documents* in late [1990s](90s.md), in which they discuss strategies for eliminating the threat of free software. Despite this free software couldn't be stopped and grew in popularity, which is apparent from the huge success of [GNU](gnu.md)/[Linux](linux.md) and from the cases when very valuable software, such as the [Doom](doom.md) engine or [Blender](blender.md), got released under free terms.
|
||||
|
||||
|
|
3706
random_page.md
3706
random_page.md
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
|
@ -3,9 +3,9 @@
|
|||
This is an autogenerated article holding stats about this wiki.
|
||||
|
||||
- number of articles: 626
|
||||
- number of commits: 981
|
||||
- total size of all texts in bytes: 5126895
|
||||
- total number of lines of article texts: 37184
|
||||
- number of commits: 982
|
||||
- total size of all texts in bytes: 5136366
|
||||
- total number of lines of article texts: 37499
|
||||
- number of script lines: 324
|
||||
- occurrences of the word "person": 10
|
||||
- occurrences of the word "nigger": 114
|
||||
|
@ -13,7 +13,7 @@ This is an autogenerated article holding stats about this wiki.
|
|||
longest articles:
|
||||
|
||||
- [c_tutorial](c_tutorial.md): 128K
|
||||
- [exercises](exercises.md): 120K
|
||||
- [exercises](exercises.md): 124K
|
||||
- [chess](chess.md): 104K
|
||||
- [how_to](how_to.md): 80K
|
||||
- [capitalism](capitalism.md): 76K
|
||||
|
@ -35,60 +35,69 @@ longest articles:
|
|||
|
||||
top 50 5+ letter words:
|
||||
|
||||
- which (2826)
|
||||
- there (2216)
|
||||
- people (2176)
|
||||
- example (1792)
|
||||
- other (1602)
|
||||
- which (2834)
|
||||
- there (2217)
|
||||
- people (2175)
|
||||
- example (1795)
|
||||
- other (1603)
|
||||
- about (1424)
|
||||
- number (1334)
|
||||
- software (1280)
|
||||
- because (1176)
|
||||
- number (1336)
|
||||
- software (1285)
|
||||
- because (1177)
|
||||
- their (1105)
|
||||
- would (1074)
|
||||
- something (1056)
|
||||
- program (1056)
|
||||
- would (1076)
|
||||
- program (1060)
|
||||
- something (1057)
|
||||
- being (1034)
|
||||
- things (962)
|
||||
- called (942)
|
||||
- called (943)
|
||||
- language (938)
|
||||
- without (867)
|
||||
- function (864)
|
||||
- simple (863)
|
||||
- computer (844)
|
||||
- numbers (834)
|
||||
- different (798)
|
||||
- these (785)
|
||||
- however (781)
|
||||
- numbers (835)
|
||||
- different (799)
|
||||
- these (787)
|
||||
- however (782)
|
||||
- programming (771)
|
||||
- world (760)
|
||||
- system (746)
|
||||
- system (747)
|
||||
- should (725)
|
||||
- doesn (716)
|
||||
- still (712)
|
||||
- still (713)
|
||||
- games (693)
|
||||
- while (674)
|
||||
- while (679)
|
||||
- society (673)
|
||||
- drummyfish (673)
|
||||
- society (672)
|
||||
- point (669)
|
||||
- point (672)
|
||||
- possible (657)
|
||||
- simply (656)
|
||||
- possible (655)
|
||||
- probably (648)
|
||||
- using (644)
|
||||
- probably (649)
|
||||
- using (645)
|
||||
- always (634)
|
||||
- course (611)
|
||||
- course (612)
|
||||
- similar (605)
|
||||
- actually (594)
|
||||
- someone (588)
|
||||
- https (587)
|
||||
- though (582)
|
||||
- basically (572)
|
||||
- really (570)
|
||||
- really (571)
|
||||
- first (556)
|
||||
|
||||
latest changes:
|
||||
|
||||
```
|
||||
Date: Wed Mar 5 21:32:37 2025 +0100
|
||||
cyber.md
|
||||
dodleston.md
|
||||
exercises.md
|
||||
free_software.md
|
||||
random_page.md
|
||||
shader.md
|
||||
wiki_pages.md
|
||||
wiki_stats.md
|
||||
Date: Tue Mar 4 21:04:02 2025 +0100
|
||||
bloat.md
|
||||
c.md
|
||||
|
@ -113,15 +122,6 @@ Date: Sun Mar 2 21:01:56 2025 +0100
|
|||
productivity_cult.md
|
||||
random_page.md
|
||||
unix.md
|
||||
wiki_pages.md
|
||||
wiki_stats.md
|
||||
Date: Sat Mar 1 19:31:47 2025 +0100
|
||||
3d_rendering.md
|
||||
bitreich.md
|
||||
chess.md
|
||||
compression.md
|
||||
faq.md
|
||||
go.md
|
||||
```
|
||||
|
||||
most wanted pages:
|
||||
|
@ -160,14 +160,14 @@ most popular and lonely pages:
|
|||
- [modern](modern.md) (122)
|
||||
- [minimalism](minimalism.md) (119)
|
||||
- [censorship](censorship.md) (116)
|
||||
- [computer](computer.md) (113)
|
||||
- [computer](computer.md) (115)
|
||||
- [kiss](kiss.md) (111)
|
||||
- [programming](programming.md) (109)
|
||||
- [fun](fun.md) (106)
|
||||
- [math](math.md) (105)
|
||||
- [fun](fun.md) (105)
|
||||
- [linux](linux.md) (103)
|
||||
- [gnu](gnu.md) (103)
|
||||
- [shit](shit.md) (101)
|
||||
- [linux](linux.md) (104)
|
||||
- [gnu](gnu.md) (104)
|
||||
- [shit](shit.md) (102)
|
||||
- [woman](woman.md) (99)
|
||||
- [corporation](corporation.md) (96)
|
||||
- [bullshit](bullshit.md) (96)
|
||||
|
|
Loading…
Reference in a new issue