- What Makes a Good Programming Language?
- Oct 20, 2006
- There are plenty of programming languages around. David Chisnall points out the various factors that determine what makes a "good" language. But note his caveat: These principles don't always apply in any given set of circumstances!
|
- Hello, ATL Server: A Modern C++ Web Platform
- Sep 29, 2006
- ATL Server is an extension of ATL that enables you to write ISAPI applications and bring your C++ skills to the World Wide Web. Learn how ATL Server works in this sample chapter.
|
- Programming C++ GUIs with the wxWidgets Library
- Sep 15, 2006
- The open source wxWidgets library makes programming GUIs incredibly easy, far easier than with most platform APIs. Jeff Cogswell shows how this handy C++ library can shorten your programming time with powerful classes that are simple to use.
|
- Searching and Matching with Regular Expressions in C++
- Jul 28, 2006
- Jeff Cogswell explains how to use regular expressions to simplify and enhance the power of your programmatic string searching, matching, and replacing.
|
- Leveraging Key Development Principles to Achieve Software Engineering Best Practices
- Jun 16, 2006
- This chapter provides a summary of the Unified Process lifecycle, OpenUP/Basic, and RUP and explains how they fit together in the family of Unified Process methods built on EPF and RMC. This chapter also summarizes Scrum and XP, because we have chosen to focus on these methods as part of the "comparison with other methods" section in each practice.
|
- Predicates and Function Objects in C++
- Jun 2, 2006
- Reusable code saves time and effort in testing and documentation. The C++ algorithms, containers, function objects, and predicates work together to provide the developer with the tools necessary to create such generic programming. In this article, Tracey and Cameron Hughes show some of the specific uses for predicates and function objects in C++.
|
- The Accidental Architecture
- Jun 2, 2006
- Every interesting software-intensive system has an architecture. While some of these architectures are intentional, most appear to be accidental. Grady Booch explains.
|
- An Introduction to Catastrophe Disentanglement for Software Projects
- May 4, 2006
- Just as the smart thing to do when a ball of twine seems hopelessly entangled is to stop whatever we are doing with it (otherwise, the tangle gets worse), so it is with a disastrous project; the longer we keep at it, the worse it gets. At some point, we need to halt all activity and reassess what we are doing. This chapter introduces you to the concept of catastrophe disentanglement.
|
- Creating Finite State Machines in C++
- Apr 21, 2006
- Before tackling a seemingly complex code problem with lots of functions and complex logic, Jeff Cogswell recommends trying a finite state machine - a set of states and appropriate rules and actions that go with those states - to greatly simplify your coding.
|
- Generic C++ for Networks
- Apr 21, 2006
- Service oriented architectures sound complicated and daunting, but they're not so hard to implement. The concepts involved are actually fairly simple, and this article describes them by using examples drawn from the networking domain. Software consultant Stephen B. Morris describes some of the principles of service orientation in the down-to-earth contexts of C++ and networking.
|
- Exception Handling and Fault Tolerance in C++: Defect Removal vs. Defect Survival
- Apr 14, 2006
- Defect removal is preferred over defect survival. If some defect slips through the cracks, however, the C++ exception handling mechanism helps to fortify your software's fault tolerance, as Cameron and Tracey Hughes explain.
|
- The Bad Code Spotter's Guide
- Apr 14, 2006
- Old maps were marked with the phrase "Here be Dragons" to help seafarers steer away from dangerous places; in programming the best way to avoid dealing with bad code is to avoid writing it. Diomidis Spinellis points out 10 giveaways to spot bad code that you (or others) may have written.
|
- C++ Inheritance and Polymorphism
- Apr 7, 2006
- Good news! Inheritance and polymorphism can facilitate more concise code, which reduces waste throughout the lifecycle of a C++ product. By pushing more generic code into base classes, you can help reduce application code clutter as well as cutting down on code duplication. In this article, software consultant Stephen Morris insists that less code means less testing, lower maintenance costs, and easier upgrades.
|
- Simplifying Cluster (PVM and MPI) Application Programming Using Interface Classes, Part 3: The Pthreads Connection
- Mar 24, 2006
- Cameron and Tracey Hughes conclude their exploration of cluster programming with an example of a cluster-based text-file analysis utility that processes and analyzes multiple files in parallel.
|
- Thinking Recursively with C++
- Mar 24, 2006
- Algorithms can often be implemented recursively or nonrecursively; the decision rests with the programmer, who might shy away from a recursive solution because the algorithm might not terminate or that performance might be poor. In reality, recursion can allow for very elegant code as well as facilitating an interesting and economical type of code reuse. Software consultant Stephen B. Morris explores this interesting topic with a data-centric application drawn from the field of networking.
|
- C++ Modularity with Namespaces and Exception Handling
- Mar 3, 2006
- Did you know that there are three different C++ namespace types? Namespaces, which are simple to learn and apply, offer a clever means of packaging your code and can assist when symbol conflicts occur. And how well does your code handle exceptions? Inserting exception-handling code can make your code more ready for packaging as external functions. Stephen Morris contends that just as namespaces offer an efficient way to package code, the skillful use of exception handling can quickly simplify that code.
|
- C++ Chain of Responsibility Pattern: Network Events
- Feb 10, 2006
- Should you make your C++ classes more intelligent or centralize the intelligence and use dumbed-down surrounding classes? The natural world tends to prefer a pass-the-parcel style of distributed intelligence, which reduces single points of failure and potentially leads to more stable systems. In this article, Stephen Morris shows you how to raise the IQ of your classes while simultaneously allowing other (possibly) more-qualified classes to handle specific problems. The chain of responsibility pattern provides an elegant model for facilitating this behavior.
|
- How to Achieve Sustainable Software Development
- Jan 27, 2006
- Very little software is written once, installed, and then never changed over the course of its lifetime. And yet, the most prevalent development practices used in the industry treat change as an afterthought. This chapter will teach you to not only anticipate change in your software but develop specifically with change in mind.
|
- Grady Booch on Developing the Handbook of Software Architecture
- Jan 13, 2006
- Grady Booch discusses his current project: creating a handbook of software architecture patterns and their context.
|
- Secure Coding in C and C++: Strings
- Dec 1, 2005
- Strings—such as command-line arguments, environment variables, and console input—are of special concern in secure programming because they comprise most of the data exchanged between an end user and a software system. This chapter covers the security issues with strings and how you can sidestep them.
|