Home - C
The D Programming Language
Price: $39.99
& 2-Day * Free Nationwide Shipping! (* details)
Availability: Usually ship in 24 hours if sold by Amazon.com
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
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.
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.
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 certainly rates up with the K&R C book, though it is definitely a more interesting read.
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.
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.
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.
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).
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.
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...
Create your own review



