a thoughtful web.
Good ideas and conversation. No ads, no tracking.   Login or Take a Tour!
comment by dingus
dingus  ·  3258 days ago  ·  link  ·    ·  parent  ·  post: The science myths that will not die.

    If you don't want to do that then you're better off studying logic in the philosophy department or combinatorics in the math department.

Well, that's what I'm doing. It's pretty fun.

Anyway, I think what you're doing is claiming that being "close to the metal" is somehow purer. This isn't really the case. I've done plenty of work in assembler, so I know that it's messy, prone to human error, and boring as hell. The only reason anyone should ever program in assembly rather than C is that they are making an application that needs to be extremely high-performance, or that a decent C compiler isn't available for their platform. Designing a CPU is only tangentially related to programming, it's more of an engineering problem than a programming one. If you mean understanding a CPU, that's probably worthwhile, but actually making one isn't something I'd ever expect a CS or SE grad to know how to do.

I will agree with you that CS grads should know the realities of how their interpreters work, how to write C/C++, and how to make data structures. But CS is a very wide field, even if you take the view that it's just math, and you can't expect new graduates to have experience in the lowest levels of computers. It's like telling me I must be a shitty math student because I don't derive everything from first principles, or telling a bio grad they must have been in a terrible program because they don't know how to synthesize proteins. There's so much more than the lowest levels, and all of it is interesting and all of it is worthwhile, and there's only so much a single person can really be good at.





user-inactivated  ·  3258 days ago  ·  link  ·  

Designing a basic CPU was a week long project at the end of my first undergraduate logic design class. Logic design is computer science as much as it is engineering; below that, when you start to talk about the physical implementation of your gates, is another matter. Logic gates are a model of computation, just like Turing machines, the lambda calculus and your favorite programming language. At that level designing a CPU is just a funny way of writing an interpreter. You're imagining it to be harder than it is because you've never gotten down that far, but it's turtles all the way down (and all the way up). Only paying attention to the high level is a mistake; you miss out on the unity, and the low level looks magical to you. Only paying attention to the low-level stuff is also a mistake; you miss out on the high level and more abstract models look magical to you. Learn category theory and logic design, artificial intelligence and operating systems, the theory of computation and computer architecture. And actually write programs, because you can fake it to your professors but you can't fake it to your computer, and because you're missing out on the fun part if you don't.