
The Mythical Man-Month The Mythical Man-Month: Essays on Software Engineering is a book on software engineering and project management by Fred Brooks, whose central theme is that "adding manpower to a late software project makes it later". This idea is known as Brooks' law, and is presented along with the second-system effect and advocacy of prototyping. Brooks' observations are based on his experiences at IBM while managing the development of OS/360. The work was first published in 1975 (ISBN 0-201-00650-2), reprinted with corrections in 1982, and republished in an anniversary edition with four extra chapters in 1995 (ISBN 0-201-83595-9), including a reprint of the essay "No Silver Bullet" with commentary by the author. Ideas presented[edit] The mythical man-month[edit] Brooks discusses several causes of scheduling failures. Therefore, assigning more programmers to a project running behind schedule will make it even later. No silver bullet[edit] The second-system effect[edit] Progress tracking[edit] See also[edit]
OOP03-CPP. Prefer not to overload virtual functions - C++ Secure Coding Practices Overloading of virtual functions tends to defeat polymorphism and introduce unnecessary complexity into a class hierarchy. Non-Compliant Code Examples Consider a simple hierarchy with an update capability. This design has a legal but unfortunate mismatch between overloading and overriding. The derived class MyThing declares an update function that overrides one of the inherited update functions, but hides both of them. In this piece of code, it is likely that its author assumed the call mt->update( 12.3 ) would bind to Thing::update (as it would in Java) rather than MyThing::update. The approach of requiring a derived class to override all of a set of overloaded virtual functions solves the problem at a technical level. However, this approach is impractical because any change to the base class requires that all derived classes be maintained as well, and it is often the case that the maintainer of a base class has no access to, or knowledge of, code for the derived classes. Exceptions
Compilers: Principles, Techniques, and Tools Compilers: Principles, Techniques, and Tools[1] is a computer science textbook by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman about compiler construction. Although more than two decades have passed since the publication of the first edition, it is widely regarded as the classic definitive compiler technology text.[2] It is affectionately known as the Dragon Book to a generation of computer scientists [3][4] as its cover depicts a knight and a dragon in battle, a metaphor for conquering complexity. First edition[edit] The first edition is informally called the 'red dragon book' to distinguish it from the second edition[5] and from Aho & Ullman’s 1977 Principles of Compiler Design sometimes known as the 'green dragon book' [5] Topics covered in the first edition include: Second edition[edit] Following in the tradition of its two predecessors, the second edition features a dragon and a knight on its cover, and is informally known as the purple dragon. See also[edit]
[23] Inheritance -- what your mother never told you Updated! [23.6] Okay, but is there a way to simulate that behavior as if dynamic binding worked on the this object within my base class's constructor? Yes: the Dynamic Binding During Initialization idiom (AKA Calling Virtuals During Initialization). To clarify, we're talking about this situation: This FAQ shows some ways to simulate dynamic binding as if the calls made in Base's constructor dynamically bound to the this object's derived class. The first approach is a two-phase initialization. The only remaining issues are determining where to call Phase I and where to call Phase II. The first variation is simplest initially, though the code that actually wants to create objects requires a tiny bit of programmer self-discipline, which in practice means you're doomed. In this variation, the code that is creating the object explicitly executes both phases. Note: Phase I often, but not always, allocates the object from the heap. Derived::Derived() : Base(Helper2()) // ←the magic happens here { ... }
Introduction to Algorithms, Third Edition Table of Contents I Foundations Introduction 3 1 The Role of Algorithms in Computing 5 1.1 Algorithms 5 1.2 Algorithms as a technology 11 2 Getting Started 16 2.1 Insertion sort 16 2.2 Analyzing algorithms 23 2.3 Designing algorithms 29 3 Growth of Functions 43 3.1 Asymptotic notation 43 3.2 Standard notations and common functions 53 4 Divide-and-Conquer 65 4.1 The maximum-subarray problem 68 4.2 Strassen's algorithm for matrix multiplication 75 4.3 The substitution method for solving recurrences 83 4.4 The recursion-tree method for solving recurrences 88 4.5 The master method for solving recurrences 93 4.6 Proof of the master theorem 97 5 Probabilistic Analysis and Randomized Algorithms 114 5.1 The hiring problem 114 5.2 Indicator random variables 118 5.3 Randomized algorithms 122 5.4 Probabilistic analysis and further uses of indicator random variables 130 II Sorting and Order Statistics Introduction 147 6 Heapsort 151 6.1 Heaps 151 6.2 Maintaining the heap property 154 6.3 Building a heap 156 7 Quicksort 170 Index
The C Programming Language Book cover of The C Programming Language, first edition Book cover of The C Programming Language, second edition History[edit] The first edition of the book, published in 1978, was the first widely available book on the C programming language. Influence[edit] The C Programming Language has often been cited as a model for technical writing, due to the book's clear presentation and concise treatment. We have tried to retain the brevity of the first edition. Perhaps the most famous example program from the book is its "hello, world" program, which just prints out the text "hello, world" to the terminal, as an illustration of a minimal working C program. Before the advent of ANSI C, the first edition of the text served as the de facto standard of the language for writers of C compilers. Appendix A, the reference manual, is not the standard, but our attempt to convey the essentials of the standard in a smaller space. See also[edit] The C++ Programming Language References[edit] External links[edit]
Structure and Interpretation of Computer Programs Content[edit] The program also introduces a practical implementation of the register machine concept, defining and developing an assembler for such a construct, which is used as a virtual machine for the implementation of interpreters and compilers in the book, and as a testbed for illustrating the implementation and effect of modifications to the evaluation mechanism. Working Scheme systems based on the design described in this book are quite common student projects. Characters[edit] The book uses some fictional characters repeatedly: Ben Bitdiddle. License[edit] The book is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.[4] Coursework[edit] Reception[edit] BYTE recommended SICP "for professional programmers who are really interested in their profession". Influence[edit] SICP has been influential in computer science education, and a number of later books have been inspired by its style. References[edit] Further reading[edit] External links[edit]
The Pragmatic Bookshelf You’re a Pragmatic Programmer. You aren’t wedded to any particular technology, but you have a broad enough background in the science, and your experience with practical projects allows you to choose good solutions in particular situations. Theory and practice combine to make you strong. You adjust your approach to suit the current circumstances and environment. And you do this continuously as the work progresses. Pragmatic Programmers get the job done, and do it well. The Pragmatic Programmer Book First published back at the turn of the century in 1999, The Pragmatic Programmer: From Journeyman to Master still expresses our beliefs about successful software development. Pragmatic Programmer Tips The original seventy tips from The Pragmatic Programmer. And now, for the first time ever, you can now get the DRM-free PDF, epub, and mobi versions of The Pragmatic Programmer directly from us. New Title Announcements and Sales Do you get our email newsletter?