5 ms·
I went to a completely unranked school, not even a CS major. But took Programming I anyway. It was for freshmen, and was in C++. IMO, for an intro language, yo
by xaa 9y ago
I went to a completely unranked school, not even a CS major. But took Programming I anyway. It was for freshmen, and was in C++.
IMO, for an intro language, you need either something close to the metal, so that students can work their way up the abstraction chain, or something very high-level with flexible constructs if it's desired to teach things from the algorithmic level.
I also think that any dynamically typed language is a bad choice for a first language. We're all used to holding the types in our heads, but beginning programmers don't even know what they are, and it's a really core construct.
- laveur 9y agoI agree. When I first started out I learned java on my own. But when I first started taking college level CS classes it was all C++. And to be honest I prefer it.
- flukus 9y ago> IMO, for an intro language, you need either something close to the metal Agreed. They aren't just learning to program but they are learning how computers work so the less abstraction the better. On the plus side, I imagine this will be great for our salaries in 10-20 years.
- RandyRanderson 9y agoIf you have 1M bad programmers 1% will make terrible libraries. In 10-20 years at least a few of those you'll be forced to port to some other shitty library made by that 1%. I'm doing this right now...
- jghn 9y agoDisagree, 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.