3 ms·
That seems really weird to me. We even did a machine language course even though we will never do any machine language programming. It's good to understand what
by soperj 5y ago
That seems really weird to me. We even did a machine language course even though we will never do any machine language programming. It's good to understand what the hell is going on. C is amazing in explaining how memory management works, since you have to do it all yourself.
- float4 5y agoFor an undergrad course on compilers that I took, I had to build a parser, implement a state machine and a few other things. All in Haskell. For my master's I took a course on static analysis, for which we had to perform usage analysis, type error diagnosis, implement a type checker etc. All in... Haskell.
- soperj 5y agoWe did something similar, not in Haskell unfortunately. We did have a programming languages class that introduced us to haskell. It seems so damn intuitive. As a web developer though there just isn't the support for that language unfortunately.
- robotresearcher 5y agoC teaches you how PDP11 memory management works. Modern PC/server hardware doesn't work like this, neither do modern applications that use accelerators, and while the system works hard to present this virtual address space to your runtime, you don't need to think about it in many languages, from LISP to Swift. Most devs write Javascript. I say this as a person who loves C and taught it lovingly to undergrads for many years. Embedded system programming is a lovely niche, but we don't need to design CS curricula around it.
- soperj 5y agoI would hope you wouldn't be designing cs curricula around javascript, because even javascript frameworks are moving to typescript. This seems like not teaching calculus because you can do it on a calculator. I didn't do a degree that focused on C development, but I still had to know how to do it. God forbid any of your graduates end up working on an operating system at some point.
- robotresearcher 5y ago> I would hope you wouldn't be designing cs curricula around javascript I didn't propose that. I'd expect a good curriculum to expose students to several languages, so that picking up another one is not an ordeal.
- Jetrel 5y agoSomeone beat me to the punch, but yeah, at this point, C barely works the way actual computers work under the hood. It works the way a PDP-11 does, and most modern computers have been forced (even at the CPU level) to basically act as PDP-11 emulators. Take, for example, the entire stack-and-heap thing. That's not a bedrock feature of computing; it's merely a thing that was particularly convenient to do on a PDP-11. But if you're working in C, you have to do it - so it stays a "seemingly bedrock" feature even if the hardware has drifted far from the PDP-11. A lot of these features boiled down to the ISA making it fairly convenient to do them that way - there were built-in instructions that made it pretty easy to "color-by-numbers" and get the job done. --- This is similar to how we (societally) did barely any woodworking with screws before we had the industrial processes (like lathes or whatnot) to make them. Nails weren't some magic ground-truth or axiom of woodcrafting - it was just obscenely difficult to craft a screw, so why would anyone in their right mind attempt to build something with them?
- soperj 5y agoScrews are a terrible way to build something still though compared to a properly fitted mortise & tenon.