| Bjarne Stroustrup. The Design and Evolution of C++. Addison-Wesley, 1994. |
....with controlled scope such as Java, detailed unit testing can be difficult without either breaking the scope by giving test code access to class or package features, or by moving the unit tests to domain packages. Stroustroup introduced the friend function into C to solve just this problem [Stroustroup 1992]. Whatever the solution, such code contradicts the intention of the design. Developing with Mock Objects reduces the need to expose the structure of domain code. A test knows more about the behaviour and less about the structure of tested code. Second, singleton objects are increasingly recognised ....
Bjarne Stroustroup. The design and evolution of C++. Reading Mass.: Addison-Wesley, 1992.
....must be all of those to serve its diverse set of users. For his work in the design of C , Stroustrup was awarded the 1994 ACM Grace Murray Hopper award, given for fundamental contributions made to computer science by work done before the age of 30. Most of this material is taken from [Str94] 13.3.6 Encapsulating Construction in WireFactory The simple three line program in Prog. 13.13, constructs an or gate without providing wires when the or gate is constructed. The or gate makes its own wires, and the program connects a probe to the created output wire. As we saw in the two ....
Bjarne Stroustrup. The Design and Evolution of C++. Addison-Wesley, 1994.
....Unfortunately, abstraction and dynamic behavior hinder performance. Most popular languages are still compiled because interpreted ones are perceived as slow. Indeed, even some of the more dynamic features of C , like Real Time Type Inferencing (RTTI) are avoided because of the overhead required [66]. The increasingly dynamic aspects of both hardware and software place a burden on language runtime implementers. The unfortunate price of these recent trends is performance. Interpreted Java is notoriously slow. Java on a processor like Crusoe introduces two layers of emulation, that of the Java ....
Bjarne Stroustrup. The Design and Evolution of C++. Addison-Wesley, 1994.
....critical portions of an application, but leverage the declarative programming features when code maintenance concerns outweigh performance issues. This philosophy was used successfully by Stroustrup in gaining wide acceptance for object oriented extensions to imperative programming languages [25]. To make it easier to create a realistic first system one might further restrict the library to specifically handle declarative specifications of path problems in graphs, rather than declarative programs in general. This would still be a widely useful system since a broad class of problems can ....
Bjarne Stroustrup. The Design and Evolution of C++. Addison Wesley, Reading, MA, 1994.
....needed for this paper, we first consider reasons for using the scheme. Exploiting algorithmic opportunities in logic programming Programming languages differ vastly in the sophistication of algorithms used in their implementation. At one extreme we have a precursor of C of which Stroustrup [Str94] page 36, says : that C with Classes should be implementable without using an algorithm more complicated that linear search. This is appropriate for implementation languages, in which algorithms are implemented. At the other extreme we have languages such as Prolog IV [Col96] and ....
Bjarne Stroustrup. The Design and Evolution of C++. Addison-Wesley, 1994.
....class inherit the behaviors of the parent class, but the derived class is free to override any or all of those behaviors, and also is able to add new behaviors specific to the derived class and any further classes derived from it. For more information on classes and objects, see Stroustrup [Stroustrup 1994]. As we will describe shortly, we use class hierarchies extensively in the abstraction for the physical representation of actors, and in creating motion model libraries. Finally, although our prototype implementation uses C , the use of the hierarchical class abstraction is not tied to our use of ....
Bjarne Stroustrup. The Design and Evolution of C++. Addison-Wesley. Reading, MA. 1994.
.... bind a call to the implementation in a specific class, and 1 The problems of the dependency on the inheritance structure of a class are described in detail in [Sny86] 24 he is not forced to introduce additional classes just in order to hand code a renaming scheme, when needed (as proposed in [Stro94] Renaming also offers the most general and handy solution to a problem that is specific to our model: when methods with the same name in a superclass and a parent class do not have the same semantics, there must be a way to disable the standard overriding of the parent class method by the ....
....programs of similar functionality. 46 7. Related Work In the domain of strongly typed, inheritance based programming languages we are not aware of any previous attempt to implement dynamic delegation, except the failed experiment with delegation through a pointer described in [Stro87] and [Stro94] Delegation through a pointer was not really delegation but an implicit resending mechanism (cf. 2) with a bunch of additional restrictions, imposed by the aim to squeeze the concept into the implementation scheme for multiple inheritance. In his retrospective evaluation ( Stro94] p. 272) ....
[Article contains additional citation context not shown here]
Bjarne Stroustrup: "The Design and Evolution of C++". Addison-Wesley, Reading, MA, 1994.
....by giving examples from the domain of data structures. These running examples come from a P data structures library which we fully describe in Chapter 5. In this chapter, our focus is to explain the usage and significance of each language feature. 3. 1 Motivation P is a superset of C [Ell90, Str94]; it supports all existing C constructs, as well as certain constructs for defining and using components. Why define P in terms of C C is the most widely used object oriented language; its features already are well defined and understood by many programmers. Moreover, we 21 believe it is ....
Bjarne Stroustrup. The Design and Evolution of C++, Addison-Wesley, Reading, MA, 1994. 134
.... of the C language, which shares C s preprocessor, also noted these problems: Occasionally, even the most extreme uses of Cpp are useful, but its facilities are so unstructured and intrusive that they are a constant problem to programmers, maintainers, people porting code, and tool builders [Str94, p. 424] 1 Given the wide range of possible uses of the preprocessor, our research addresses the question of how it is actually used in practice. Our statistical analysis of 26 C programs comprising 1.4 million lines of code provides significant insights with respect to this question. We are ....
....We categorized macro bodies into 28 categories, although for simplicity of presentation, this paper coalesces these into 10 higher level categories, then omits one of them as insignificant. We started with a set of categories that we expected to occur frequently (similar to other macro taxonomies [Str94, CE95] then iteratively refined them to break up overly broad categories and add unanticipated ones. 7 0 20 40 60 80 100 genscript workman xfig bison gcc ghostview zsh mosaic fvwm cvs rasmol plan flex m4 rcs emacs gawk gnuplot gs gnuchess bash zephyr bc perl ....
[Article contains additional citation context not shown here]
Bjarne Stroustrup. The Design and Evolution of C++. Addison-Wesley, Reading, Massachusetts, 1994.
....by most compilers. This discussion is our first hint that some language issues are sufficiently complex to require an understanding of compiler internals to decipher their semantics. Stroustrup s other books include The C Programming Language, Str91] and The Design and Evolution of C . Str94] The former provides a general introduction to C and includes the (un annotated) Reference Manual, while the latter offers an insightful discussion of the evolution of the language. Stroustrup clarifies his concerns and priorities when designing and implementing the language (in its various ....
....Meyers book, Mey92] as a useful set of pointers for an intermediate C user. Meyers sometimes fails to explain why one should use C in a particular way, but the suggestions are generally good nonetheless. A very interesting book to read is Stroustrup s The Design and Evolution of C , Str94] which appears to have evolved from the first few pages of [Str91] into a full book. The book offers anecdotal explanations of how and why various features were added to C with Classes, and then C , over the 30 years of its development. As one analyzes the language carefully, there are many ....
[Article contains additional citation context not shown here]
Bjarne Stroustrup. The Design and Evolution of C++. AddisonWesley, 1994.
....started to teach object orientation in their first programming course. The main reason for doing this is the often cited problem of the paradigm shift. Learning to program in an object oriented style seems to be very difficult after being used to a procedural style. Anecdotal evidence (e.g. in [Stroustrup 1994]) indicates that it takes the average programmer 6 to 18 months to switch his or her mind set from a procedural to an object oriented view of the world. Experience on the other hand also shows, that students do not seem to have any difficulty understanding CHAPTER 1: INTRODUCTION 2 object oriented ....
....paradigms. C , for example, is a hybrid language. Many people have argued for hybrid languages, in particular for C , on the basis that the hybrid character of the language might ease the entry to object oriented programming for students with prior programming experience [Biddle 1994, Stroustrup 1994] If a student knows C already, a hybrid language like C might provide an easy entry path. Object orientation could be gradually added to an existing body of knowledge, making understanding of the problems easier by flattening the learning curve. While this argument sounds plausible at first, ....
Bjarne Stroustrup, The Design and Evolution of C++, AddisonWesley, 1994.
....of macros provides for a more uniform language, but severely restricts the ability to write interesting programs. The C preprocessor [1] alleviates some of these restrictions, but its lack of integration with the language and its very limited capabilities cause many problems. Stroustrup [23] identifies elimination of the preprocessor as a major goal for C . New C constructs such as templates, inline functions and constant objects help, but do not tackle the need for conditionalisation or lexical substitution. Paradoxically, C has increased the need for a preprocessor. ....
....There is no opportunity for omission or inconsistent implementation of the code in derived classes. Another simple example, solves the problem of providing an indirect name for the inherited base class, to avoid problems with code copying or evolution when the direct name is used. Stroustrup [23] credits Michael Tiemann with the solution class Derived : public Base typedef Base Inherited; enabling usage as void Derived: f( Inherited: f( Using a derivation rule, FOG avoids the need to provide the one line declaration in every derived class, and the consequent ....
[Article contains additional citation context not shown here]
Bjarne Stroustrup. The Design and Evolution of C++. Addison-Wesley, 1994.
....Implementation INTRODUCTION Cpp, the C pr eprocessor has always been an essential accompaniment for the C language. Apart fr om some minor rationalisation for the ANSI C standar d [1] Cpp has survived unchanged as an important part of C [2] Str oustrup, in The Design and Evolution of C [27], identifies elimination of the pr eprocessor as a major goal for C , devoting the final chapter to a discussion of its weaknesses, and identifying some r emedies that C pr ovides. In the final paragraph, Str oustrup writes I d like to see Cpp abolished. However the only realistic and ....
....#ifndef FRED H INCLUDED #include fred.h #endif FOG supports a more disciplined form of inclusion like the #import of Objective C: using fred.h ; performs the inclusion pr ovided the file has not alr eady been included. Guar ds are unnecessary. FOG does not follow Str oustrup s suggestion [27] of pr oviding an isolated namespace for use within the include file, because as will be seen, FOG extends the normal namespaces to cover compile time definitions. #if, #ifdef, #ifndef, #else, #elif, #endif Conditional compilation is essential to support a variety of configuration options, often ....
[Article contains additional citation context not shown here]
Bjarne Stroustrup.The Design and Evolution of C++. Addison-W esley, 1994.
....of pointers in ICC inheritance hierarchies are done at runtime using runtime type information. Thus, they correspond to dynamic cast rather than static cast in the new C casting terminology. As with dynamic cast all failing casts return NULL. All other casts are exactly as in C . [6, 4] define a new cast syntax consisting of four cast operators: static cast, dynamic cast, const cast and reinterpret cast. These operators are modified as follows: static cast is only allowed for coercions that may be done implicitly. It cannot be used to navigate down inheritance hierarchies (its ....
Bjarne Stroustrup. The Design and Evolution of C++. Addsion-Wesley, 1994.
....a static type checker must be conservative, it might reject a program that will in fact execute without error. In describing Pascal [Wir71] for example, Bjarne Stroustrup stated I had found [its] type system worse than useless a straitjacket that caused more problems than it solved. Str94] A programmer can get around the restrictions that a static type checker might impose, but doing so will normally result in a loss of performance, safety, or clarity the exact things that static type checking was to have provided. Object oriented languages have more complex type systems than ....
Bjarne Stroustrup. The Design and Evolution of C ++ . Addison-Wesley, 1994. BIBLIOGRAPHY 102
....are not a part of the C standard, and since more complex features of C such as multiple inheritance and virtual bases often employ more elaborate implementations, programmers cannot write portable code that depends on v table surgery . Interestingly, C with Classes contained a mechanism [28] that allowed programmers to specify a function that would be called before every call to every member functions (except constructors) and another that would be called before every return from every member function. These call and return functions resemble dispatching wrappers. In contrast to ....
Bjarne Stroustrop. The Design and Evolution of C++. Addison-Wesley, Reading, MA 1994.
No context found.
Bjarne Stroustrup. The Design and Evolution of C++. Addison-Wesley, 1994.
No context found.
Bjarne Stroustrup, The Design and Evolution of C++, Addison-Wesley, 1994.
No context found.
Bjarne Stroustrup. The Design and Evolution of C++. Addison-Wesley, April 1995. ISBN 0-201-54330-3.
No context found.
Bjarne Stroustrup. The Design and Evolution of C++. Addison-Wesley, 1994.
No context found.
Bjarne Stroustrup. The Design and Evolution of C++. AddisonWesley, 1994. (p 27)
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC