3 ms·
Disagree, I think it is the exact opposite. I say that as someone who did their CS education in the early 90s when that was the case. We used C for everything u
by jghn 9y ago
Disagree, I think it is the exact opposite. I say that as someone who did their CS education in the early 90s when that was the case. We used C for everything unless the class material implied something else. We got into the down and dirty details quite fast.
IMO that's the wrong way to do it. Using myself as an example it took me far longer to learn things like data structures than it should have. Why? Because I still hadn't wrapped my head around pointers. The fact that the two are coupled is an implementation detail IMO. It turned out that I never had a problem understanding the structures, I had trouble writing code which didn't segfault.
I'd prefer to see CS education start with the more theoretical constructs and then start diving towards the metal as the basic concepts are known. In other words, treat it more like computer science and less like computer engineering.
- Koshkin 9y agoI keep hearing that people have (or had) trouble understanding pointers. As someone who has never had that problem or met such a person, I am struggling to understand why...
- jghn 9y agoIn retrospect I don't understand either. It's such a simple concept. But it really befuddled me for a while. My suspicion is that since everything involved pointers in C, even things like string manipulation, it was just an extra layer of confusion in a sea of new to me stuff.
- lttlrck 9y agoIt’s possible to use pointers successfully without understanding them fully - (having a sense of) incomplete knowledge can frustrate the learning process. Spending time dropping down to assembler to learn a few variations of MOV or looking at compiler output would make pointers achingly clear.
- kronos29296 9y agoIt's not so much as trouble with pointers as trouble with visualizing algorithms and data structures. Try implementing some moderately complex one in C. It reads like a monster. A dynamic language like Python would have a simpler implementation but at the cost of performance (Why do beginners need performance).
- jghn 9y agoThis is more or less what I was getting at. Do these things in a simplified language first and then drop down
- geezerjay 9y ago> IMO that's the wrong way to do it. Using myself as an example it took me far longer to learn things like data structures than it should have. Why? Because I still hadn't wrapped my head around pointers. How do you expect to understand anything about data structures if you fail to wrap your head around one of the most basic data structure mechanism around: referencing a memory address? In fact, how exactly do you expect to implement a data structure if you fail to understand the very basics of accessing and managing memory? I don't see how that's a problem caused by a particular pick of programming language. In fact, that seems to be a major failure to understands the very fundamentals of CS.
- jghn 9y agoBecause a memory reference isn't necessary to be completely understood to understand the concept? It's just a low level implantation detail. I can draw a structure on a whiteboard and indicate that element a points to b. That doesn't need to imply a "pointer". I'm. It saying avoid the topic altogether in saying one doesn't need to understand memory management to do structures If anything learning things this way would likely make learning about memory references easier?