5 ms·
Much of the book is very dated, complaining about things that have been rectified many years ago. However I think it still has a valuable lesson that many, par
by darkpuma 8y ago
Much of the book is very dated, complaining about things that have been rectified many years ago.
However I think it still has a valuable lesson that many, particularly young CS students, would benefit from: Unix is not the perfect fundamental model for computing. C is not the gospel. Their prevalence today is as much a historic and economic accident as a rational consequence of their objective merits. Both are social artifacts, not manifestations of fundamental truths.
Worshipers of Bell Labs (such as the cat-v or suckless folks) don't get this, and I've seen them pull a lot of people down that rabbit hole with them, particularly young and inexperienced students.
- simias 8y ago>particularly young CS students >C is not the gospel >Worshipers of Bell Labs I think you're one or two generations late, you'd have to be a hipster to be a CS student worshiping C and Bell Labs these days. I suspect most CS students these days start around web technologies using VS Code in stock Ubuntu, not hacking C programs using Emacs running in dwm on a heavily customized Slackware. I do agree that cat-v and the suckless folks should be taken with a massive grain of salt though.
- sitkack 8y agoI used to be a suckless person, not official, but I had branded them _my tribe_. I still appreciate them for their simplicity target, but the means and methods for me have changed. When I first came across the UHH, my systems exposure was AmigaDOS, DOS, Windows 95, Windows NT 4, Ultrix, FreeBSD and Linux. I had never used VMS in any meaningful way (David Cutler is a well known Unix Hater) and the idea of "Hating Unix" was off putting because it seemed so useful, and the pain inflicted I internalized as my failing for not properly understanding it. I had no idea how much of a patched together mess it was. Hell, I think if we had continued using DOS that it would have eventually gotten a scheduler, memory protection, pipes and signals and then ended up in largely the same place. At the part of the stack that most programmers are operating now, the operating system doesn't matter much. We can take the pain points from UHH and apply them to our own lack of system design.
- saagarjha 8y ago> I suspect most CS students these days start around web technologies using VS Code in stock Ubuntu More likely, Visual Studio Code on macOS.
- kkarakk 8y agohaven't the google chromebook kids hit the college market yet? wonder if they'd go for macOS at all
- saagarjha 8y agoAnecdotally, very few people buy Chromebooks as their primary college computer. Most people, irrespective of their major, need to work with Microsoft Office, sometimes some custom publisher software, etc. and nobody seems to thing that Chrome OS is up for this task. Plus, I feel like a "college computer" is a weighty purchase for many students, and buying a $200 Chromebook doesn't really seem right for this. For computer science, the only people who buy Chromebooks are the people who install Linux on them or have another machine to SSH into.
- pjmlp 8y agoWorldwide ChromeOS has even less share than desktop GNU/Linux. It is only a thing on US school system. And now with latest changes at Google, eventually not even that.
- linguae 8y agoAs a systems software researcher, I concur. I like Unix and I’m very greatful for its impact on computing, but Unix and its derivatives are not the final answers of systems software design. I feel that much of the software engineering and computer science world (even among OS researchers) is unfamiliar with non-Unix designs other than Windows. We can learn a lot from historical non-Unix operating systems such as the Genera OS for Symbolics LISP machines and the Oberon operating system.
- milquetoastaf 8y agoBeOS is the silent master we can all learn from
- int_19h 8y agoIIRC it still looked very Unix'ish once you dropped into the shell.
- pjmlp 8y agoAs much as Windows NT with POSIX personallity.
- electroly 8y agoIt ran bash, sure, but BeOS was not similar to Unix at all.
- waddlesplash 8y agoIt had the coreutils, glibc, it used UNIX filemodes and the fork() process model, "/dev", etc. So, how exactly was it not a UNIX?
- electroly 8y agoEver try to port a POSIX utility to BeOS? I did. No mmap and no BSD sockets killed any chance of easily porting any network utility to BeOS. It had a directory called /dev, yes, but it was absolutely nothing like /dev on any Unix system; it's all home grown. No permissions; it's a single-user system. It stores file owners and modes, yes, but they don't actually mean anything; you don't need the +x bit to execute a file, you don't need the +x bit to list a directory, everything is owned by "baron", etc. It supported fork but it's incompatible with threads, and everything on BeOS is threaded. Some signals are implemented, but the C API is home grown instead of the standard POSIX calls. Etc. They built a Unix facade but the system is very un-Unix like. If it were really Unix, they probably would not have needed to write a whole book on porting Unix applications: https://www.amazon.com/BeOS-Applications-Martin-C-Brown/dp/1558605320 https://www.amazon.com/BeOS-Applications-Martin-C-Brown/dp/1...
- jcranmer 8y ago> However I think it still has a valuable lesson that many, particularly young CS students, would benefit from: Unix is not the perfect fundamental model for computing. C is not the gospel. The problem is, this book doesn't actually motivate that lesson. Instead, it spends a lot of its time sniping rather than arguing for why the entire philosophy is perhaps misguided or outright wrong. And sometimes, even the snipe targets are pretty idiotic: when complaining about C++ syntax, for example, the target isn't the incomprehensible nature of template rules [1], but one C++ compiler doesn't lex //* correctly. [1] I'm not sure anyone actually understands how name lookups work when templates are in play. Instead there's a lot of guesswork and don't-shadow-names-if-it-might-matter going on.
- pushpop 8y agoI thought The UNIX Haters Handbook predated C++ templates?
- darkpuma 8y ago> "The problem is, this book doesn't actually motivate that lesson. Instead, it spends a lot of its time sniping" Yes but that sniping does a good job of deconstructing the historical revisionism that Unix was some beautifully architected thing, rather than something that's become less shit over time.
- int_19h 8y ago> I'm not sure anyone actually understands how name lookups work when templates are in play All you really need to figure out for that is what a "dependent name" is. And that has a very straightforward definition.