Books about C and C++ Programming

C Pocket Reference

£5.56
Image of C Pocket Reference

Peter Prinz,Ulla Kirch-Prinz and Tony Crawford; ISBN: 0-596-00436-2

C is one of the oldest programming languages and still one of the most widely used. Whether you're an experienced C programmer or you're new to the language, you know how frustrating it can be to hunt through hundreds of pages in your reference books to find that bit of information on a certain function, type or other syntax element. Or even worse, you may not have your books with you. Your answer is the C Pocket Reference. Concise and easy to use, this handy pocket guide to C is a must-have quick reference for any C programmer. It's the only C reference that fits in your pocket and is an excellent companion to O'Reilly's other C books.

Ideal as an introduction for beginners and a quick reference for advanced programmers, the C Pocket Reference consists of two parts: a compact description of the C language and a thematically structured reference to the standard library. The representation of the language is based on the ANSI standard and includes extensions introduced in 1999. An index is included to help you quickly find the information you need.

This small book covers the following:

  • C language fundamentals
  • Data types
  • Expressions and operators
  • C statements
  • Declarations
  • Functions
  • Preprocessor directives
  • The standard library

O'Reilly's Pocket References have become a favorite among programmers everywhere. By providing a wealth of important details in a concise, well-organized format, these handy books deliver just what you need to complete the task at hand. When you've reached a sticking point in your work and need to get to a solution quickly, the new C Pocket Reference is the book you'll want to have.



C++ Pocket Reference

£5.56
Image of C++ Pocket Reference

Kyle Loudon; ISBN: 0-596-00496-6

C++ is a complex language with many subtle facets. This is especially true when it comes to object-oriented and template programming. The C++ Pocket Reference is a memory aid for C++ programmers, enabling them to quickly look up usage and syntax for unfamiliar and infrequently used aspects of the language. The book's small size makes it easy to carry about, ensuring that it will always be at-hand when needed. Programmers will also appreciate the book's brevity; as much information as possible has been crammed into its small pages.

In the C++ Pocket Reference, you will find:

  • Information on C++ types and type conversions
  • Syntax for C++ statements and preprocessor directives
  • Help declaring and defining classes, and managing inheritance
  • Information on declarations, storage classes, arrays, pointers, strings, and expressions
  • Refreshers on key concepts of C++ such as namespaces and scope
  • More!

The C++ Pocket Reference is useful to Java and C programmers making the transition to C++, or who find themselves occasionally programming in C++. The three languages are often confusingly similar. This book enables programmers familiar with C or Java to quickly come up to speed on how a particular construct or concept is implemented in C++.

Together with its companion STL Pocket Reference, the C++ Pocket Reference forms one of the most concise, easily-carried, quick-references to the C++ language available.



C++ in a Nutshell

£22.80
Image of C++ in a Nutshell

Ray Lischner; ISBN: 0-596-00298-X

To-the-point, authoritative, no-nonsense solutions have always been a trademark of O'Reilly books. The In a Nutshell books have earned a solid reputation in the field as the well-thumbed references that sit beside the knowledgeable developer's keyboard. C++ in a Nutshell lives up to the In a Nutshell promise. C++ in a Nutshell is a lean, focused reference that offers practical examples for the most important, most often used, aspects of C++.

C++ in a Nutshell packs an enormous amount of information on C++ (and the many libraries used with it) in an indispensable quick reference for those who live in a deadline-driven world and need the facts but not the frills.

The book's language reference is organized first by topic, followed by an alphabetical reference to the language's keywords, complete with syntax summaries and pointers to the topic references. The library reference is organized by header file, and each library chapter and class declaration presents the classes and types in alphabetical order, for easy lookup. Cross-references link related methods, classes, and other key features. This is an ideal resource for students as well as professional programmers.

When you're programming, you need answers to questions about language syntax or parameters required by library routines quickly. What, for example, is the C++ syntax to define an alias for a namespace? Just how do you create and use an iterator to work with the contents of a standard library container? C++ in a Nutshell is a concise desktop reference that answers these questions, putting the full power of this flexible, adaptable (but somewhat difficult to master) language at every C++ programmer's fingertips.



Checking C Programs with lint

£7.15
Image of Checking C Programs with lint

Ian F. Darwin; ISBN: 0-937175-30-7

The lint program checker has proven time and again to be one of the best tools for finding portability problems and certain types of coding errors in C programs. This book introduces you to lint, guides you through running it on your programs, and helps you to interpret lint's output.

lint verifies a program or program segments against standard libraries, checks the code for common portability errors, and tests the programming against some tried and true guidelines. linting your code is a necessary (though not sufficient) step in writing clean, portable, effective programs.

Contents include:

  • Overview of using lint
  • Dealing with lint' concerns: casting and delinting
  • lint comments
  • Using lint in detail: command line options, using lint with make, rolling your own lint library
  • Public domain programs
  • Under the hood: an inside look
  • Future directions


Learning Cocoa with Objective-C

£19.96
Image of Learning Cocoa with Objective-C

James Duncan Davidson and Apple Computer, Inc.; ISBN: 0-596-00301-3

Learning Cocoa with Objective-C is the "must-have" book for people who want to develop applications for Mac OS X, and is the only book approved and reviewed by Apple engineers. Based on the Jaguar release of Mac OS X 10.2, this new edition of Learning Cocoa covers the latest updates to the Cocoa frameworks, including examples that use the Address Book and Universal Access APIs. Also included with this edition is a handy quick reference card, charting Cocoa's Foundation and AppKit frameworks, along with an Appendix that includes a listing of resources essential to any Cocoa developer--beginning or advanced.

Completely revised and updated, this new edition begins with some simple examples to familiarize you with the basic elements of Cocoa programming as well Apple's Developer Tools, including Project Builder and Interface Builder.

After introducing you to Project Builder and Interface Builder, it brings you quickly up to speed on the concepts of object-oriented programming with Objective-C, the language of choice for building Cocoa applications. From there, each chapter presents a different sample program for you to build, with easy to follow, step-by-step instructions to teach you the fundamentals of Cocoa programming. The techniques you will learn in each chapter lay the foundation for more advanced techniques and concepts presented in later chapters.

You'll learn how to:

  • Effectively use Apple's suite of Developer Tools, including Project Builder and Interface Builder
  • Build single- and multiple-window document-based applications
  • Manipulate text data using Cocoa?s text handling capabilities
  • Draw with Cocoa
  • Add scripting functionality to your applications
  • Localize your application for multiple language support
  • Polish off your application by adding an icon for use in the Dock, provide Help, and package your program for distribution

Each chapter ends with a series of Examples, challenging you to test your newly-learned skills by tweaking the application you've just built, or to go back to an earlier example and add to it some new functionality. Solutions are provided in the Appendix, but you're encouraged to learn by trying.

Extensive programming experience is not required to complete the examples in the book, though experience with the C programming language will be helpful. If you are familiar with an object-oriented programming language such as Java or Smalltalk, you will rapidly come up to speed with the Objective-C language. Otherwise, basic object-oriented and language concepts are covered where needed.



Mastering Algorithms with C

£22.80
Image of Mastering Algorithms with C

Kyle Loudon; ISBN: 1-56592-453-3

There are many books on data structures and algorithms, and some books laying out useful libraries of C functions, but this book aims to give you a unique combination of theoretical background and working code. In offering robust solutions for everyday programming tasks,

Mastering Algorithms with C avoids the abstract style of most classic data structures and algorithms texts but still provides all the information you need to understand the purpose and use of common programming techniques.

Implementations, as well as interesting, real-world examples of each data structure and algorithm, are shown in the text. Full source code appears on the accompanying disk.

Using both a programming style and a writing style that are exceptionally clean, Kyle Loudon shows you how to use such essential data structures as lists, stacks, queues, sets, trees, heaps, priority queues, and graphs. He shows you how to use algorithms for sorting, searching, numerical analysis, data compression, data encryption, common graph problems, and computational geometry. He also describes the relative efficiency of all implementations. The compression and encryption chapters not only give you working code for reasonably efficient solutions, they explain concepts in an approachable manner for people who never have had the time or expertise to study them in depth.

Anyone with a basic understanding of the C language can use this book. In order to provide maintainable and extendible code, an extra level of abstraction (such as pointers to functions) is used in examples where appropriate. Understanding that these techniques may be unfamiliar to some programmers, Loudon explains them clearly in the introductory chapters.

Contents include:

  • Pointers
  • Recursion
  • Analysis of algorithms
  • Data structures (lists, stacks, queues, sets, hash tables, trees, heaps, priority queues, graphs)
  • Sorting and searching
  • Numerical methods
  • Data compression
  • Data encryption
  • Graph algorithms
  • Geometric algorithms


Objective-C Pocket Reference

£5.56
Image of Objective-C Pocket Reference

Andrew M. Duncan; ISBN: 0-596-00423-0

Objective-C is an exciting and dynamic approach to C-based object-oriented programming; it's the approach adopted by Apple as the foundation for programming under Mac OS X, a Unix-based operating system gaining wide acceptance among programmers and other technologists. Objective-C is easy to learn and has a simple elegance that is a welcome breath of fresh air after the abstruse and confusing C++. To help you master the fundamentals of this language, you'll want to keep the Objective-C Pocket Reference close at hand. This small book contains a wealth of valuable information to speed you over the learning curve.

In this pocket reference, author Andrew Duncan provides a quick and concise introduction to Objective-C for the experienced programmer. In addition to covering the essentials of Objective-C syntax, Andrew also covers important faces of the language such as memory management, the Objective-C runtime, dynamic loading, distributed objects, and exception handling.

O'Reilly's Pocket References have become a favorite among programmers everywhere. By providing important details in a succinct, well-organized format, these handy books deliver just what you need to complete the task at hand. When you've reached a sticking point in your work and need to get to a solution quickly, the new Objective-C Pocket Reference is the book you'll want to have.



Power Programming with RPC

£16.76
Image of Power Programming with RPC

John Bloomer; ISBN: 0-937175-77-3

RPC, or remote procedure calling, is the ability to distribute parts of a program to other computers on a network. An RPC facility manages the exchange of data between computers to make remote execution tranparent to the user. Distributed applications based on RPC can utilize distributed network resources and increase significantly the computing power brought to bear on complex problems. An RPC facility is the fundamental element of a distributed computing environment.

The book builds a working understanding of RPC programming through examples. Sun RPC, the de facto standard on UNIX systems, is covered in detail. Interprocess communication and other related UNIX programming topics are also covered.

The standard-issue RPC documentation is difficult to understand and lacks real-world examples. There are, in addition, many techniques to learn. This book, written from a programmer's perspective, shows you what you can do with RPC and presents a framework for learning it.

Contents include:

  • Foundations of remote procedure calling; what it is, how it works, and which vendors support it.

  • What RPC offers to application and product developers.

    How RPC fits into a distributed computing environment.

  • ONC and DCE, a comparison of their similarities and differences.

  • How to develop, debug, and deploy networked applications.

  • Understanding the interprocess control (IPC) mechanisms on which RPC is based.

  • Using remote procedure calling in parallel/distributed processing and scheduling.

  • Using remote procedure calling with windowing systems.

  • Examples of distributed applications using both single and multiple concurrent servers.



Practical C Programming, 3rd Edition

£19.96
Image of Practical C Programming, 3rd Edition

Steve Oualline; ISBN: 1-56592-306-5

There are lots of introductory C books, but this is the first one that has the no-nonsense, practical approach that has made Nutshell Handbooks(R) famous.

C programming is more than just getting the syntax right. Style and debugging also play a tremendous part in creating programs that run well and are easy to maintain. This book teaches you not only the mechanics of programming, but also describes how to create programs that are easy to read, debug, and update.

Practical rules are stressed. For example, there are fifteen precedence rules in C (&& comes before || comes before ?:). The practical programmer reduces these to two:

  • Multiplication and division come before addition and subtraction.

Contrary to popular belief, most programmers do not spend most of their time creating code. Most of their time is spent modifying someone else's code. This books shows you how to avoid the all-too-common obfuscated uses of C (and also to recognize these uses when you encounter them in existing programs) and thereby to leave code that the programmer responsible for maintenance does not have to struggle with. Electronic Archaeology, the art of going through someone else's code, is described.

This third edition introduces popular Integrated Development Environments on Windows systems, as well as UNIX programming utilities, and features a large statistics-generating program to pull together the concepts and features in the language.



Practical C++ Programming, 2nd Edition

£22.80
Image of Practical C++ Programming, 2nd Edition

Steve Oualline; ISBN: 0-596-00419-2

C++ is a powerful, highly flexible, and adaptable programming language that allows software engineers to organize and process information quickly and effectively. But this high-level language is relatively difficult to master, even if you already know the C programming language.

The 2nd edition of Practical C++ Programming is a complete introduction to the C++ language for programmers who are learning C++. Reflecting the latest changes to the C++ standard, this 2nd edition takes a useful down-to-earth approach, placing a strong emphasis on how to design clean, elegant code.

In short, to-the-point chapters, all aspects of programming are covered including style, software engineering, programming design, object-oriented design, and debugging. It also covers common mistakes and how to find (and avoid) them. End of chapter exercises help you ensure you've mastered the material.

Practical C++ Programming thoroughly covers:

  • C++ Syntax
  • Coding standards and style
  • Creation and use of object classes
  • Templates
  • Debugging and optimization
  • Use of the C++ preprocessor
  • File input/output

Steve Oualline's clear, easy-going writing style and hands-on approach to learning make Practical C++ Programming a nearly painless way to master this complex but powerful programming language.



Programming with GNU Software

£22.80
Image of Programming with GNU Software

Andy Oram and Mike Loukides; ISBN: 1-56592-112-7

The promise of having control over their environment draws programmers to UNIX. It offers powerful tools for the initiated within an operating system that can be customized and tuned in almost unlimited ways. Programmers use UNIX because it lets them do what they want. And they like to see the source code for the software they work with.

So it's no surprise the most popular programming tools on UNIX are free. They're easy to get, easy to customize, and better than many tools put out by vendors. They also offer a great deal of power. And the source code is publicly available.

This book and CD combination is a complete package for programmers who are new to UNIX or who would like to make better use of the system. The tools come from Cygnus Support, Inc., and Cyclic Software, companies that provide support for free software. The tools on the CD include:

  • GNU Emacs, the legendary text editor
  • gcc, the C and C++ compiler that immediately established itself as the best UNIX compiler for robustness and optimization
  • GNU libraries (including C++ libraries)
  • The gdb debugger
  • RCS, a tool for backing up and maintaining multiple versions of source files
  • GNU make, the most powerful version of that utility for managing builds

The book provides an introduction to all these tools for a C programmer. Previous experience with UNIX is not required.

The CD-ROM in this book contains binaries for several popular UNIX systems, including Sun SPARC4 running SunOS 4.1.3, Sun SPARC4 running Solaris 2.4, HP 9000/700 running HPUX, IBM RS/6000 running AIX 3, SGI Iris/Indigo running Irix 5.3, and Alpha running Digital UNIX. Complete source code and scripts for configuration, building, and installation are also included.



STL Pocket Reference

£5.56
Image of STL Pocket Reference

Ray Lischner; ISBN: 0-596-00556-3

The STL Pocket Reference describes the functions, classes, and templates in that part of the C++ standard library often referred to as the Standard Template Library (STL). The STL encompasses containers, iterators, algorithms, and function objects, which collectively represent one of the most important and widely used subsets of standard library functionality.

The C++ standard library, even the subset known as the STL, is vast. It's next to impossible to work with the STL without some sort of reference at your side to remind you of template parameters, function invocations, return types--indeed, the entire myriad of details you need to know in order to use the STL effectively and get work done. You need a memory-aid.

Books that cover the standard library and the STL tend to be quite heavy and large, describing each aspect of the STL in detail. Such books are great when you're not familiar with the library, but get in the way when you simply need to remind yourself of a function name, or the order in which you pass arguments to a function. Programmers familiar with the STL need a small, lightweight memory-aid. That's what the STL Pocket Reference is. It's small, lightweight, and chock-full of information that you can take in at a glance, so you can get on with your work.



Secure Coding: Principles & Practices

£16.76
Image of Secure Coding: Principles & Practices

Mark G. Graff and Kenneth R. van Wyk; ISBN: 0-596-00242-4

Practically every day, we read about a new type of attack on computer systems and networks. Viruses, worms, denials of service, and password sniffers are attacking all types of systems -- from banks to major e-commerce sites to seemingly impregnable government and military computers --at an alarming rate.

Despite their myriad manifestations and different targets, nearly all attacks have one fundamental cause: the code used to run far too many systems today is not secure. Flaws in its design, implementation, testing, and operations allow attackers all-too-easy access.

Secure Coding, by Mark G. Graff and Ken vanWyk, looks at the problem of bad code in a new way. Packed with advice based on the authors' decades of experience in the computer security field, this concise and highly readable book explains why so much code today is filled with vulnerabilities, and tells readers what they must do to avoid writing code that can be exploited by attackers. Writing secure code isn't easy, and there are no quick fixes to bad code. To build code that repels attack, readers need to be vigilant through each stage of the entire code lifecycle:

  • Architecture: during this stage, applying security principles such as "least privilege" will help limit even the impact of successful attempts to subvert software.
  • Design: during this stage, designers must determine how programs will behave when confronted with fatally flawed input data. The book also offers advice about performing security retrofitting when you don't have the source code -- ways of protecting software from being exploited even if bugs can't be fixed.
  • Implementation: during this stage, programmers must sanitize all program input (the character streams representing a programs' entire interface with its environment -- not just the command lines and environment variables that are the focus of most security analysis).
  • Testing: during this stage, programs must be checked using both static code checkers and runtime testing methods -- for example, the fault injection systems now available to check for the presence of such flaws as buffer overflow.
  • Operations: during this stage, patch updates must be installed in a timely fashion. In early 2003, sites that had diligently applied Microsoft SQL Server updates were spared the impact of the Slammer worm that did serious damage to thousands of systems.

Beyond the technical, Secure Coding sheds new light on the economic, psychological, and sheer practical reasons why security vulnerabilities are so ubiquitous today. It presents a new way of thinking about these vulnerabilities and ways that developers can compensate for the factors that have produced such unsecured software in the past. It issues a challenge to all those concerned about computer security to finally make a commitment to building code the right way.



Secure Programming Cookbook for C and C++

£28.40
Image of Secure Programming Cookbook for C and C++

John Viega and Matt Messier; ISBN: 0-596-00394-3

Password sniffing, spoofing, buffer overflows, and denial of service: these are only a few of the attacks on today's computer systems and networks. At the root of this epidemic is poorly written, poorly tested, and insecure code that puts everyone at risk. Clearly, today's developers need help figuring out how to write code that attackers won't be able to exploit. But writing such code is surprisingly difficult.

Secure Programming Cookbook for C and C++ is an important new resource for developers serious about writing secure code. It contains a wealth of solutions to problems faced by those who care about the security of their applications. It covers a wide range of topics, including safe initialization, access control, input validation, symmetric and public key cryptography, cryptographic hashes and MACs, authentication and key exchange, PKI, random numbers, and anti-tampering. The rich set of code samples provided in the book's more than 200 recipes will help programmers secure the C and C++ programs they write for both Unix (including Linux) and Windows environments. Readers will learn:

  • How to avoid common programming errors, such as buffer overflows, race conditions, and format string problems

  • How to properly SSL-enable applications

  • How to create secure channels for client-server communication without SSL

  • How to integrate Public Key Infrastructure (PKI) into applications

  • Best practices for using cryptography properly

  • Techniques and strategies for properly validating input to programs

  • How to launch programs securely

  • How to use file access mechanisms properly

  • Techniques for protecting applications from reverse engineering

    The book's web site supplements the book by providing a place to post new recipes, including those written in additional languages like Perl, Java, and Python. Monthly prizes will reward the best recipes submitted by readers.

    Secure Programming Cookbook for C and C++ is destined to become an essential part of any developer's library, a code companion developers will turn to again and again as they seek to protect their systems from attackers and reduce the risks they face in today's dangerous world.



Writing Apache Modules with Perl and C

£22.80
Image of Writing Apache Modules with Perl and C

Lincoln Stein and Doug MacEachern; ISBN: 1-56592-567-X

Apache is the most popular web server on the Internet because it is free, reliable, and extensible. The availability of the source code and the modular design of Apache makes it possible to extend web server functionality through the Apache API.

For the most part, however, the Apache API has only been available to C programmers, and requires rebuilding the Apache server from source. mod_perl, the popular Apache module used primarily for enhanced CGI performance, changed all that by making the Apache API available to Perl programmers. With mod_perl, it becomes simple to develop Apache modules with Perl and install them without having to rebuild the web server.

Writing Apache Modules with Perl and C shows how to extend web server capabilities regardless of whether the programming language is Perl or C. The book explains the design of Apache, mod_perl, and the Apache API. It then demonstrates how to use them to perform for tasks like the following:

  • Rewriting CGI scripts as Apache modules to vastly improve performance
  • Server-side filtering of HTML documents, to embed special markup or code (much like SSI)
  • Enhancing server log functionality
  • Converting file formats on the fly
  • Implementing dynamic navigation bars
  • Incorporating database access into CGI scripts
  • Customizing access control and authorization to block robots or to use an external database for passwords

The authors are Lincoln Stein and Doug MacEachern. Lincoln is the successful author of How to Set Up and Maintain a World Wide web Site and the developer of the widely used Perl CGI.pm module. Doug is a consultant and the creator of the innovative mod_perl Apache module.