Nonsense - web programming is inherently tied to the browser, which severely limits debugging and output options.
> The ability to mix and match data types and presentation format is extremely useful.
That's a common feature of dynamic type languages.
> Almost everywhere else we just have printf.
Most languages have logging libraries, and many have them built into the stdlib or runtime. Popular languages usually have many logging libraries to choose from.
> that’s printf going to stdout
Of course - printf(3) by definition "shall place output on the standard output stream stdout"[1]. If you want stderr or any other output stream, use fprintf(3).
#include <stdio.h>
int main() {
fprintf(stderr, "Error: %s\n", "LP0 on fire");
return 0;
}
Other languages usually handle that for you as part of the logging library.> there isn’t a universally deployed format
Sure there is: "text"[2].
> to even allow it to travel easily over the network
Copying files to a remote host is easy with scp. There are numerous ways to send data over a network. Web software is often more work as you have to move your debugging data/logs out of the browser first or use a specialized tool that does that for you. Sending program output realtime to a remote host only requires appending "| ssh ${host} \"${remote_cmd}\"" to your command.
> advanced viewers
That's great if you have specific needs and a viewer for your complex data structures, but the only universal solution is text. Fortunately, there are many tools available to handle structured data as text.
> I think part of the problem is that programmers rarely want to get into these supportive details; they just printf and get on with it.
I think you might want to explore the work programmers have done in other languages.
[1] http://pubs.opengroup.org/onlinepubs/9699919799/functions/pr...
[2] http://www.catb.org/esr/writings/taoup/html/ch05s01.html