diff --git a/articles/bloat.md b/articles/bloat.md index 4afc38d..3560ed0 100644 --- a/articles/bloat.md +++ b/articles/bloat.md @@ -6,13 +6,13 @@ This article is more about bloat in the software sense, but it could also be ext - Eye candy (animations, etc.) - Useless colors (as opposed to meaningful colors carrying a semantic value) - Animations (waste of CPU power) -- Monolithic programs (as opposed to the [Unix philosophy](unix_philosophy.html)) -- [Frameworks](frameworks.html) -- [OOP (object oriented programming)](oop.html) -- [C++](cpp.html) -- [JavaScript](javascript.html) -- [Rust](rust.html) +- Monolithic programs (as opposed to the [Unix philosophy](unix_philosophy.md)) +- [Frameworks](frameworks.md) +- [OOP (object oriented programming)](oop.md) +- [C++](cpp.md) +- [JavaScript](javascript.md) +- [Rust](rust.md) - ... ## See also -- [Minimalism](minimalism.html) +- [Minimalism](minimalism.md) diff --git a/articles/bsd.md b/articles/bsd.md index 0325ef3..3091e1a 100644 --- a/articles/bsd.md +++ b/articles/bsd.md @@ -1,7 +1,7 @@ # BSD BSD, standing for **B**erkeley **S**oftware **D**istribution, is a family of libre (BSD license) Unix-like operating systems. -The BSDs are a direct descendant of the original Unix operating system, unlike [Linux](linux.html) which could +The BSDs are a direct descendant of the original Unix operating system, unlike [Linux](linux.md) which could be considered as a "clean room" implementation of Unix. Compared to Linux, BSDs have managed to keep the bloat in check and a reasonable codebase. @@ -14,5 +14,5 @@ Compared to Linux, BSDs have managed to keep the bloat in check and a reasonable - [OpenBSD](https://www.openbsd.org/): quite hysterical with "security features", but quite functional as its contributors actually daily drive it. ## See Also -- [Linux](linux.html) -- [Unix](unix.html) +- [Linux](linux.md) +- [Unix](unix.md) diff --git a/articles/c.md b/articles/c.md index 1c48985..ac41cbf 100644 --- a/articles/c.md +++ b/articles/c.md @@ -10,7 +10,7 @@ an abstracts model", ignoring the fact that C being so influential that any CPU (therefore a CPU made to efficiently execute C, incidentally or not). Additionally, it is quite unforgiving and does not handhold the programmer at all, in part this is good since it forces to actually think what one is doing, unlike in "modern" languages. -C was created in 1973 by Dennis Ritchie, then working in the [Unix](unix.html) operating system, which up to that point was +C was created in 1973 by Dennis Ritchie, then working in the [Unix](unix.md) operating system, which up to that point was exclusively written in PDP-11 assembly (thus non portable) as a programming language suitable for systems programming. The name "C" comes from the fact that C is a successor of the earlier B programming language (made by Ritchie and Ken Thompson) @@ -23,7 +23,7 @@ In 1978 the first edition of *The C Programming Language* was released, describi This version had slight syntax differences, one of them being a different function parameter syntax and extensive use of the explicit `int` type. -In 1979 C was defiled by Bjarne Stroustrup and turned into the abomination nowadays known as [C++](cpp.html). +In 1979 C was defiled by Bjarne Stroustrup and turned into the abomination nowadays known as [C++](cpp.md). In 1989 the first standardized version of C was released, C89 also known as *ANSI C*, a standard that remains relevant today, being considered as a baseline for maximum portable C code. @@ -34,15 +34,15 @@ as an extension. Also adds C++ style `//` comments, the `stdint.h` (fixed intege Currently there are multiple independent compilers (non exhaustive list): - GCC (GNU compiler collection) -- Clang: based in [LLVM](llvm.html). -- [TCC](tcc.html) (Tiny C Compiler): by Fabrice Bellard, a small compiler with fast compile times, implements modern C standards. +- Clang: based in [LLVM](llvm.md). +- [TCC](tcc.md) (Tiny C Compiler): by Fabrice Bellard, a small compiler with fast compile times, implements modern C standards. - [chibicc](https://github.com/rui314/chibicc): "toy" compiler by Rui Ueyama. - [SubC](https://www.t3x.org/reload/index.html): educational compiler by Nils M Holm, public domain. -- [cproc](https://sr.ht/~mcf/cproc/): uses the [QBE](qbe.html) backend. +- [cproc](https://sr.ht/~mcf/cproc/): uses the [QBE](qbe.md) backend. - [pcc](https://web.archive.org/web/20231212090621/http://pcc.ludd.ltu.se/) (Portable C Compiler): classic portable compiler from the Unix days, successor of Ritchie's C compiler. - [OpenWatcom](https://openwatcom.org/): a C compiler from the DOS days, proprietary. -- MSVC: proprietary compiler from [Micro$oft](microsoft.html), notable for being stuck in ANSI C for decades. +- MSVC: proprietary compiler from [Micro$oft](microsoft.md), notable for being stuck in ANSI C for decades. ## Examples ### Hello world @@ -97,5 +97,5 @@ main(int argc, char **argv) - *The C Programming Language* by Brian Kernighan and Dennis Ritchie, covers the ANSI C version. ## See also -- [C tutorial](c_tutorial.html) -- [Pointer](pointer.html) +- [C tutorial](c_tutorial.md) +- [Pointer](pointer.md) diff --git a/articles/cpp.md b/articles/cpp.md index 741b72f..f49abae 100644 --- a/articles/cpp.md +++ b/articles/cpp.md @@ -1,8 +1,8 @@ # C++ -C++ was created in a in 1979 as a "C with Classes" ([Simula](simula.html) kind of OOP) by Bjarne Stroustrup. Formally +C++ was created in a in 1979 as a "C with Classes" ([Simula](simula.md) kind of OOP) by Bjarne Stroustrup. Formally released in 1985, it has grown out of control since then. -A bloated programming language, one of its main features aside from [OOP](oop.html) is the STL (standard template library) implementing basic generic +A bloated programming language, one of its main features aside from [OOP](oop.md) is the STL (standard template library) implementing basic generic data types, arrays, hash tables, etc. Famous for producing almost unintelligible error messages, due to extensive use of templates, which add generic programming capabilities (but in a crippled and slow way) and also slow down compilation, since C++ still uses C headers, even though C++20 introduced modules, almost no compiler at the time of writing this have implemented them properly (or even at all). diff --git a/articles/drummyfish.md b/articles/drummyfish.md index 0d430a5..ad5fd3f 100644 --- a/articles/drummyfish.md +++ b/articles/drummyfish.md @@ -5,7 +5,7 @@ Drummyfish (Miloslav Číž) is a Moravian programmer, anarchopacifist, free sof - Anarch - Licar - [Less Retarded Wiki](https://www.tastyfish.cz/lrs/main.html) -- [comun](comun.html) +- [comun](comun.md) - raycastlib - ... diff --git a/articles/free_software.md b/articles/free_software.md index 4f5f5a6..cf42b7d 100644 --- a/articles/free_software.md +++ b/articles/free_software.md @@ -7,7 +7,7 @@ A common mistake is conflating the "free" as in no price, when it actually refer # Free Software Movement The Free Software Movement was founded by Richard Matthew Stallman (RMS) in 1983, along with the GNU operating system project, which -initially consisted of free versions of common UNIX utilities, including a compiler, [GCC](gcc.html). +initially consisted of free versions of common UNIX utilities, including a compiler, [GCC](gcc.md). For software to be considered free software it must grant the following rights (unconditionally and irrevocable) also known as the *Four essential freedoms*: @@ -20,5 +20,5 @@ The first freedom is absolute, no software calling itself "free" can restrict it of its authors (because it doesn't imply endorsement of such actions). The freedom 1 implies having complete and unrestricted access to the source code. -Free software prevents the use of abusive practices common in the world of proprietary and [open $source](open_source.html) +Free software prevents the use of abusive practices common in the world of proprietary and [open $source](open_source.md) software, by allowing anyone to study the source code and promoting ethics. diff --git a/articles/golang.md b/articles/golang.md index b4adfe1..8344769 100644 --- a/articles/golang.md +++ b/articles/golang.md @@ -1,5 +1,5 @@ # Go -Go (also Golang) is a compiled programming language created by Rob Pike, Ken Thompson and others at [Google](google.html), released in 2009. +Go (also Golang) is a compiled programming language created by Rob Pike, Ken Thompson and others at [Google](google.md), released in 2009. In contrast with other "modern" languages (such as Rust, etc.) Go is relatively simple, with the spec being about 130 pages. Go generated executables are bloated (>1 MiB), since everything is statically linked. Using flags @@ -7,11 +7,11 @@ like `-ldflags "-s -w"` can aid with the executable size by stripping debug symb is almost impossible with the default compiler. However, alternative implementations such as TinyGo compile to small executables, mainly targeted for embedded use. -Furthermore, Go's runtime is quite heavy by having a [garbage collector](gc.html) and a weird stack layout for +Furthermore, Go's runtime is quite heavy by having a [garbage collector](gc.md) and a weird stack layout for supporting the builtin concurrency system, goroutines, which makes C interop slow and cumbersome compared to other languages. -Go being a Google project, depends on it financially, also it has a [code of censorship](coc.html). +Go being a Google project, depends on it financially, also it has a [code of censorship](coc.md). ## Compilers Due to Go having a formal spec (and being simple enough), Go has more than one compiler: diff --git a/articles/gopher.md b/articles/gopher.md index 65ea8a5..795ddd0 100644 --- a/articles/gopher.md +++ b/articles/gopher.md @@ -1,5 +1,5 @@ # Gopher -Gopher is an hypertext protocol, similar to [HTTP](http.html) but far more simpler and [KISS](kiss.html). +Gopher is an hypertext protocol, similar to [HTTP](http.md) but far more simpler and [KISS](kiss.md). Pages using the Gopher protocol are known as "Gopherholes". As of writing this, there are about 200~300 active gopherholes. diff --git a/articles/lua.md b/articles/lua.md index 2dee494..f7fd615 100644 --- a/articles/lua.md +++ b/articles/lua.md @@ -1,13 +1,13 @@ # Lua [Lua](https://lua.org) is a libre, scripting programming language created in 1993 by the Brazilian programmer Roberto Ierusalimschy. -Lua is notable for its efficiency (faster than [Python](python.html)), minimal features, extensibility and a small, +Lua is notable for its efficiency (faster than [Python](python.md)), minimal features, extensibility and a small, non bloated implementation, making it a excellent choice for embedding into programs. Lua has only has 5 datatypes: numbers, tables, functions, strings and `nil`. Tables are specially important in Lua, implementing arrays and hash tables in a single type and enabling metaprogramming though the use of metamethods and metatables. -The main reference implementation is written in [ANSI C](c.html) (about 32000 LOC) and uses a register-based bytecode virtual machine for execution. +The main reference implementation is written in [ANSI C](c.md) (about 32000 LOC) and uses a register-based bytecode virtual machine for execution. Another notable implementation is [LuaJIT](https://luajit.org), which speeds up execution speed by JIT compiling the Lua code. ## Examples diff --git a/articles/main_page.md b/articles/main_page.md index 93644b0..831c8cd 100644 --- a/articles/main_page.md +++ b/articles/main_page.md @@ -1,5 +1,5 @@ # Welcome! -Welcome to this wiki (I'm yet to give it a name). Inspired by [drummyfish's](drummyfish.html) +Welcome to this wiki (I'm yet to give it a name). Inspired by [drummyfish's](drummyfish.md) [LRS wiki](https://www.tastyfish.cz/lrs/main.html). Mostly a dump of what I know. Everything on this wiki is released to the public domain ([CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/) license). diff --git a/articles/ohms_law.md b/articles/ohms_law.md index 67ae1a4..b69fbfc 100644 --- a/articles/ohms_law.md +++ b/articles/ohms_law.md @@ -19,4 +19,4 @@ Graphical mnemonic: ``` ## See Also -- [Watt's Law](watts_law.html) +- [Watt's Law](watts_law.md) diff --git a/articles/open_source.md b/articles/open_source.md index 9f3eb1b..22161fb 100644 --- a/articles/open_source.md +++ b/articles/open_source.md @@ -1,7 +1,7 @@ # Open $ource *Not to be confused with Free Software* -Open Source (also open $ource) is a neoliberal and capitalist perversion of the [Free Software Movement](free_software.html) +Open Source (also open $ource) is a neoliberal and capitalist perversion of the [Free Software Movement](free_software.md) that abandons the main principles of Free Software: freedom and ethics, in exchange of maximum profit and exploit of programmers and users. Megacorporations love "open source" since it gives them positive PR: "see our source code is OPEN!" but due to the lack of ethics, this diff --git a/articles/pascal.md b/articles/pascal.md index c4ae227..1ac05ea 100644 --- a/articles/pascal.md +++ b/articles/pascal.md @@ -1,5 +1,5 @@ # Pascal -Pascal is a procedural programming language created by [Niklaus Wirth](niklaus_wirth.html) in 1970. +Pascal is a procedural programming language created by [Niklaus Wirth](niklaus_wirth.md) in 1970. Pascal was a popular choice for microcomputers in the 70's and 80's, even more popular than C initially (C was still quite an UNIX-only language) due to its simple design, which allowed fast simple single-pass compilers. @@ -8,7 +8,7 @@ due to its simple design, which allowed fast simple single-pass compilers. - [FPC](https://www.freepascal.org/) (Free Pascal Compiler): currently the most popular Pascal compiler with wide support for different OSes and architectures, libre software. - Turbo Pascal: old compiler for DOS systems, proprietary -- Delphi: proprietary, adds [OOP](oop.html) bloat +- Delphi: proprietary, adds [OOP](oop.md) bloat ## Examples ### Hello world @@ -72,4 +72,4 @@ end. flaws described in the article has been fixed by modern Pascal compilers. ## See also -- [Oberon](oberon.html) +- [Oberon](oberon.md) diff --git a/articles/programming_language.md b/articles/programming_language.md index 924fbb7..8b190d0 100644 --- a/articles/programming_language.md +++ b/articles/programming_language.md @@ -8,17 +8,17 @@ In some ways, assembly can be considered a (low-level) programming language, sin ## List of acceptable and non-acceptable (harmful) languages - Assembly: yes, but non portable. -- [C](c.html): yes, the first and natural choice for writing programs. The Unix language. -- [Lua](lua.html): yes, good for embedding and quick scripts. -- [Lisp](lisp.html): yes, flexible and relatively fast, prefer Scheme over the more bloated Common Lisp (still better than C++ however). +- [C](c.md): yes, the first and natural choice for writing programs. The Unix language. +- [Lua](lua.md): yes, good for embedding and quick scripts. +- [Lisp](lisp.md): yes, flexible and relatively fast, prefer Scheme over the more bloated Common Lisp (still better than C++ however). - Forth: yes, niche, but it is a nice exercise on minimalism. - Pascal (no OOP): yes, old school and quite verbose, but small and fast compared to, say C++ or Rust; comparable to C in terms of features. -- (POSIX) [Shell Script](shell_script.html): yes, has its quirks. +- (POSIX) [Shell Script](shell_script.md): yes, has its quirks. - Perl: acceptable, could be used as a replacement for more complex shell scripts, since it is commonly installed in most modern unixes. - Go: acceptable but beware of the big executable sizes. -- PHP (no OOP): acceptable, if you need interactive web pages but stay away from [frameworks](frameworks.html). +- PHP (no OOP): acceptable, if you need interactive web pages but stay away from [frameworks](frameworks.md). - Python: Slow and bloated, avoid - C++: No. - JavaScript: No. diff --git a/articles/rust.md b/articles/rust.md index e4c68ca..0595883 100644 --- a/articles/rust.md +++ b/articles/rust.md @@ -1,6 +1,6 @@ # Rust -Rust is a [bloated](bloat.html) and [open $ource](open_source.html) programming language. It was created out of frustration that -[C++](cpp.html) wasn't bloated and shitty enough. +Rust is a [bloated](bloat.md) and [open $ource](open_source.md) programming language. It was created out of frustration that +[C++](cpp.md) wasn't bloated and shitty enough. The main "feature" of Rust is the so called borrow checker which will reject any code that considers as "unsafe", even rejecting completely "safe" and valid code that Rust users have to resort to workarounds such as heap allocating everything and wrapping objects under a matroska @@ -21,10 +21,10 @@ Due to its extreme complexity and lack of formal specification, theres only the Go to your average non trivial rust project `Cargo.lock` file and when you find one that is less than 100 lines long you win. ## Less harmful alternatives -- [C](c.html) -- [Lisp](lisp.html) -- Even [Go](golang.html) is preferable. -- Learning how to use [pointers](pointer.html) properly. +- [C](c.md) +- [Lisp](lisp.md) +- Even [Go](golang.md) is preferable. +- Learning how to use [pointers](pointer.md) properly. ## See also - [drummyfish's take on Rust](https://www.tastyfish.cz/lrs/rust.html) diff --git a/articles/systemd.md b/articles/systemd.md index 73ba9c8..bd79b8e 100644 --- a/articles/systemd.md +++ b/articles/systemd.md @@ -1,7 +1,7 @@ # SystemD *This article is part of the bloat and vomit inducing series* -SystemD (also known as SoystemD) is a bloated and predatory init system for [Linux](linux.html) made by [Micro$oft](microsoft.html) +SystemD (also known as SoystemD) is a bloated and predatory init system for [Linux](linux.md) made by [Micro$oft](microsoft.md) employee Lennart Poettering (then working for RedHat) as a mean of bringing the *Embrace, Extend and Extinguish* and update culture movements into Linux. A notable backdoor (thwarted) attempt in 2024 on liblzma was facilitated by a completely redundant SystemD dependency added by Debian maintainers to OpenSSH. diff --git a/articles/tcc.md b/articles/tcc.md index 6aac11b..f0e3766 100644 --- a/articles/tcc.md +++ b/articles/tcc.md @@ -1,5 +1,5 @@ # TCC (Tiny C Compiler) -[TCC](https://www.bellard.org/tcc/) is a [C](c.html) [compiler](compiler.html) written by Fabrice Bellard, +[TCC](https://www.bellard.org/tcc/) is a [C](c.md) [compiler](compiler.md) written by Fabrice Bellard, notable for having a simple implementation (< 40k LOC) and very fast compile times compared to more heavy duty compilers such as GCC or Clang. Originally it only supported the x86 (and x86-64) architecture, but ARM and RISC-V codegen have been implemented.