Some of the most important advancements in programming came from adding restrictions to the way we program.
Famous article by Edsger Dijkstra Go To Statement Considered Harmful
shows how introducing one statement into programming language breaks many nice properties of that language.
goto
gives us freedom and solves couple of simple problems like breaking from nested loops easily,
but it can make programs very hard to understand.
This happens, because we cannot look at two pieces of code in spearation.
The execution can jump to some other place in code or even worse: it can jump from other piece of code to here and We need to keep that in mind.
- Site Reliability Engineering: How Google Runs Production Systems
- Operating Systems
- Operating Systems: Three Easy Pieces
- How Linux Works, 2nd Edition
- Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation
- [Systems Performance: Enterprise and the Cloud](https://www.amazon.com/gp/product/0133390098?ie=UTF8&tag=deirdrestraug-20&linkCode=as2&camp=1789&creative=390957&creativ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Latency Comparison Numbers | |
-------------------------- | |
L1 cache reference 0.5 ns | |
Branch mispredict 5 ns | |
L2 cache reference 7 ns 14x L1 cache | |
Mutex lock/unlock 25 ns | |
Main memory reference 100 ns 20x L2 cache, 200x L1 cache | |
Compress 1K bytes with Zippy 3,000 ns 3 us | |
Send 1K bytes over 1 Gbps network 10,000 ns 10 us | |
Read 4K randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD |