4 ms·
> The thing is, we still were able to teach the abstraction of the single-machine computation model that C is abstracting in a single semester to the point of m
by mhink 10y ago
> The thing is, we still were able to teach the abstraction of the single-machine computation model that C is abstracting in a single semester to the point of making new coders _operational_.
> But I can't imagine trying to construct a course to teach "modern web architecture" in a single semester.
I'm calling shenanigans here. You're comparing "C by itself" to Javascript and the entire web ecosystem. To make that comparison, you'd have to take C, its standard libraries, and the entire POSIX API- which you're not going to be able to teach in a semester.
That said, I don't want to come off as confrontational, and so I will grant that the computation model (event loop vs. "single-machine computation) is obviously simpler for C. But once you start dropping down to the OS level (e.g. "What's a process/describe process states") you're getting right back into irreducible complexity.
In fact, when I was in school, my first CS classes were taught in C, but I didn't actually grok it until later, in my Microprocessors ECE course, where they actually taught us machine code first, then gave us an assembler, and then gave us a compiler.
The pedagogical benefit of Javascript is making the conceptual connection between "I'm writing this weird 'programming language' code" and "oh hey, that code actually made my computer do something I recognize!"
For folks of a certain age (and for fairness, I include myself in this category) it's possible to make that conceptual leap based on the output of a terminal. But very few laypeople use terminals anymore, so in a weird, topsy-turvy sort of sense, this lower-level programming language feels less powerful because its power is more abstract. By comparison, the browser-scripting language feels way more powerful, because hey look! it's got APIs for anything you'd ever want to do with a web page! Sure feels powerful to me!
> So yes, one person will never know everything there is to know, the new skill will not be learning every framework, platform or service, but being able to grok the core nature and characteristics of your problem so you can apply the closest matching tool with the maximum leverage.
And people still do that- even in Javascript-land. For me, one of the interesting things about switching to full-time "modern" Javascript is how much more time I spend actually reading the source code of the libraries I use. You begin to develop heuristics for evaluating dependencies rather than pulling them in blindly. Furthermore, the libraries I do use are much more lightweight than the ones I used to use in Ruby and (ages ago) Java.
At any rate, just my 2 cents. :)
- hackcrafter 10y ago> You begin to develop heuristics for evaluating dependencies rather than pulling them in blindly. Exactly! For better or worse, this is the baseline attitude needed.