4 ms·
Unix interfaces have indeed stood the test of time, but how many applications nowadays are using them directly, without layers upon layers of abstractions? Most
by bluetomcat 10y ago
Unix interfaces have indeed stood the test of time, but how many applications nowadays are using them directly, without layers upon layers of abstractions? Most of the programmers I meet develop software that ends up running on some kind of Unix, yet are clueless about the system calls and OS-level abstractions. If Unix interfaces were truly successful, we would be writing most of our applications with nothing but the C standard library and the few hundred syscalls.
- chubot 10y agoI don't really agree with that -- layers are necessary to build bigger systems and control complexity. If the programmer ends up ignorant of the syscalls, that's analogous to being ignorant of how many bytes of space a Python dict or list takes. (You can find out if you want, but you don't have to.) As long as it's possible to build these systems efficiently on top of the kernel, that means the kernel succeeded. ioctl() is the hack where the kernel APIs failed. However, there was an excellent paper on HN a few weeks ago: https://news.ycombinator.com/item?id=11652609 https://news.ycombinator.com/item?id=11652609 Their observations about IPC are great. Android, OS X, and Ubuntu/Linux have their own IPC abstractions with structured data. So arguably for this class of applications, Unix APIs failed. (But note that Android is Linux but not Unix, because it's basically a single language OS, which uses single language IPC.) "We observe across all three OSes that no POSIX calls belonging to traditional POSIX IPC are among the frequently invoked operations. As discussed earlier, Android departs from the traditional IPC in favor of higher-level IPC abstractions, namely Binder, the core Android message passing system. Similarly, OS X supports higher-level IPC primitives built atop Mach IPC, which diverged from POSIX since its inception. Finally, Ubuntu also provides applications with message passing capabilities based on D-Bus."