HOME
*





Fundamental Theorem Of Software Engineering
The fundamental theorem of software engineering (FTSE) is a term originated by Andrew Koenig to describe a remark by Butler Lampson attributed to David J. Wheeler: The theorem does not describe an actual theorem that can be proven; rather, it is a general principle for managing complexity through abstraction. The theorem is often expanded by the humorous clause "…except for the problem of too many levels of indirection," referring to the fact that too many abstractions may create intrinsic complexity issues of their own. For example, the use of protocol layering in computer networks, which today is ubiquitous, has been criticized in ways that are typical of more general disadvantages of abstraction. Here, the adding of extra levels of indirection may cause higher layers to duplicate the functionality of lower layers, leading to inefficiency, and functionality at one layer may need data present only at another layer, which fundamentally violates the goal of separation into dif ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Andrew Koenig (programmer)
Andrew Richard Koenig (; born June 1952) is a former AT&T and Bell Labs researcher and programmer. He is the author of '' C Traps and Pitfalls'' and co-author (with Barbara Moo) of ''Accelerated C++'' and ''Ruminations on C++'', and his name is associated with argument-dependent name lookup, also known as "Koenig lookup", though he is not its inventor. He served as the Project Editor of the ISO/ANSI standards committee for C++, and has authored over 150 papers on C++. Early life and career Koenig was born in New York City and is the son of the physicist Dr. Seymour H. Koenig, a former director of the IBM Watson Laboratory, and Harriet Koenig, an author and collector of Native American Indian art. He graduated from The Bronx High School of Science in 1968 and went on to receive a Bachelor of Science degree and a Master of Science degree from Columbia University in New York. He was a prominent member of the Columbia University Center for Computing Activities (CUCCA) in the lat ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Butler Lampson
Butler W. Lampson, ForMemRS, (born December 23, 1943) is an American computer scientist best known for his contributions to the development and implementation of distributed personal computing. Education and early life After graduating from the Lawrenceville School (where in 2009 he was awarded the Aldo Leopold Award, also known as the Lawrenceville Medal, Lawrenceville's highest award to alumni), Lampson received an A.B. in physics (''magna cum laude'' with highest honors in the discipline) from Harvard University in 1964 and a PhD in electrical engineering and computer science from the University of California, Berkeley in 1967. Career and research During the 1960s, Lampson and others were part of Project GENIE at UC Berkeley. In 1965, several Project GENIE members, specifically Lampson and Peter Deutsch, developed the Berkeley Timesharing System for Scientific Data Systems' SDS 940 computer. After completing his doctorate, Lampson stayed on at UC Berkeley as an assistant p ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


David Wheeler (computer Scientist)
David John Wheeler FRS (9 February 1927 – 13 December 2004) was a computer scientist and professor of computer science at the University of Cambridge. Education Wheeler was born in Birmingham, England, the second of the three children of (Agnes) Marjorie, ''née'' Gudgeon, and Arthur Wheeler, a press tool maker, engineer, and proprietor of a small shopfitting firm. He was educated at a local primary school in Birmingham and then went on to King Edward VI Camp Hill School after winning a scholarship in 1938. His education was disrupted by World War II, and he completed his sixth form studies at Hanley High School. In 1945 he gained a scholarship to study the Cambridge Mathematical Tripos at Trinity College, Cambridge, graduating in 1948. He was awarded the world's first PhD in computer science in 1951. Career Wheeler's contributions to the field included work on the Electronic delay storage automatic calculator (EDSAC) in the 1950s and the Burrows–Wheeler transform ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Indirection
In computer programming, indirection (also called dereferencing) is the ability to reference something using a name, reference, or container instead of the value itself. The most common form of indirection is the act of manipulating a value through its memory address. For example, accessing a variable through the use of a pointer. A stored pointer that exists to provide a reference to an object by double indirection is called an ''indirection node''. In some older computer architectures, indirect words supported a variety of more-or-less complicated addressing modes. Another important example is the domain name system which enables names such as en.wikipedia.org to be used in place of network addresses such as 208.80.154.224. The indirection from human-readable names to network addresses means that the references to a web page become more memorable, and links do not need to change when a web site is relocated to a different server. Overview A famous aphorism of Butler Lampson goe ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  




Abstraction (computer Science)
In software engineering and computer science, abstraction is: * The process of removing or generalizing physical, spatial, or temporal details or attributes in the study of objects or systems to focus attention on details of greater importance; it is similar in nature to the process of generalization; * the creation of abstract concept-objects by mirroring common features or attributes of various non-abstract objects or systems of study – the result of the process of abstraction. Abstraction, in general, is a fundamental concept in computer science and software development. The process of abstraction can also be referred to as modeling and is closely related to the concepts of ''theory'' and ''design''. Models can also be considered types of abstractions per their generalization of aspects of reality. Abstraction in computer science is closely related to abstraction in mathematics due to their common focus on building abstractions as objects, but is also related to other n ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Computer Network
A computer network is a set of computers sharing resources located on or provided by network nodes. The computers use common communication protocols over digital interconnections to communicate with each other. These interconnections are made up of telecommunication network technologies, based on physically wired, optical, and wireless radio-frequency methods that may be arranged in a variety of network topologies. The nodes of a computer network can include personal computers, servers, networking hardware, or other specialised or general-purpose hosts. They are identified by network addresses, and may have hostnames. Hostnames serve as memorable labels for the nodes, rarely changed after initial assignment. Network addresses serve for locating and identifying the nodes by communication protocols such as the Internet Protocol. Computer networks may be classified by many criteria, including the transmission medium used to carry signals, bandwidth, communications pro ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Abstraction Inversion
In computer programming, abstraction inversion is an anti-pattern arising when users of a construct need functions implemented within it but not exposed by its interface. The result is that the users re-implement the required functions in terms of the interface, which in its turn uses the internal implementation of the same functions. This may result in implementing lower-level features in terms of higher-level ones, thus the term 'abstraction inversion'. Possible ill-effects are: * The user of such a re-implemented function may seriously underestimate its running-costs. * The user of the construct is forced to obscure their implementation with complex mechanical details. * Many users attempt to solve the same problem, increasing the risk of error. Examples Alleged examples from professional programming circles include: * In Ada, choice of the ''rendezvous'' construct as a synchronisation primitive forced programmers to implement simpler constructs such as semaphores on the mo ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Indirection
In computer programming, indirection (also called dereferencing) is the ability to reference something using a name, reference, or container instead of the value itself. The most common form of indirection is the act of manipulating a value through its memory address. For example, accessing a variable through the use of a pointer. A stored pointer that exists to provide a reference to an object by double indirection is called an ''indirection node''. In some older computer architectures, indirect words supported a variety of more-or-less complicated addressing modes. Another important example is the domain name system which enables names such as en.wikipedia.org to be used in place of network addresses such as 208.80.154.224. The indirection from human-readable names to network addresses means that the references to a web page become more memorable, and links do not need to change when a web site is relocated to a different server. Overview A famous aphorism of Butler Lampson goe ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]