Bookshelf
These are some selections of books and specifications of general interest for programming and of specific interest to Digital Mars compilers.
D Programming Language
The D Programming Language Andrei Alexandrescu Errata |
D Programming Language Specification |
D Cookbook Adam D. Ruppe |
Learn to Tango with D Kris Bell, Lars Ivar Igesund, Sean Kelly and Michael Parker |
D Language Perfect Guide |
Digital Mars C++
Compiler and Tools Guide |
Runtime Library Reference |
User's Guide and Reference |
C++
The C++ Programming Language Bjarne Stroustrup Errata |
Effective C++ Third Edition Scott Meyers Errata |
Modern C++ Design Andrei Alexandrescu Groundbreaking book on C++ template metaprogramming. Author's page |
Cross-Platform GUI Programming with wxWidgets Julian Smart, Kevin Hock, Stefan Csomor, Errata |
C++ Templates: The Complete Guide David Vandevoorde, Nicolai M. Josuttis Detailed tutorial and reference on C++ templates. Author's page |
Imperfect C++ : Practical Solutions for Real-Life Programming Matthew Wilson Practical techniques and tools for writing code that's more robust, flexible, efficient, and maintainable. Author's page |
Thinking in C++, Vol. 2: Practical Programming Bruce Eckel, Chuck Allison Advanced techniques using the full power of C++. Author's page |
Object-Oriented Software Construction Bertrand Meyer Opus on the theory and practice of writing object-oriented software. Especially useful for explaining the ideas of design by contract. |
Effective C++ Cd : 85 Specific Ways to Improve Your Programs and Designs Scott Meyers Well-regarded book loaded with techniques on writing C++. Errata |
Programming: Principles and Practice Using C++ Bjarne Stroustrup |
C++ Primer Plus Stephen Prata |
C++ How to Program Paul J. Deitel, Harvey M. Deitel |
ISO/IEC 14882-1998
"Information Technology - Programming Languages - C++"
This is the C++ international standard, also known as C++98.
Standard Template Library
The C++ Standard Library: A Tutorial and Reference Nicolai M. Josuttis The best introduction to the subject. Author's page |
Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library Scott Meyers How to take advantage of the STL to write efficient and effective programs. Errata |
C
-
"Programming Languages - C",
ANSI/ISO/IEC 9899-1999
This is the C international standard, also known as C99.
The C Programming Language Brian W. Kernighan, Dennis M. Ritchie Answers to exercises. |
Expert C Programming Peter van der Linden Errata, missing proof, and code examples. |
C Traps and Pitfalls Andrew Koenig Written for intermediate and advanced C programmers, contains a detailed discussion of common C programming problems. |
Standard C: A Reference P. J. Plauger and Jim Brodie A guide to writing C programs that conform to the ANSI C standard. Both authors were officers of the committee that drafted the ANSI standard. Online version |
C: A Software Engineering Approach Peter Darnell and Philip Margolis An introduction to the C programming language. This book is ideal for new C programmers who have programmed in other languages. |
C: A Reference Manual Samuel Harbison and Guy Steele, Jr. Contains a detailed and authoritative discussion of the syntax, meaning, and idiomatic usage of ANSI Standard C. |
Compilers
Engineering a Compiler : Vax-II Code Generation and Optimization Patricia Anklam, David Cutler, Jr. Roger Heinen, M. Donald MacLaren An old book, but a classic one on pragmatic efforts to write an optimizing compiler. |
Compilers : Principles, Techniques, and Tools Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman This is still the classic book on compiler writing. Errata |
Garbage Collection : Algorithms for Automatic Dynamic Memory Management Richard Jones, Rafael D Lins Everything you ever wanted to know about garbage collection collected into one tome. Errata |
Floating Point
-
Computer Approximations
John F. Hart et al, Krieger Publishing Company, ISBN 0-88275-642-7
From the Introduction: "This handbook is intended to acquaint the user with methods for designing function subroutines (also called mathematical function routines), and in the case of the most commonly needed functions, to provide him with the necessary tables to do so efficiently."
Here's a review.
Software Manual for the Elementary Functions
William James Cody, Prentice Hall
Classic cookbook for implementing transcendental functions. It's of less
relevance these days since it's done in hardware, but it's still good
if what you need isn't in hardware, or if you really are interested in
how it works.
IEEE Standard for Binary Floating-Point Arithmetic
ANSI/IEEE Std 754-1985
The Institute of Electrical and Electronics Engineers, Inc.
345 East 47th Street, New York, NY 10017, USA
"Floating Point C Extensions", NCEG 91-015
8087/80287/80387 For the IBM PC and Compatibles :
Applications and Programming With Intel's Math Coprocessors
Richard Startz, Brady Books, ISBN 0-13-246604-X
Excellent explanation of how to use the math coprocessors to
maximum advantage.
Prof. William Kahan's home page
An invaluable resource for writing
correct floating point code.
Numerical Recipes in C
William Press, Brian Flannery, Saul Teukolsky, and William Vetterling
(Cambridge University Press)
A detailed technical description of
numerical methods with implementation examples in C.
32 Bit Windows Programming
-
Advanced Windows
Jeffrey Richter
Microsoft Press
Richter's classic book on system programming for Win32.
Inside OLE
Kraig Brockschmidt
Microsoft Press
Writing COM programs.
Mastering the Mfc for Windows 95 Using Symantec C++
Richard O. Parker
International Thomson Publishing; ISBN: 1850328501
Windows Undocumented File Formats; Working Inside 16- and 32- bit Windows
Pete Davis, Mike Wallace
CMP Books; ISBN: 0879304375
16 Bit Windows Programming
-
Programming Windows 3.1, Third Edition
Charles Petzold
Microsoft Press
ISBN 1-55615-395-3
Advanced Windows Programming, Martin Heller (John Wiley & Sons, Inc., 1992)
Builds on Petzold's Programming Windows 3.1.
Windows++, Writing Reusable Windows Code in C++,
Paul DiLascia (Addison-Wesley, 1992)
Discusses a lightweight
application framework for Windows using C++ that the
author developed for his own applications. This book
also provides insight into using C++ to improve
Windows programming productivity.
Undocumented Windows
Andrew Schulman
Addison-Wesley
ISBN 0-201-60834-0
Writing Windows Device Drivers
Daniel A. Norton
Addison-Wesley
ISBN 0-201-57795-X
Windows Programmer's Guide to DLLs and Memory Management,
Mike Klein (SAMS, A division of Prentice Hall Computer Publishing)
In-depth coverage of designing and building DLLs and how
memory is managed in the Windows 3.1 environment.
Graphics
-
ZEN of Graphics Programming
Michael Abrash
Coriolis Group Books
ISBN 1-883577-08-X
Assembly Language
-
ZEN of Code Optimization
Michael Abrash
Coriolis Group Books
ISBN 1-883577-03-9
"Pentium Processor User's Manual, Volume 3: Architecture and Programming Manual"
Intel Literature Sales
PO Box 7641
Mt. Prospect, IL 60056-7641
1-800-548-4725
File Formats
-
Understanding and Using COFF
The COFF file format, used for .obj files under unix and NT operating systems.
"CV4 Symbolic Debug Information Specification"
Languages Business Unit, Microsoft
"Microsoft Object Mapping Specification"
Languages Business Unit, Microsoft
"The Microsoft Object Module Format (OMF)"
Languages Utilities Group, Microsoft
Other Languages
-
Python Essential Reference (Second Edition)
David M. Beazley
Programming Perl (3rd Edition)
Larry Wall, Tom Christiansen, Jon Orwant
Development
Historical Interest
-
The Annotated C++ Reference Manual
(ARM)
Margaret A. Ellis, Bjarne Stroustrup
Addison-Wesley Pub Co; ISBN: 0201514591
Additional information.
Applying Zortech C++
Scott Robert Ladd
Programming in Zortech C++-With Version 2
John M. Hughes
C++ IOStreams Handbook
Steve Teale (Addison-Wesley)
A comprehensive, detailed explanation
of the standard input and output library used in C++.
Slightly dated, but still highly regarded for those who really
want to understand iostreams.
Portability and the C Language
Rex Jaeschke
Covers writing portable C programs and is
suitable for advanced C programmers. It provides
guidelines on writing programs that can be compiled
with different compilers and run on multiple platforms. It
points out changes introduced with ANSI C. It is useful if
you port code from one platform to another or from an
old (pre-ANSI) version of Zortech to Digital Mars C++.
Portable C Software
Mark R. Horton
About writing portable C programs, but emphasizes
porting among C compilers for UNIX and MS-DOS.