rewrite articles urls
Probably I will never have a VPS so this wiki will live in a git repository only. To make the article urls work properly so the wiki can be browsed, I removed the leading `/`. For the record, this is what I used (sed could have done the job too): ``` find articles -type f -name '*.md' -exec \ perl -pi -e 's/\[([^]]+)\]\(\/([a-zA-Z0-9\/_.-]+)\)/\[\1\]\(\2\)/g' {} \; ````
This commit is contained in:
parent
fb50cd7f68
commit
4b17ce4782
18 changed files with 50 additions and 50 deletions
|
@ -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](/articles/unix_philosophy.html))
|
||||
- [Frameworks](/articles/frameworks.html)
|
||||
- [OOP (object oriented programming)](/articles/oop.html)
|
||||
- [C++](/articles/cpp.html)
|
||||
- [JavaScript](/articles/javascript.html)
|
||||
- [Rust](/articles/rust.html)
|
||||
- Monolithic programs (as opposed to the [Unix philosophy](articles/unix_philosophy.html))
|
||||
- [Frameworks](articles/frameworks.html)
|
||||
- [OOP (object oriented programming)](articles/oop.html)
|
||||
- [C++](articles/cpp.html)
|
||||
- [JavaScript](articles/javascript.html)
|
||||
- [Rust](articles/rust.html)
|
||||
- ...
|
||||
|
||||
## See also
|
||||
- [Minimalism](/articles/minimalism.html)
|
||||
- [Minimalism](articles/minimalism.html)
|
||||
|
|
|
@ -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](/articles/linux.html) which could
|
||||
The BSDs are a direct descendant of the original Unix operating system, unlike [Linux](articles/linux.html) 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](/articles/linux.html)
|
||||
- [Unix](/articles/unix.html)
|
||||
- [Linux](articles/linux.html)
|
||||
- [Unix](articles/unix.html)
|
||||
|
|
|
@ -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](/articles/unix.html) operating system, which up to that point was
|
||||
C was created in 1973 by Dennis Ritchie, then working in the [Unix](articles/unix.html) 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++](/articles/cpp.html).
|
||||
In 1979 C was defiled by Bjarne Stroustrup and turned into the abomination nowadays known as [C++](articles/cpp.html).
|
||||
|
||||
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](/articles/llvm.html).
|
||||
- [TCC](/articles/tcc.html) (Tiny C Compiler): by Fabrice Bellard, a small compiler with fast compile times, implements modern C standards.
|
||||
- Clang: based in [LLVM](articles/llvm.html).
|
||||
- [TCC](articles/tcc.html) (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](/articles/qbe.html) backend.
|
||||
- [cproc](https://sr.ht/~mcf/cproc/): uses the [QBE](articles/qbe.html) 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](/articles/microsoft.html), notable for being stuck in ANSI C for decades.
|
||||
- MSVC: proprietary compiler from [Micro$oft](articles/microsoft.html), 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](/articles/c_tutorial.html)
|
||||
- [Pointer](/articles/pointer.html)
|
||||
- [C tutorial](articles/c_tutorial.html)
|
||||
- [Pointer](articles/pointer.html)
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# C++
|
||||
C++ was created in a in 1979 as a "C with Classes" ([Simula](/articles/simula.html) kind of OOP) by Bjarne Stroustrup. Formally
|
||||
C++ was created in a in 1979 as a "C with Classes" ([Simula](articles/simula.html) 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](/articles/oop.html) is the STL (standard template library) implementing basic generic
|
||||
A bloated programming language, one of its main features aside from [OOP](articles/oop.html) 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).
|
||||
|
|
|
@ -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](/articles/comun.html)
|
||||
- [comun](articles/comun.html)
|
||||
- raycastlib
|
||||
- ...
|
||||
|
||||
|
|
|
@ -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](/articles/gcc.html).
|
||||
initially consisted of free versions of common UNIX utilities, including a compiler, [GCC](articles/gcc.html).
|
||||
|
||||
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](/articles/open_source.html)
|
||||
Free software prevents the use of abusive practices common in the world of proprietary and [open $source](articles/open_source.html)
|
||||
software, by allowing anyone to study the source code and promoting ethics.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Go
|
||||
Go (also Golang) is a compiled programming language created by Rob Pike, Ken Thompson and others at [Google](/articles/google.html), released in 2009.
|
||||
Go (also Golang) is a compiled programming language created by Rob Pike, Ken Thompson and others at [Google](articles/google.html), 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](/articles/gc.html) and a weird stack layout for
|
||||
Furthermore, Go's runtime is quite heavy by having a [garbage collector](articles/gc.html) 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](/articles/coc.html).
|
||||
Go being a Google project, depends on it financially, also it has a [code of censorship](articles/coc.html).
|
||||
|
||||
## Compilers
|
||||
Due to Go having a formal spec (and being simple enough), Go has more than one compiler:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Gopher
|
||||
Gopher is an hypertext protocol, similar to [HTTP](/articles/http.html) but far more simpler and [KISS](/articles/kiss.html).
|
||||
Gopher is an hypertext protocol, similar to [HTTP](articles/http.html) but far more simpler and [KISS](articles/kiss.html).
|
||||
|
||||
Pages using the Gopher protocol are known as "Gopherholes". As of writing this, there are about 200~300 active gopherholes.
|
||||
|
||||
|
@ -14,7 +14,7 @@ printf '\n' | nc 'khzae.net' 70
|
|||
"Modern" web browsers are so advanced that can't bother implementing such a trivial protocol, so if you're using a web browser you
|
||||
can use a proxy like <https://gopher.floodgap.com/gopher/> that works over HTTP.
|
||||
But for the true experience, you want a text based browser with native support for Gopher such as [Lynx](https://lynx.invisible-island.net/)
|
||||
or [Bitreich's](/articles/bitreich.md) [sacc](gopher://bitreich.org/1/scm/sacc) browser.
|
||||
or [Bitreich's](articles/bitreich.md) [sacc](gopher://bitreich.org/1/scm/sacc) browser.
|
||||
|
||||
## Notable Gopherholes
|
||||
- [Bitreich](gopher://bitreich.org/1)
|
||||
|
|
|
@ -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](/articles/python.html)), minimal features, extensibility and a small,
|
||||
Lua is notable for its efficiency (faster than [Python](articles/python.html)), 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](/articles/c.html) (about 32000 LOC) and uses a register-based bytecode virtual machine for execution.
|
||||
The main reference implementation is written in [ANSI C](articles/c.html) (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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Welcome!
|
||||
Welcome to this wiki (I'm yet to give it a name). Inspired by [drummyfish's](/articles/drummyfish.html)
|
||||
Welcome to this wiki (I'm yet to give it a name). Inspired by [drummyfish's](articles/drummyfish.html)
|
||||
[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).
|
||||
|
|
|
@ -19,4 +19,4 @@ Graphical mnemonic:
|
|||
```
|
||||
|
||||
## See Also
|
||||
- [Watt's Law](/articles/watts_law.html)
|
||||
- [Watt's Law](articles/watts_law.html)
|
||||
|
|
|
@ -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](/articles/free_software.html)
|
||||
Open Source (also open $ource) is a neoliberal and capitalist perversion of the [Free Software Movement](articles/free_software.html)
|
||||
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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Pascal
|
||||
Pascal is a procedural programming language created by [Niklaus Wirth](/articles/niklaus_wirth.html) in 1970.
|
||||
Pascal is a procedural programming language created by [Niklaus Wirth](articles/niklaus_wirth.html) 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](/articles/oop.html) bloat
|
||||
- Delphi: proprietary, adds [OOP](articles/oop.html) bloat
|
||||
|
||||
## Examples
|
||||
### Hello world
|
||||
|
@ -72,4 +72,4 @@ end.
|
|||
flaws described in the article has been fixed by modern Pascal compilers. <https://www.lysator.liu.se/c/bwk-on-pascal.html>
|
||||
|
||||
## See also
|
||||
- [Oberon](/articles/oberon.html)
|
||||
- [Oberon](articles/oberon.html)
|
||||
|
|
|
@ -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](/articles/c.html): yes, the first and natural choice for writing programs. The Unix language.
|
||||
- [Lua](/articles/lua.html): yes, good for embedding and quick scripts.
|
||||
- [Lisp](/articles/lisp.html): yes, flexible and relatively fast, prefer Scheme over the more bloated Common Lisp (still better than C++ however).
|
||||
- [C](articles/c.html): yes, the first and natural choice for writing programs. The Unix language.
|
||||
- [Lua](articles/lua.html): yes, good for embedding and quick scripts.
|
||||
- [Lisp](articles/lisp.html): 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](/articles/shell_script.html): yes, has its quirks.
|
||||
- (POSIX) [Shell Script](articles/shell_script.html): 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](/articles/frameworks.html).
|
||||
- PHP (no OOP): acceptable, if you need interactive web pages but stay away from [frameworks](articles/frameworks.html).
|
||||
- Python: Slow and bloated, avoid
|
||||
- C++: No.
|
||||
- JavaScript: No.
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
# QBE
|
||||
[QBE](https://c9x.me/compile/) is an optimizing compiler backend with a simple implementation in C, compared to
|
||||
huge and slower backends such as [LLVM](/articles/llvm.md). Supports codegen for the x86, ARM and RISC-V architectures.
|
||||
huge and slower backends such as [LLVM](articles/llvm.md). Supports codegen for the x86, ARM and RISC-V architectures.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Rust
|
||||
Rust is a [bloated](/articles/bloat.html) and [open $ource](/articles/open_source.html) programming language. It was created out of frustration that
|
||||
[C++](/articles/cpp.html) wasn't bloated and shitty enough.
|
||||
Rust is a [bloated](articles/bloat.html) and [open $ource](articles/open_source.html) programming language. It was created out of frustration that
|
||||
[C++](articles/cpp.html) 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](/articles/c.html)
|
||||
- [Lisp](/articles/lisp.html)
|
||||
- Even [Go](/articles/golang.html) is preferable.
|
||||
- Learning how to use [pointers](/articles/pointer.html) properly.
|
||||
- [C](articles/c.html)
|
||||
- [Lisp](articles/lisp.html)
|
||||
- Even [Go](articles/golang.html) is preferable.
|
||||
- Learning how to use [pointers](articles/pointer.html) properly.
|
||||
|
||||
## See also
|
||||
- [drummyfish's take on Rust](https://www.tastyfish.cz/lrs/rust.html)
|
||||
|
|
|
@ -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](/articles/linux.html) made by [Micro$oft](/articles/microsoft.html)
|
||||
SystemD (also known as SoystemD) is a bloated and predatory init system for [Linux](articles/linux.html) made by [Micro$oft](articles/microsoft.html)
|
||||
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.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# TCC (Tiny C Compiler)
|
||||
[TCC](https://www.bellard.org/tcc/) is a [C](/articles/c.html) [compiler](/compiler.html) written by Fabrice Bellard,
|
||||
[TCC](https://www.bellard.org/tcc/) is a [C](articles/c.html) [compiler](compiler.html) 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.
|
||||
|
|
Loading…
Add table
Reference in a new issue