4 ms·
> Completely disagree, what you describe is more "Software Engineering" than "Programming". I think that a huge proportion of programming is about understandin
by reuven 13y ago
> Completely disagree, what you describe is more "Software Engineering" than "Programming".
I think that a huge proportion of programming is about understanding and creating abstractions. But hey, I was brainwashed by SICP (http://mitpress.mit.edu/sicp/ http://mitpress.mit.edu/sicp/) back in college.
> You can do that in any language, so your choice is really up to convenience and context.
Given two people of equal ability, and without any background in programming, I think that the person who learns Python will advance more quickly than the person who learns C. They will understand fundamental programming concepts sooner, and will be able to apply that knowledge sooner.
This doesn't mean that C is bad, but rather that it was designed to solve certain problems, while Python was designed to solve other problems -- among them, the ease with which people can learn and use the language.
Learning C requires that people understand the memory model of the computer, on top of everything else that you need to know to programming, such as variables, conditionals, loops, and functions. Programming is hard enough for people to learn; by teaching them a language that lowers that threshold, they'll learn more in less time. They can always learn C down the road -- but if C is their first language, then they might (in my experience, from having spoken with many frustrated wannabe programmers) just give up on it.
- Jare 13y agoBased on my own experience teaching people who knew absolutely nothing about programming, the biggest factor is visibility of results, i.e. making programs that do stuff you can see and touch (games are the best). Certainly, the immediacy and speed of iteration of Python and JavaScript trump that of C these days. My choice today is actually JavaScript, partly because of ubiquity, partly because it's very easy to do something interactive and visually interesting (Canvas), and partly because its simplicity soon leads into its shortcomings. Python as a language is "batteries included", and I believe in the value of students bumping into barriers and limitations so they can properly value the reasoning behind solutions. In that sense, the value of C is in teaching students about lifetimes and ownership of resources.