Home - C

Product Details

Binding:

Kindle Edition

EAN:
Label:

Addison-Wesley Professional

Feature:
Publisher:

Addison-Wesley Professional

Studio:

Addison-Wesley Professional

Editorial Reviews

D is a programming language built to help programmers address the challenges of modern software development. It does so by fostering modules interconnected through precise interfaces, a federation of tightly integrated programming paradigms, language-enforced thread isolation, modular type safety, an efficient memory model, and more.

 

The D Programming Language is an authoritative and comprehensive introduction to D. Reflecting the author’s signature style, the writing is casual and conversational, but never at the expense of focus and pre?cision. It covers all aspects of the language (such as expressions, statements, types, functions, contracts, and modules), but it is much more than an enumeration of features.

 

Inside the book you will find

  • In-depth explanations, with idiomatic examples, for all language features
  • How feature groups support major programming paradigms
  • Rationale and best-use advice for each major feature
  • Discussion of cross-cutting issues, such as error handling, contract programming, and concurrency
  • Tables, figures, and “cheat sheets” that serve as a handy quick reference for day-to-day problem solving with D

Written for the working programmer, The D Programming Language not only introduces the D language—it presents a compendium of good practices and idioms to help both your coding with D and your coding in general.

Customer Reviews

This book is one of the things D really needed to launch itself out of obscurity. It thoroughly explains the strengths of the language, why it is a practical language to learn and use, and it walks you through the more complex aspects of the language such as meta programming and concurrency/threading (which is often overlooked). As others have stated, it would be nice to have more real world examples - but then again, I never liked the books that have 5 out of 6 pages completely filled with code. This book is a good introduction to the rich toolset D provides - it's up to you to dig in and get experienced.
I've been using D regularly for about 2 years. When I heard about this book, I bought it more out of curiosity than anything. I was pleasantly surprised when this book revealed facets of D that I had not been aware of through two years of usage, library writing and forum surfing. Andrei's entertaining yet to-the-point style makes this a pleasant read, and he manages to cover both basic and advanced topics thoroughly yet succinctly.
First, a little context. I've been around the D community for a few years, keep a blog about items of interest to D users, maintain an open source D project and, in 2007, coauthored "Learn to Tango with D". Through all of that, the majority of my experience was with D1. I was hesitant, even reluctant, to use version 2 of the language because, in some ways, it is a bit paradigm shift from the first version. Andrei's book has dispelled any doubts I had about moving forward with D2.

D2 melds several different programming paradigms into one whole. One of the most radical differences from existing C-family languages is the concept of 'ranges', which are intended as an improvement over, and replacement for, the more familiar 'iterators' of other languages. Before the book, while ranges were being implemented in the alpha versions of the D2 compiler, some people had trouble wrapping their heads around ranges. Here, Andrei explains them in a way that makes them easy to grok and will have you using them in no time. And it's important that you do understand them as Phobos, D's standard library (which is intentionally not given much coverage in the book) has been reworked around the concept.

Aside from ranges and the more basic features of D which aren't so foreign, you'll also learn about D's interpretation of constness and immutability (D's const and immutable keywords are intended to improve upon the mess that is C++ const), and the D style of concurrent programming. D is poised to slot seamlessly in to the world of multi-core programming, with built-in features that simplify the process for those, like me, who can't think on that scale. Andrei's explanation of concurrency pitfalls and D's solutions should turn a light on for you if you're in the dark about it.

I've highlighted these particular aspects of the book because they are the areas about which I was most uncertain before reading it. But the entire book is well written, witty and easy to read. If you've never written a line of D in your life, you should have no trouble doing so after reading this book. I can't begin to speculate how much a beginning programmer might get out of it, but I would certainly recommend it to anyone who has at least a basic familiarity with another language from the C family. Andrei has that rare gift of taking potentially boring or complicated material and making it not only digestable, but fun.
This book is excellent and you should buy it right now.

I found it eminently readable, thanks in no small part to the delicate balance the author strikes between precise technical writing and entertainment. I find myself wishing that every programming book could have sections entitled "Shenanigans" or "Concurrentgate" and still manage to contain such dense, high-quality information.

I was completely drawn in by TDPL, and read the entire book in one sitting. Several times during the read I grew concerned that D was missing something vital (Forced reference semantics for objects? But that means I can't do C++ style RAII! This language sucks!) only to have the author directly address my problem and provide the solution in the subsequent chapter (In this case, structs with forced value-semantics saved the day, as did the really neat scope keyword).

The only criticism I can offer is that there were a few errors in the text; it would be worth your time to scan the errata before, after, or during your read, located at [...] Since these didn't detract from my enjoyment of the book or from its value as a D language reference, I still feel comfortable giving it 5 stars.

I'll repeat, buy this book. You'll be glad you did.
I started to read the book just because I was curious about the language. I was taught C++ at University and I've used it for years (and still use it even for my pet projects).
The book is very well-written and everything is explained crystal clear. The author has a flair for explaining things. I also read "C++ Modern design" from the author, and it's easily the best C++ book I've read together with "The C++ Programming Language" from Bjarne Stroustrup.
I think the language itself has a bright future, so I recommend to anyone that wants to
do systems programming or that simply worries about performance to read this book. This language is the heir of C++.
I hadn't still found a candidate to replace C++, but the D language together with this book is the closest thing I've found to date (and I've been looking for candidates for years). It has MORE powerful templates than
those of C++ and everything that C++ does improved, plus a built-in concurrency model that surpassed my highest expectations. On the down side it's that D is still a young language, so you don't have some powerful libraries that c++ has, like boost.asio, for example.
The only criticism about the language (not the book) from my point of view, is the mandatory
garbage collector, which could be a problem in certain contexts.
All in all, I highly recommend this book and the language itself, which has been designed very carefully. Stop thinking about Google Go, this language is the future as a general purpose language.
This is an excellent reference tome for those who want to learn the D language. It is not really an introductory programming book, but it doesn't claim to be. It's filled with tremendously interesting bits of wisdom from the point of view of a compiler writer as well, which gives the Computer Science student a bit of amusement (Computer Engineers will merely find it interesting).

This certainly rates up with the K&R C book, though it is definitely a more interesting read.
An excellently written book for an introduction to the language. Meant for those that already have a decent grasp of programming already, but does not have to be a masterful grasp. The book is meant as a good read...introduction...here are the "concepts" to the language. This is that book that will to help push "D" out of the realms of obscurity and "Huh?", and into the here, now and wow.

One or two more well written books on D, in particular a "Learning D" book like those from O'Reilly and Apress for a ramping up tutorial... In particular, a re-occuring programming project that continues to show up almost every chapter to keep adding a little more to it based on what you learned in a specific chapter... a "Cookbook", or "Recipits" or "A way of book" for guidance... And a killer App or Framework, and watch out C++, C# and Java. Personally I would love to see that framework be a reimplementation (not a wrapper) of OpenGL and OpenAL.

The Language shows its root and the lessons hard learned from the past. C++ programmers looking for more expressiveness in there code, or Python, Ruby and Perl programmers wanting to get into "System" or "Low Level Application Programming", this is the language for you.

The one thing that this language could use, and soon to help grab developers interest, is an interactive interpreter like the ones in Python and Ruby, to do some live coding for quickly following programming examples from a tutorial web site, or from this, or another, book. And of course, to test out ideas you have without the need to write up a test program and compile it each time you want to experiment.

Get this book! And rate it here!!! The more that get it and give their honest opinion about the language (hopefully a positive one), the sooner we will see the other types of books I mentioned above. I am personally hoping for an Apress "The D programming language: From Novice to Pro", to really start bringing D to the masses. But it all begins here with this masterful Addison Weselly-Profesional publication, by an author that knows the language backwards and forwards, and has a semi-unique yet endearing writing style.
The writing is terse and witty. The author does an excellent job of explaining the reasoning behind why things were done as they were done for the D programming language. He also does a good job of explaining why the D programming language is a better implementation than the C++ language. I liked the terse tabular summaries at the end of most chapters and the writing style. Unlike many books of this type with code examples, the author does not bore you with an explanation of what the code sample does in the body of the book. Instead he uses assert and enforce statements to demonstrate what the code is suppose to do. The book is not a D programming reference book, so if you are looking for one of these, this is not it. However, it is a very good D Language reference book, if you do not know the difference then you probably shouldn't get this book.
It's the first programming book I've been reading that has been truly interesting to read! This book is for someone with some programming background who'd like to learn the D language. The author turns every topic that would be otherwise boring into a funny and interesting read. I really recommend this book for learning D and I also recommend D as a programming language altogether...
If you love programming and are interested in D2, this is the book for you. I picked it up because I think D2 offers a compelling feature set for doing high performance computing while getting some of the productivity gains associated with higher level languages. I have read it cover to cover and keep going back to it as a reference. It's an engaging read and it is packed with really well thought out examples that both explain and entertain. For example, the concurrency chapter is an eye opener, with D2 turning the conventional default shared model on its head, and the discussion of D2's multiple-subtyping (an elegant and safe alternative to multiple inheritance) not only explains the problem and the solution, but also that the groundwork was laid by features first introduced in other languages, such as Java.

As a Java programmer, I find that D2 offers me some of the comforts of home (garbage collection (but with better options for memory management), a similar module structure (package, class, interface) and a similar syntax) while removing constraints and offering many more modern features and different programming paradigms (functional, imperative, object-oriented). It produces native executables and interfaces well with C, which makes it much more suitable for low-level, high performance applications and interfacing with the latest technologies in high performance computing (FPGA, GPU, RDMA, etc.). The language is not without issues, but the pros far outweigh the cons and you have a really smart group of folks behind it, including the creator, Walter Bright, and the author of this book, Andrei Alexandrescu. I highly recommend The D Programming Language.
"The D Programming Language" by Andrei Alexandrescu is a
thorough and well written description of this relatively new,
well-designed and powerful software development paradigm.
The book explains complex language features in a clear and
concise manner and builds understanding of the language
starting from the basic concepts and building up to rather
advanced topics. It is packed with examples and has quite
a few motivational discussions justifying why certain design
decisions were made in creating the language.

The writing is precise for the most part, as one would hope to
find in a definitive work. But it is laced with allegories and
humor that both clarify the content and make it a lighter read
than might be expected. As you can tell, I liked the book.
I came away with a good understanding of the intentions
and capabilities of the "D" language, although I am sure it
will take another pass through the book and a few hands-on
programming projects for me to really feel comfortable with it.
During that learning phase this book will never be far from
my hand.

In the interest of completeness, let me list a few things that
this book is not. It is not a text on how to write programs.
The examples are laser-focused on the language feature being
described, and many of the descriptions start a step or two
above "beginner" level and are somewhat terse. One would do
better with this book coming from a solid software development
background and familiarity with the concepts and terminology
of, for example, object-oriented programming.

Curiously, only a little more than half a year off the
presses, there are aspects of the book that are out of sync
with the existing "D" infrastructure. The canonical "Hello,
World!" program will not compile without changes that align it
with the current run-time support libraries. Also, I have run
across a couple of keywords that don't work quite as described
or are not recognized at all by the current compilers. In this
regard, my guess is that the book is a description of how
"D" should be, and the implementation is trying to catch up.
This is certainly not a fatal flaw and perhaps something to be
expected in a dynamic situation, but try out a feature before
you commit large amounts of effort to it.

My only other caveat is that this first edition is somewhat
lacking as a reference manual. The index needs some work;
entries could at least highlight which of a half-dozen page
references is the primary one. At one point I wanted to
clarify use of the "binary '!'" operator. It took me quite a
while to find it on page 234 under "Parameterized Classes and
Interfaces." Some of the "Summary and Reference" sections at
the end of chapters contain useful tables of statement types
or operator precedence, but there is no "List of Tables" to
guide one to the best reference. I'm sure the next edition
will be much improved as a language reference, in the meanwhile
my copy is full of pencil notes and bookmarks.

Note that I have just started coding in "D" and my comments
should be interpreted in that light. I hope that you have
found this review useful.
I had the book for a couple of weeks but only recently got the time to read it. All I can tell you is that once you pick it up you won't put it down. Whether you are the type of engineer who prefers examples or sound explanations, or whether you want to start fresh with a modern language that provides great new paradigms and tools, this is good place to look. If you are not familiar with array slicing, or template metaprogramming or you want to know why D threads don't share data by default, then you are on the right journey. Highly recommended purchase and read! Ionut-Gabriel Burete
I have received this book as a Christmas gift from my girlfriend (been wanting to read it for quite some time), and I'm really impressed by the language itself (and by Andrei's writing style, but I knew that already).

Since I have a strong C background and have made huge efforts to avoid doing much work in C++ (good language though I have a lot of things that bug me about it), D was just the language I was waiting for in the system programming world. (now granted that with the whole c++0x standard there are a lot of improvements to c++ that I'm willing to reconsider it, keep in mind there's a huge and thriving ecosystem around it). For my particular work D has done marvelous things with assembly, parallelism, array manipulation, mixins having the ability to activate or deactivate the garbage collector and bounds checking.

There are a few things missing, unlike Go there's no big company promoting it. It doesn't have the ecosystem build around C++. And there's no must have piece of software written in D AFAIK (remember linux gained wide spread adoption due to apache). Still not in GCC.

I think there will be an interesting time in system programming land with the new c++, D, (and maybe Go) fighting for the title of the next system programming language. (c1x will also be a good contender if they get the multithreading right).

An excellent introduction to the D programming language by Andrei Alexandrescu. This book gives you many of the "why it was done this way" and "how to do it with the D language". Another great book by Andrei. I would highly recommend this book to anyone interested in learning more about D.
At long last, I got a copy of Andrei's book a couple of days ago. Outstanding! It is so readable and yet no superfluous prose anywhere. Both the book and the language are a tour de force. I highly recommend both. Really. I am going to step up my coverage of D in my senior analysis of languages course.
Great book. missing some small details that test code answers. Overall a great informative book on the language.
After C++, what is next? Java and C# have been very popular.

Enter D programming language. It is original and brand new.

The book is easy to read, for any programmer that was doing
C++, Java, or C#.

It would be better if more real-world examples were given.
I should have looked at the table of contents!
One topic I was hoping for was a clear introduction is how to compile and link. What's it with dm and dmc folders? It's not there!
Thankfully there are some IDE which do the job, but I'm painfully learning how to configure them...
 
Share your thoughts with other customers
Create your own review