According to the Digital Mars D FAQ:
Why is [expletive deleted] printf in D?
printf is not typesafe. It's old fashioned. It's not object-oriented. It's not usable with user-defined types. printf is guilty as charged. But it's just so darned useful. Nothing beats it for banging out a quick dump of a value when debugging.
Note: printf is actually not really part of D anyway, but since D provides easy access to C's runtime library, D gets it when needed.
See also HowTo/printf for a list of format specifiers and usage tips.