ernst_klim
Joined 9 years ago
Joined 9 years ago
No, the article explicitly says that the difference is formal vs informal language.
> Programming remained the use of a formal symbolism and, as such, continued to require the care and accuracy required before.
One can define an operational semantics for (at least a subset of) the programming language (even for sloppy one, since they are still very small and restricted). One can prove the semantics preservation theorem formally, or reason somewhat in a similar way informally.
With natural language you kinda lose it, and we don't even touch the fact that models are probabilistic.
This is an array of pointers, I mentioned it in the post you're replying to. It completely obliterates the "cache-friendliness" argument, making it worse than linked list (now you have same indirection overhead plus overhead of copying minus benefits of being able to CAS your value atomically into a list making it lock-free)
In what way? It's the same thing with additional overhead on copying the vector when adding/removing elements.
Not to mention you can have a lock-free intrusive list, and with vector well, you just can't.
> Copying the whole vector is usually better
With linked list you don't need to copy anything when you add/remove.
1. When you need a persistent version of sequential data structure. I.e. you need addition not to change the previous version of list. Very useful in traversals which can fail and/or have multiple routes. C++ list obviously fails here because it's a mutable data structure and each addition is mutation. The proper interface is cons(head, old_list) -> new_list, where old_list exists after new_list is constructed.
2. When you need the values be never moved in memory. Aka intrusive lists. Can be optimized for more cache friendliness by having lists of big chunks of values instead of just lists in some cases. Useful in operating systems and many low level apps. Alternative is usually a vector of pointers which still gives you indirection.But then the platform decides what to show and to whom. It's not an impartial medium anymore, not since the engagement algorithms become a norm.
My opinion on that is, it's not such a big gain compared to legacy banking with checks, phone calls etc. All the operations you can do now you could do with legacy banks, just a bit slower. Given banking is not something you do every second, the overall speedup is tiny.
Everything IT does is slightly simplifying things we already could do. We could already telegraph someone across Atlantic, we could extract knowledge in library, we could do accounting. The speedup is small compared to horses vs steam power for transportation for example.
The economic reality is perfectly compatible with finite reality, because growth is not a function of resources.
An email is more economically valuable than a paper mail despite requiring much less resources (and leading to a much less CO2 emission)
But now we delegate thinking itself, so I wonder what is left.
100k is small, but you're right, it can be millions. I usually skim through the code tho, and it's not that hard. I don't need to fully read and understand the code.
What I look at is: high-level architecture (is there any, is it modular or one big lump of code, how modular it is, what kind of modules and components it has and how they interact), code quality (structuring, naming, aesthetics), bus factor (how many people contribute and understand the code base).
I can see why people don't value free speech anymore, when the speech had become mostly astroturfing curated by algorithms.
Censorship is the wrong direction, but I see where it coming from emotionally, mass Internet today is an abomination. It wasn't like that when I discovered it.