Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I stumbled upon this Study (of The Development of Programming Ability and Thinking Skills In High School Students)(link only opens with left-click correct, not in new tab?! dunno why) claiming, that students seem to have serious problems learning how programming, abstraction into algorithms,... actually works.

What do you think about this and has somebody links to newer free available studies investigating the learning process of programming newbies?

Im wondering if this is mainly due to worse teaching or more abstract & difficult to learn languages like C in the past. Of course abilities in mathematics play likely also a bigger role, but this shouldnt be a fundamental hurdle? Is there maybe a connection to how difficult your mother language is structured (grammar, syntax, vocabulary). It is known that programmer newbies of distinct mother languages faster adapt to distinct programming languages? Are there programming languages specially oriented to, for example, chinese/german language?

Is the origin of more and more new programming language a sign of individual adaption to a single programmer liked syntax? I would suppose that from a theoretical informatics view there should be a limit of use & different problem types how many different programming languages are really needed. But they seem to grow on and on.

share|improve this question

closed as too broad by Ixrec, GlenH7, gnat, Bart van Ingen Schenau, MichaelT May 14 '15 at 13:17

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

dead link; vague question – Steven A. Lowe Jun 10 '11 at 18:37
sry fixed dead link, question is imo not vague, im fine with some links to newer studies, anything else is personal speculation/experience – Werner Schmitt Jun 10 '11 at 20:56

Anyone, when initially introduced to programming, will have a difficult time with it. It requires you to think in ways that no other part of life does.

I like to call it symbolic reasoning. It's being able to juggle variables in your head, anticipate how a command is going to behave, and construct a mental map of how a program is laid out. Symbols are inherent in any spoken language, but mutable symbols are not inherent in ANY language except programming. It's a new concept.

At the very least, any student should be introduced to algebra and have a solid understanding of how variables work before diving into programming. If a student can construct mathematical functions and visualize how they work, they're well on their way to being able to do the same with a subroutine.

share|improve this answer
Eh? algebra works very differently from a computer program. – nbt Jun 10 '11 at 18:43
@Neil: Yes, it does, but it introduces you to some concepts that are vital to programming. – Michael Martin Jun 10 '11 at 18:57
@Michael Such as what? – nbt Jun 10 '11 at 19:09
Algebra doesn't work so differently from functional languages (which also lack mutable variables in their purest forms). – John Gaines Jr. Jun 10 '11 at 19:12
@michael: How about just studying logic? I personally never found math useful unless I was writing a program to do math, while symbolic logic was directly relevant. – Satanicpuppy Jun 10 '11 at 20:09

My experience (commercial training, UK universities) is that it is almost impossible to teach people programming if they don't have some innate ability. Much the same could be said for most skills. For people who do have the ability, programming is easy - I've never had any problem learning a new computer language (I've been paid to write in over 30), with the exception of Haskell, mostly I suspect because no-one has offered to pay me to write in it.

share|improve this answer
psst. If you -want- to learn Haskell, give this a looksee: It's approachable without being patronizing. – Michael Martin Jun 10 '11 at 18:59
@Michael Yes, I've read it. My problem with haskell is that for the trivial problems that are presented in tutorials, I can see perhaps better ways of solving the problems in other languages which I already know. – nbt Jun 10 '11 at 19:08
thats what i was wondering about: normally there are no big hurdles learning another foreign spoken language. But does one really need for programming languages distinct pre-knowledge/mindset? (even for simple script languages with easy paradigmas, e.g. autohotkey, javascript, python) And what would be exactly, abstraction abilities, advanced math. knowledge, symbolic logic, higher IQ – Werner Schmitt Jun 11 '11 at 15:55
the real fun with Haskell come with the transparent parallelization support which have been added in later years. – user1249 Jun 11 '11 at 20:01

I took me a while to understand certain concepts when learning my first language but now that I know something about one language, learning how to do the same things(declare variables, use functions, arrays, strings, control structures, etc...) in another language is easy.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.