Computing
- Concurrency/parallelism
- Agile
Hash tableπ
Normal lists and tables take longer to scan through the bigger they are, right? A hash table is a trick that programmers have figured out, so that in a hash table the cost of looking up a value is independent of the amount of items in the table. For small data it's not so appropriate, but for enormous data it's the only appropriate data type. At least if you're going to be accessing values often.
How does this work?
The Blub paradoxπ
Graham considers the hierarchy of programming languages with the example of "Blub", a hypothetically average language "right in the middle of the abstractness continuum. It is not the most powerful language, but it is more powerful than Cobol or machine language."[21] It was used by Graham to illustrate a comparison, beyond Turing completeness, of programming language power, and more specifically to illustrate the difficulty of comparing a programming language one knows to one that one does not.[22]
Graham considers a hypothetical Blub programmer. When the programmer looks down the "power continuum", he considers the lower languages to be less powerful because they miss some feature that a Blub programmer is used to. But when he looks up, he fails to realise that he is looking up: he merely sees "weird languages" with unnecessary features and assumes they are equivalent in power, but with "other hairy stuff thrown in as well". When Graham considers the point of view of a programmer using a language higher than Blub, he describes that programmer as looking down on Blub and noting its "missing" features from the point of view of the higher language.[22]
Graham describes this as the "Blub paradox" and concludes that "By induction, the only programmers in a position to see all the differences in power between the various languages are those who understand the most powerful one."[22]
Test-driven development (TDD)π
Each new feature begins with writing a test, which also means you specify exactly what the feature should do. Then write code to pass the test, nothing more.