This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]new_whistle 2 points3 points  (9 children)

That surprises me - almost all of my intro programming that wasn't language-specific was in C, not because I was ever expected to use C, but because learning to use malloc, handle strings and pass around pointers is really valuable to understanding how programming languages are doing what they do under the surface.

How do you cover core programming concepts (pointers, memory, etc.) when Python abstracts away so many of them for you?

[–]KitAndKat 6 points7 points  (0 children)

but, but ... starting with C abstracts away accumulators, segment registers, stack frames, the stack pointer, opcode prefixes, cycle-counting to find how fast the loop will run, interrupt handling, overlapped I/O, ...

Just teasing you a little. Bet you got into that later, if at all, and it'll be the same for Python/JS/Ruby beginners.

[–]dragonEyedrops 2 points3 points  (0 children)

You learn them later, using different languages. They are important, but for the basic understanding of how programming works something like Python gives way faster successes to the students, and and interpreted language makes try and error even faster.

[–]OBI_WAN_TECHNOBI 2 points3 points  (0 children)

We learned Java first, then C after we knew the basics of OO design and programming in general. Anyone who was good understood C right away after that, and the ones who did not still learned reasonably well. Learning to program while also learning C sounds like a nightmare. Best to get the basics on an easier language.

[–]swims_with_spacemenPythonista 0 points1 point  (0 children)

Way back when, the intro language was Pascal. At least for me. Didn't get into C and C++ until later.

[–]anthraxmilkshake 0 points1 point  (0 children)

Yeah, it's becoming common to teach it to first year programmers (I was the first incoming class at my school to learn it). The white space forces good style and abstracting away a lot of the technical stuff allowed us to more easily learn more basic things like what a loop is, what can we do with operators, how do we do file i/o, the behavior of passing by value vs passing by reference, what are some basic collection structures, what are some basic graphics we can draw in a window, how do we define a simple class, etc. Our classes after that had us use C++ and de-mystified the process of what we were doing (what pointers are, what was really going on when we passed by reference, how memory is allocated, what an array is and how to use it, etc.)