Hacker News new | ask | show | jobs
by adamwk 1209 days ago
I don’t see how this can be true under any definition of computer science. I used linux in college and I think it was useful, but more as an immersion learning program for the Unix abstraction than anything related to what i was studying (CS).

I didn’t learn much about algorithms, or digital systems, or compilers by setting up arch Linux. Even my OS class, it’s not like learning about swap helps understand context switching or even virtual memory.

I relate to how satisfying it can be tinkering with things but a lot of times it’s just distracting. Like spending a day optimizing productivity tools instead of being productive. Or trying to get your laptop to recognize and change audio output when plugging in headphones instead of studying for a midterm.

2 comments

Did not Galileo grind his own lenses for his telescopes?

Did not Yogi Berra state that in theory there's no theory between theory and practice but that in practice there is?

Is an abacus useful in Computer Science or is it an impediment to purely conceptual algorithmics?

I use Linux precisely because it enables good Computer Science, as telescopes enable good astronomy, as particle accelerators enable the realisation of the prediction of the Higgs Boson.

Well you can't deny that if you understand how to compile your kernel, how to make a rootfs, what a primary/secondary bootloader is, etc, then you actually have learned about computers, right?

Try Linux from scratch, then ask yourself how macOS, Windows and *BSD solve those problems. Wouldn't you call that computer science?

No, not really. They're closer to the equivalent of learning how to install a new lens in your telescope so you can do more astronomy.

You've learnt about telescopes, which is a very useful skill, but it's not the same thing as astronomy.

Ok let's take one step back and look at the parent:

> I don’t see how this can be true under any definition of computer science.

Let me arbitrarily copy one definition of computer science, from Wikipedia:

> Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to practical disciplines (including the design and implementation of hardware and software).

I think that designing an OS counts as computer science, at least under "some definition of computer science". And learning how to maintain an OS is a step towards understanding how it is designed.

Of course, maintaining your OS does not teach you Javascript. But Computer Science is not limited to Javascript. I wouldn't be very happy if you told me that I am not a software engineer because I don't know Javascript, to be honest.

In this analogy, I think you should replace Astronomy with optics to be equivalent. And in this case you learned a lot about optics
I think it's like saying if you learn how to maintain a submarine, have you become a good swimmer? Or, if you know how to maintain a submarine do you understand fluid mechanics?
Ok let's take one step back and look at the parent:

> I don’t see how this can be true under any definition of computer science.

Let me arbitrarily copy one definition of computer science, from Wikipedia:

> Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to practical disciplines (including the design and implementation of hardware and software).

I think that designing an OS counts as computer science, at least under "some definition of computer science". And learning how to maintain an OS is a step towards understanding how it is designed.

Of course, maintaining your OS does not teach you Javascript. But Computer Science is not limited to Javascript. And I have seen many developers distribute libraries without having a clue about how package management works, which results in a big mess. And then they complain about the tools ("CMake sucks, it's not my fault"), where actually they just don't have a clue how it works below.

I see computer science as the discipline that makes the whole computer work. Because one can't be bothered to understand anything below their favourite framework doesn't mean it doesn't count as "computer science".