$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Karl Nelson (kenelson_at_[hidden])
Date: 2002-02-11 14:00:05
> From: James Kanze [mailto:kanze_at_[hidden]]
> > 
> > There's not just a problem of code compatibility; there's user
> > compatibility.  People know printf; any new format, they'd have to
> > learn.  If there are strong reasons for abandonning printf 
> > format, then
> > it should certainly be done, but it shouldn't be done on a whim.
> 
> Don't lump everyone into the same state.  I've used printf() in the past,
> but I never used it extensively, and I always had to look up anything but
> the most basic format specifiers.  Even today, when I find it necessary to
> use a printf() variant, I often try to use %i instead of %d for an integer.
> There are increasing numbers of C++ programmers that have rarely or never
> used printf(); they were weaned on IOStreams.
I would never attempt to argue that the letter assigned to printf
make much sense, but then unless we want a very verbose format
string they can't be less than cryptic.
Does this really add a whole lot of value 
  cout << format("%{1:hex,width=10,pad=0} %{2:dec}")(a)(b);
over
  cout << format("%010x %d")(a)(b);
(Mind you I suggest the %{} because they are backwards compatible
allowing format("%s %{hex,width=10,pad=0}"))
However, no matter what format has been suggested if it has got
some level of format specifiers you immediately have to have the
programmer potentially look at a table to see what is supported.
> Given that by no means does everyone "know printf," abandoning print() is
> not at all unreasonable, even on a whim.  (Ok, not just on a whim, but I
> would have absolutely no problem with totally abandoning the printf() format
> specifiers for something less cryptic, equally capable, with type safety.
Abandoning printf on a whim is unreasonable.  It is a standard and 
thus deviating from it means imposing some new standard.  Creating
standards on a whim is what Microsoft does.
The arguments for using printf are that 
  - it is known by a reasonable large group of C/C++ programmers
  - the format specifier is stardardized by both Unix and C.
  - it appears already in C++ in the form std::printf and friends
  - using multiple standards in a translation database is likely
    to lead to errors and difficulties for translators who
    may not be viewing the source code.
--Karl