Dr. Dobb's Blogs http://www.drdobbs.com//author/6839 Dr. Dobb's Copyright 2013, United Business Media. en-us Increasing Compiler Speed by Over 75% http://www.drdobbs.com/cpp/increasing-compiler-speed-by-over-75/240158941 D is designed to be a language that is amenable to fast compilation. Thu, 25 Jul 2013 07:10:00 -0400 Implementing Half Floats in D http://www.drdobbs.com/cpp/implementing-half-floats-in-d/240146674 D offers a set of features, the confluence of which enables the creation of user-defined types that work well enough to take the pressure off of adding more built-in types. Sat, 19 Jan 2013 11:47:00 -0500 Porting the D Compiler to Win64 http://www.drdobbs.com/cpp/porting-the-d-compiler-to-win64/240144208 64-bit Windows was the last major x86 platform that the dmd compiler didn't support, so last summer my colleagues and I decided it was past due. Tue, 11 Dec 2012 05:40:00 -0500 NaNs Just Don't Get No Respect http://www.drdobbs.com/cpp/nans-just-dont-get-no-respect/240005723 The D programming language has elevated NaNs to a significant role, and I'll try to show how they can be very useful. Thu, 16 Aug 2012 17:37:00 -0400 Voldemort Types In D http://www.drdobbs.com/cpp/voldemort-types-in-d/232901591 Sometimes, the confluence of existing features can yield unexpected surprises. Mon, 07 May 2012 19:34:00 -0400 Uniform Function Call Syntax http://www.drdobbs.com/cpp/uniform-function-call-syntax/232700394 I have become more and more convinced that the key to code reusability and scalability is encapsulation &mdash; having subsystems communicate through small, well-defined interfaces and letting them hide their own implementation details. Wed, 28 Mar 2012 06:31:00 -0400 Inheriting Purity http://www.drdobbs.com/cpp/inheriting-purity/232601305 Pure functions are an essential characteristic of functional programming, and their value is widely recognized. Wed, 22 Feb 2012 18:16:00 -0500 Targeting OS X 64 Bit http://www.drdobbs.com/parallel/targeting-os-x-64-bit/232301070 A while back, I targeted the D programming language compiler to generate 32-bit code for OS X, and 64-bit code for Linux. For the last several years, all Mac OS X machines include 64-bit CPUs, so the obvious next step is to target 64-bit code for OS X. Tue, 27 Dec 2011 08:24:00 -0500 Reading PDFs on the Kindle Fire http://www.drdobbs.com/mobile/reading-pdfs-on-the-kindle-fire/232200675 I've read a lot of reviews of the Kindle Fire, and they don't discuss something very important to me &mdash; reading PDF files on the Fire Fri, 02 Dec 2011 16:29:00 -0500 Type Qualifiers and Wild Cards http://www.drdobbs.com/cpp/type-qualifiers-and-wild-cards/231902461 Type qualifiers are modifiers applied to data types. Mon, 07 Nov 2011 05:47:00 -0500 Dangling Else, Yet Again http://www.drdobbs.com/cpp/dangling-else-yet-again/231602010 The so-called "dangling else" problem is a perennial one that comes up when designing a programming language. Thu, 22 Sep 2011 12:45:00 -0400 Member Function Pointers in D http://www.drdobbs.com/cpp/member-function-pointers-in-d/231600610 Lambda functions are incredibly powerful, and for those not used to them, they continue to surprise and delight in what they can do in a simple, straightforward manner. Wed, 31 Aug 2011 19:41:00 -0400 Inline Assembler for &Uuml;ber Nerds http://www.drdobbs.com/tools/inline-assembler-for-uumlber-nerds/231002363 Inline assembler (IA) is the practice of embedding assembly language instructions in a high-level programming language's source code, and is an early example of an EDSL (Embedded Domain Specific Language). Thu, 21 Jul 2011 14:22:00 -0400 Implementing Pure Functions http://www.drdobbs.com/tools/implementing-pure-functions/230700070 Functional programming enthusiasts have long understood the benefits of pure functions &mdash; excellent encapsulation, low cognitive load, threadsafe, and so on. Wed, 15 Jun 2011 12:19:00 -0400 User-Defined Literals in the D Programming Language http://www.drdobbs.com/tools/user-defined-literals-in-the-d-programmi/229401068 While programming languages allow the user to define his own types, functions, and variable names, it's pretty rare to allow defining one's own literals. It sure would be nice to be able to do so to go with defining types. Wed, 06 Apr 2011 08:11:00 -0400 Value Range Propagation http://www.drdobbs.com/tools/value-range-propagation/229300211 Systems programming languages come with a menagerie of integer types. There's usually one for each of small power of 2 byte sizes, with signed and unsigned flavors. Twos-complement arithmetic has some... Tue, 22 Feb 2011 20:15:30 -0500 Patterns of Bugs http://www.drdobbs.com/architecture-and-design/patterns-of-bugs/229300208 I spent the first three years of my career working on flight critical mechanical designs for the Boeing 757. Although these were gearboxes, hydraulics, cables and linkages, the methodology used to mak... Wed, 05 Jan 2011 19:00:27 -0500 Loop Optimizations http://www.drdobbs.com/loop-optimizations/229300270 Loops come in many forms, but a typical one looks like: <code> for (int i = 0; i < 10; i++) statement; </code> For us non-functional programmers, loops are one of the ubiquitous building blocks of our source code. Fri, 26 Nov 2010 14:56:53 -0500 Overlooked Essentials For Optimizing Code http://www.drdobbs.com/parallel/overlooked-essentials-for-optimizing-cod/228701528 I've been programming for 35 years now, and I've done a lot of work optimizing programs for speed (<a href="http://biolpc22.york.ac.uk/wx/wxhatch/wxMSW_Compiler_choice.html">an example</a>), and watching others optimize. Two essential techniques are consistently ignored. Nope, it isn't avoiding premature optimization. It isn't replacing bubble sort with quicksort (i.e. algorithmic improvements). It's not what language used, nor is it how good the compiler is. It isn't writing i<<2 instead of i*4. Thu, 09 Sep 2010 20:28:31 -0400 C++ Compilation Speed http://www.drdobbs.com/cpp/c-compilation-speed/228701711 There are many reasons why C++ compiles so slowly Mon, 16 Aug 2010 23:07:22 -0400 One Wire to Rule Them All http://www.drdobbs.com/architecture-and-design/one-wire-to-rule-them-all/228700190 One thing about the <em>way things ought to be</em> has been bugging me for years. Finally, it is about to catch on and become reality. Read on... Sat, 17 Jul 2010 11:01:47 -0400 The X Macro http://www.drdobbs.com/cpp/the-x-macro/228700289 I learned this technique over 30 years ago from friends of mine in college. It was for assembler language macros, but survived the transition to C macros easily. I've used it regularly since, but interestingly have never seen anyone else use it. That makes it my turn to pass along this little gem. Thu, 24 Jun 2010 13:50:10 -0400 Constrained Templates http://www.drdobbs.com/tools/constrained-templates/228701822 Templates have evolved from humble beginnings as "parameterized types" to a startlingly powerful abstraction tool. Naturally, this abstraction ability gets pushed hard, and gaps and weaknesses show up. Template constraints in the D programming language plug one of those gaps in a simple, intuitive way. Sat, 12 Jun 2010 14:33:54 -0400 Improving Compiler Error Messages http://www.drdobbs.com/tools/improving-compiler-error-messages/228700752 Compiler error messages are often an afterthought of compiler writers, focusing instead on compilation speed and the performance of compiled code. But the error messages have a strong influence on the day to day usability of a compiler, and are often a source of derision and frustration. Sat, 01 May 2010 09:42:11 -0400 Flying to England on a Rocket http://www.drdobbs.com/architecture-and-design/flying-to-england-on-a-rocket/228701225 Not really, but it's what my 3 year old brother allegedly said when on a transatlantic flight to London. I haven't been traveling in a while, and recently attended the ACCU 2010 conference in Oxford, England. While there, the volcano blew and I got to spend an extra week, which I decided to spend in London. Fri, 23 Apr 2010 11:32:13 -0400