Neither does modern Linux, sadly. The older SunOS-style audio devices still exist in the kernel as an emulation, but aren't loaded by default (and tend to have weird behavior vs. other parts of your distro's audio stack). The ALSA framework is the modern equivalent. It's much more featureful, but its device API is frustratingly opaque. So much so that the only "supported" interface to the driver is the libasound userspace library. This, too, is low level and opaque. So you're really supposed to use the pulseaudio middleware to actually play and mix your audio stream. And even then, the pulse API is basically PCM-only, and your stream is probably sourced from something encoded. So you really want to be using gstreamer to generate your stream and take advantage of existing codec plugins (and hardware acceleration, etc...). And even then gstreamer is opaque, so all the toolkits have wrapper APIs.
Sigh. The days of being able to spit sounds to a char device are basically over. We have more powerful software now with far more capability. And that kind of sucks, sometimes.
Yes yes. The existence of that silliness is kind of my point. There's nothing "wrong" with Linux audio from a technical/feature standpoint. But the aesthetics are a frothing mess. It's not a clean design.
The /dev/audio device on SunOS 4.1 was a clean design (albeit one that solved a much simpler problem). That sanity wasn't preserved in the march to modernity, and it sucks.
The design is pretty similar to how every other modern OS does it, I think - what would you change if you had the choice?
I mean, it's not as clean as things were, but we've come a long way since then in terms of features so obviously simplicity is going to suffer. Worth the trade off, in my opinion :)
Actually, while we're on the topic(ish), how does one do it back the other way? Ie, stream from audio input to a file (I was looking into it earlier today). Best I could find, you had to install some wrapper drivers or something.