Add data structs

This commit is contained in:
Miloslav Ciz 2022-03-28 15:31:05 +02:00
parent 6b3711ca45
commit a7b5d16cd3
3 changed files with 48 additions and 2 deletions

View file

@ -3,3 +3,5 @@
*"BTW I use Arch"* *"BTW I use Arch"*
Arch Linux is a [rolling-release](rolling_release.md) [Linux](linux.md) distribution for the "tech-savvy", mostly fedora-wearing weirdos. Arch Linux is a [rolling-release](rolling_release.md) [Linux](linux.md) distribution for the "tech-savvy", mostly fedora-wearing weirdos.
Arch is [shit](shit.md) at least for two reasons: it has proprietary packages (such as [discord](discord.md)) and it uses [systemd](systemd.md). [Artix](artix.md) Linux is a fork of Arch without systemd.

32
data_structure.md Normal file
View file

@ -0,0 +1,32 @@
# Data Structure
Data structure refers to a any specific way in which [data](data.md) is organized in computer memory. A specific data structure describes such things as order, relationships (interconnection, hierarchy, ...), formats and [types](data_type.md) of parts of the data. [Programming](programming.md) is sometimes seen as consisting mainly of two things: design of [algorithms](algorithm.md) and data structures these algorithm work with.
As a programmer dealing with a specific problem you oftentimes have a choice of multiple data structures -- choosing the right one is essential for performance and efficiency of your program. As with everything, each data structure has advantages and also its downsides; some are faster, some take less memory etc. For example for a searchable database of text string we can be choosing between a [binary tree](binary_tree.md) and a [hash table](hash_table.md); hash table offers theoretically much faster search, but binary trees may be more memory efficient and offer many other efficient operations like range search and sorting (which hash tables can do but very inefficiently).
## Specific Data Structures
These are just some common ones:
- [array](array.md)
- [binary_tree](binary_tree.md)
- [bitfield](bitfield.md)
- [blockchain](blockchain.md)
- [B+ tree](bplus_tree.md)
- [circular buffer](circular_bugger.md)
- [directed acyclic graph](dac.md)
- [graph](graph.md)
- [hash table](hash_table.md)
- [heap](heap.md)
- [linked list](linked_list.md)
- [N-ary tree](nary_tree.md)
- [record](record.md)
- [stack](stack.md)
- [string](string.md)
- [tree](tree.md)
- [queue](queue.md)
## See Also
- [data](data.md)
- [data type](data_type.md)

16
faq.md
View file

@ -1,13 +1,13 @@
# Frequently Asked Questions # Frequently Asked Questions
{ answers by ~drummyfish }
### How does LRS differ from [suckless](suckless.md), [KISS](kiss.md) and similar types of software? ### How does LRS differ from [suckless](suckless.md), [KISS](kiss.md) and similar types of software?
These sets largely overlap and LRS is often just a slightly different angle of looking at the same things. I have invented LRS as my own take on suckless software -- as I cannot speak on behalf of the whole suckless community, I have created my own "fork" and simply set my own definitions without worrying about misinterpreting and misquoting someone else. However, LRS does have its specific ideas and areas of focus such as its stress on public domain and legal safety, altruism, anti-capitalism, accepting software such as games, NOT subscribing to the [productivity cult](productivity_cult.md), seeing [privacy](privacy.md) as ultimately undesirable etc. These sets largely overlap and LRS is often just a slightly different angle of looking at the same things. I have invented LRS as my own take on suckless software -- as I cannot speak on behalf of the whole suckless community, I have created my own "fork" and simply set my own definitions without worrying about misinterpreting and misquoting someone else. However, LRS does have its specific ideas and areas of focus such as its stress on public domain and legal safety, altruism, anti-capitalism, accepting software such as games, NOT subscribing to the [productivity cult](productivity_cult.md), seeing [privacy](privacy.md) as ultimately undesirable etc.
### Why this obsession with extreme simplicity? Is it because you're too stupid to understand complex stuff? ### Why this obsession with extreme simplicity? Is it because you're too stupid to understand complex stuff?
{ answer by ~drummyfish }
I used to be the mainstream, complexity embracing programmer. I am in no way saying I'm a genius but I've put a lot of energy into studying computer science full time for many years so I believe I can say I have some understanding of the "complex" stuff. I speak from own experience and also on behalf of others who shared their experience with me that the appreciation of simplicity and realization of its necessity comes after many years of dealing with the complex and deep insight into the field and into the complex connections of that field to society. I used to be the mainstream, complexity embracing programmer. I am in no way saying I'm a genius but I've put a lot of energy into studying computer science full time for many years so I believe I can say I have some understanding of the "complex" stuff. I speak from own experience and also on behalf of others who shared their experience with me that the appreciation of simplicity and realization of its necessity comes after many years of dealing with the complex and deep insight into the field and into the complex connections of that field to society.
You may ask: well then but why it's just you and a few weirdos who see this, why don't most good programmers share your opinions? Because they need to make living or because they simply WANT to make a lot of money and so they do what the system wants them to do. Education in technology (and generally just being exposed to corporate propaganda since birth) is kind of a trap: it teaches you to embrace complexity and when you realize it's not a good thing, it is too late, you already need to pay your student loan, your rent, your mortgage, and the only thing they want you to do is to keep this complexity cult rolling. So people just do what they need to do and many of them just psychologically make themselves believe something they subconsciously know isn't right because that makes their everyday life easier to live. "Everyone does it so it can't be bad, better not even bother thinking about it too much". It's difficult doing something every day that you think is wrong, so you make yourself believe it's right. You may ask: well then but why it's just you and a few weirdos who see this, why don't most good programmers share your opinions? Because they need to make living or because they simply WANT to make a lot of money and so they do what the system wants them to do. Education in technology (and generally just being exposed to corporate propaganda since birth) is kind of a trap: it teaches you to embrace complexity and when you realize it's not a good thing, it is too late, you already need to pay your student loan, your rent, your mortgage, and the only thing they want you to do is to keep this complexity cult rolling. So people just do what they need to do and many of them just psychologically make themselves believe something they subconsciously know isn't right because that makes their everyday life easier to live. "Everyone does it so it can't be bad, better not even bother thinking about it too much". It's difficult doing something every day that you think is wrong, so you make yourself believe it's right.
@ -18,6 +18,14 @@ Simplicity is crucial not only for the quality of technology, i.e. for example i
Going for the simple technology doesn't necessarily have to mean we have to give up the "nice things" such as computer games or 3D graphics. Many things, such as responsiveness and customizability of programs, would improve. Even if the results won't be so shiny, we can recreate much of what we are used to in a much simpler way. You may now ask: why don't companies do things simply if they can? Because complexity benefits them in creating de facto monopolies, as mentioned above, by reducing the number of people who can tinker with their creations. And also because capitalism pushes towards making things quickly rather than well -- and yes, even non commercial "FOSS" programs are pushed towards this, they still compete and imitate the commercial programs. Already now you can see how technology and society are intertwined in complex ways that all need to be understood before one comes to realize the necessity of simplicity. Going for the simple technology doesn't necessarily have to mean we have to give up the "nice things" such as computer games or 3D graphics. Many things, such as responsiveness and customizability of programs, would improve. Even if the results won't be so shiny, we can recreate much of what we are used to in a much simpler way. You may now ask: why don't companies do things simply if they can? Because complexity benefits them in creating de facto monopolies, as mentioned above, by reducing the number of people who can tinker with their creations. And also because capitalism pushes towards making things quickly rather than well -- and yes, even non commercial "FOSS" programs are pushed towards this, they still compete and imitate the commercial programs. Already now you can see how technology and society are intertwined in complex ways that all need to be understood before one comes to realize the necessity of simplicity.
### Who writes this wiki? Can I contribute.
At the moment it's just me, [drummyfish](drummyfish.md). This started as a collaborative wiki name *based wiki* but after some disagreements I forked it (everything was practically written by me at that point) and made it my own wiki where I don't have to make any compromises or respect anyone else's opinions. I'm not opposed to the idea of collaboration but I bet we disagree on something in which case I probably don't want to let you edit this. But you can totally fork this wiki, it's [public domain](cc0.md).
### Since it is public domain, can I take this wiki and do anything with it? Even something you don't like?
Yes... well, anything that's not otherwise illegal like falsely claiming authorship (copyright) of the original text. This is not because I care about being credited, I don't, but because I care about this wiki not being owned by anyone. You can however claim copyright to anything you add to the wiki if you fork it, as that's your original creation.
### Why not keep politics out of this Wiki and make it purely about technology? ### Why not keep politics out of this Wiki and make it purely about technology?
Examining any subject in depth requires also understanding its context. Politics and technology nowadays are very much intertwined and the politics of a society ultimately significantly affects what its technology looks like ([capitalist SW](capitalist_software.md), [censorship](censorship.md), [bloat](bloat.md), [spyware](spyware.md), [DRM](drm.md), ...), what goals it serves (consumerism, [productivity](productivity_cult.md), control, war, peace, ...) and how it is developed ([COCs](cos.md), [free software](free_software.md), ...), so studying technology ultimately requires understanding politics around it. I hate arguing about politics, but it is inevitable, we have to specify real-life goals clearly if we're to create good technology. Political goals guide us in making important design decisions about features, [tradeoffs](tradeoff.md) and other attributes. Examining any subject in depth requires also understanding its context. Politics and technology nowadays are very much intertwined and the politics of a society ultimately significantly affects what its technology looks like ([capitalist SW](capitalist_software.md), [censorship](censorship.md), [bloat](bloat.md), [spyware](spyware.md), [DRM](drm.md), ...), what goals it serves (consumerism, [productivity](productivity_cult.md), control, war, peace, ...) and how it is developed ([COCs](cos.md), [free software](free_software.md), ...), so studying technology ultimately requires understanding politics around it. I hate arguing about politics, but it is inevitable, we have to specify real-life goals clearly if we're to create good technology. Political goals guide us in making important design decisions about features, [tradeoffs](tradeoff.md) and other attributes.
@ -30,6 +38,10 @@ We're not fascists, we're in fact the exact opposite: our aim is to create techn
What we do NOT engage in is political correctness, censorship, offended culture, identity politics and pseudoleftism. We do NOT support fascist groups such as feminists and LGBT and we will NOT practice bullying and [codes of conducts](coc.md). We do not pretend there aren't any differences between people and we will make jokes that make you feel offended. What we do NOT engage in is political correctness, censorship, offended culture, identity politics and pseudoleftism. We do NOT support fascist groups such as feminists and LGBT and we will NOT practice bullying and [codes of conducts](coc.md). We do not pretend there aren't any differences between people and we will make jokes that make you feel offended.
### How can you say you love all living beings and use offensive language at the same time?
The culture of being offended is [bullshit](bullshit.md), it is a [pseudoleftist](pseudoleft.md) (fascist) invention that serves as a weapon to justify censorship, canceling and bullying of people. Since I love all people, I don't support any weapons against anyone (not even against people I dislike or disagree with). People are offended by language because they're taught to be offended by it by the propaganda, I am helping them unlearn it.
### Are you retarded? ### Are you retarded?
:( Maybe, but even a stupid person can sometimes have smart ideas. :( Maybe, but even a stupid person can sometimes have smart ideas.