User Tools

Site Tools


principles:law_of_leaky_abstractions

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
principles:law_of_leaky_abstractions [2013-10-08 11:09] christianprinciples:law_of_leaky_abstractions [2013-10-08 12:21] – example 3 christian
Line 124: Line 124:
  
 (this example is taken from ((Joel Spolsky: //[[http://joelonsoftware.com/articles/LeakyAbstractions.html|The Law of Leaky Abstractions]]//))) (this example is taken from ((Joel Spolsky: //[[http://joelonsoftware.com/articles/LeakyAbstractions.html|The Law of Leaky Abstractions]]//)))
 +
 +==== Example 3: List of further examples ====
 +
 +  * The virtual address space is leaky. Paging leads to a loss of performance. And page faults show up for example while iterating over a two-dimensional array.
 +  * Platform details are leaky. The Java Virtual Machine does a pretty good job abstracting from the underlying operating system. But at least  when it comes to accessing files based on file paths, the underlying file system structure leaks through. On Windows you have "C:\" whereas on Unixoid systems you have "/usr", "/etc" and stuff.
 +  * SQL is leaky. Some queries have a considerably lower performance than others despite being semantically equivalent.
 +  * Network file systems (SMB, NFS, etc) are leaky because they are remote. The connection may break down and the access is much slower than local file access.
 +  * The finiteness of real-world machines leaks. Programming languages are said to be Turing complete. They theoretically are as powerful as a Turing machine. In fact they are not. Turing machines are conceptual automata with infinite memory. But in the real world memory is finite. There can be OutOfMemoryErrors: RAM and hard disks and any other kind of storage can and do get full.
  
  
 ===== Description Status ===== ===== Description Status =====
 /* Choose one of the following and comment out the rest: */ /* Choose one of the following and comment out the rest: */
-[[wiki:Stub]]+/*[[wiki:Stub]]*/
 /*[[wiki:Incomplete]]*/ /*[[wiki:Incomplete]]*/
-/*[[wiki:Complete]]*/+[[wiki:Complete]]
  
 ===== Further Reading ===== ===== Further Reading =====
principles/law_of_leaky_abstractions.txt · Last modified: 2021-10-18 21:51 by christian