views:

411

answers:

5

It is well known that different people have different aptitudes regarding various programming paradigms (e.g. some people have trouble learning non-procedural, especially functional languages. Some people have trouble understanding pointers - see Joel Spolsky's blog for musings on that. Some people have trouble grasping recursion).

I was recently reading about a study that looked at how the grammar of someone's native language affected their speed of learning math. Can't find that article now but a quick googling found this reference.

That led me to wondering whether someone's native culture or first language might affect their aptitude towards various programming paradigms. I'm more curious about positive influences - e.g. some trait that make it easier/faster for someone to learn a particular paradigm, for example native language grammar being very recursion-oriented.

To be clear, I'm looking for how culture/language grammare may affect the difference between aptitude of the same person towards various paradigms as opposed to how it affects overall aptitude towards programming between different persons.

Important: the only answers I'm interested in are either references to scientific studies, or personal observations from someone intimately familiar with a particular culture/language, including from their own experience.

E.g. I'm not interested in your opinion of how Chinese being your first language affects anything unless you speak Chinese or worked with extremely large set of Chinese-native programmers extensively.

I'm OK with your guesstimates not based on scientific studies, but please be sure to supply your reasoning about plausible causes of your observation.

I'm not interested in culture-bashing (any such commends will be deleted or flagged for deletion).

I'm also not particularly interested in culture-building - we all know Linus is from Finland and Tetris was written in Russia and Larry Wall is an American. Any culture/nation can produce a brilliant mind in any discipline. I'm interested in averages.

+23  A: 
MusiGenesis
You're a programmer. If you didn't have a high-horse from that much, I'd be slightly worried.
Matthew Scharley
@Matthew: you know the old saying: "never switch high-horses in mid-stream". Well, *I* did. :)
MusiGenesis
@MusiGenesis - pretty well thought out asnwer - thanks!However, what I am insterested in is not whether language/culture "inhibits programming anbility", but rather how it affects ones aptitude for one programming paradigm vs. another. E.g., to make up a completely BS example, someone from totalitarian state would have more aptitude for procedural languages than for functional (I did say it was a BS example :)
DVK
DVK: Russians tend to program faster.
Noon Silk
I added an image instead of ASCII art
victor hugo
@victor: perfect, thanks!
MusiGenesis
Silky - (1) This answer has NOTHING to do with my question. (2) This answer contradicts my question's requirements to supply a plausible reasoning backing up your statement (3) if those two weren't enough, having known a HUGE amount of programmers from Russia (as opposed to top-level ones thaht many English speakers tend to interface with), I can not honestly say I ever noticed any difference.
DVK
DVK: Guess you missed the joke.
Noon Silk
@DVK: I would say it's *possible* that a person's native language would affect their aptitude for a particular programming paradigm - for about 5 minutes. And then once the concept is explained to them, they're off to the races. Humans learn new concepts *very* quickly, and the idea that language constrains learning in any significant way is belied by the speed at which people can learn entire new languages.
MusiGenesis
Russians program better in groups, but only when stirring, patriotic songs from the 30's are playing in the background, and giant 60-ft tall pictures of Bill Gates are plastered on the walls.
MusiGenesis
@MusiGenesis - "Humans learn new concepts very quickly"??? May I humbly suggest that you take a 2-month stint as an undergraduate Teachine Assistant in CS to completely destroy that theory in your eyes? (TAs usually get to deal with all those cases where students Just Don't Get It :)
DVK
@MusiGenesis - LOL. +1 to the comment. As soon as I replace my keyboard.
DVK
@DVK: I should modify my comment to *"some* humans (a proportion that does not vary from culture to culture) learn new concepts very quickly". I don't need to teach a CS class to understand that some people Just Don't Get It - I work for a living. :)
MusiGenesis
«The human mind is much too flexible and adaptable», it's true, but nonetheless languages "form" the mind and so influence the way a person thinks, sees ... learning a language "too late" is proven to be not the same thing as learning it from the beginning; studies show how the active areas of a brain for native speakers of different languages can be different... so it is not impossible that the language can change personal aptitude to almost everything, but of course the environment is important to shape mind and make it more or less "suitable" to programming
ShinTakezou
+3  A: 

I was recently reading about a study that looked at how the grammar of someone's native language affected their speed of learning math. ... Important: the only answers I'm interested in are either references to scientific studies, or personal observations from someone intimately familiar with a particular culture/language, including from their own experience.

I learned a lot of maths before I started programming (enough to count as "intimately familiar"), and IMO programming is relatively easy: more tangible.

Sometimes I've wondered whether it's beneficial to know more than one human language: if you only know one language, then you might think of the words "cat" and "dog" as being values, i.e. synonymous with cat and dog objects; but if you're fluent in more than one language, then "cat" and "dog" become pointers: because for example the French words "chat" and "chien" are referring/pointing to the same objects as "cat" and "dog", and so clearly there's a distinction between the word and the object.

It's disappointing that you post the question without linking to the article which inspired it. I thought of "reverse polish notation" and wondered whether that was at all the kind of differences in "grammar" that were considered in the original study.

ChrisW
Apologies for no link, but I read a dead tree version and could not find any links after 10 mins of googling. Interesting thought on multi-language influence. As a bilingual developer, I can not say I conform to your theory, but i did start learning programming before I started learning a second human language :)
DVK
As for RPN, I'm not aware of anything special in Polish language that would make Jan Łukasiewicz more likely than someone from another culture to come up with prefix logic. But what I'm interested in, do Polish programmers find it easier to grok PN/RPN than other programming constructs on average vs. programmers from other culture/language?
DVK
I think they used to hire/train mathematicians to be programmers.
ChrisW
+3  A: 

The reference you cite seems to rest on the assumption that making it easier helps with learning. In my understanding, there is a countereffect: without enough challange, you're not learning enough.

There are theories/studies (anyone with a link?) that development of language created crucial pressure on expanding the cerebral cortex and thus "made us human". (in very darwinistic terms: more grey matter ==> better language capabilities ==> better teamwork ==> better survival as a group). So language complexity can't be all bad for learning.

(My only qualification is being an eager follower of The Frontal Cortex blog, so take this with a grain of salt.)


In german we have a strange ordering of numbers: 10^0 and 10^1 positions are switched, but others are normal, (e.g. 25 is 'five and twenty', 125 is 'one hundred five and twenty'). It's been claimed that this makes learning numbers harder, and thus german should adopt a more intuitive ordering.

I guess that it helps a lot with doing additions in your head - at least if you stay below 100 or 200 - You can first add the 10^0 position and already say it / write it down while taking any carry into account for the 10^1 position.

(That doesn't continue for 10^2, I guess that would be done in writing by the majority anyway)


Also: abstractions. There are languages where numbers aren't abstracted from objects, "two coconuts" and "two sabretooth tigers" don't share a common "two" word / concept. Such a language would probably be very bad for developing math skills. Here the abstraction (separating number and object) in language is important.

Generally, I'd say the language has a strong effect on shaping a developing mind, and I see no reason why this should not extend to culture.

Of course it's still open what would be the "right kind of complexity" - for what, and how particular language features affect general improvement vs. establishment of an elite (i.e. "sharpening the skills of the gifted, while hampering the rest").

Interesting Question, no doubt - looking forward to other replies.

peterchen
"It's been claimed that this makes learning numbers harder, and thus german should adopt a more intuitive ordering." -- The French words for seventy, eighty, and ninety are "sixty-ten" (and then "sixty-eleven" etc.), "four twenties", and "four twenties-ten"; so I suppose you need arithmetic even just to count that high.
ChrisW
+4  A: 

This seems analogous to the Sapir-Whorf Hypothesis - that the facilities of a language affect the ease which which one can cogitate about certain subjects, or in the words of the Wikipedia article:

"The linguistic relativity principle (also known as the Sapir-Whorf Hypothesis) is the idea that the varying cultural concepts and categories inherent in different languages affect the cognitive classification of the experienced world in such a way that speakers of different languages think and behave differently because of it."

( http://en.wikipedia.org/wiki/Linguistic%5Frelativity )

While there appears to be little definitive information here, the discussions appear to be relevant to the question, and perhaps worthy of further exploration.

cvsdave
-1 because people don't realize that the key word in "Sapir-Whorf Hypothesis" is *hypothesis.* Meaning that a thing isn't true just because some egghead (or pair of eggheads) *says* it's true.
MusiGenesis
Moreover, proponents of Sapir-Whorf don't seem to be aware of an important fact: that most people in the world (outside of the United States) *speak more than one language,* and usually *many* more.
MusiGenesis
+4  A: 

Just a few random thoughts. I think the influence is generally very weak and can most of the time be neglected but they do exist and sometimes they can make us feel them.

In Chinese grammar, for example, we don't quite distinguish between plural and singular forms, but I wouldn't think we Chinese have any noticeable difficulty understanding the concepts of scalar and array in Perl. The reason might be this: although we generally don't need particular suffixes or changes in form to indicate whether something is singular or plural, we do have the concepts of plural and singular and we mostly depend upon the context to tell them apart. Grammar-wise, the context in Chinese may possibly be way more important than that in those languages belonging to indo-european family. We omit a lot of things sometimes when they have already been mentioned and sometimes when we just presume that these things can be implicitly well understood by the listener. In either case, we don't need those indefinite and definite articles (a, an, the) or those relative pronouns like, that, which and who, to indicate whether they're being mentioned for the first time or yet another time again. Maybe that's partially why I feel very comfortable with Perl's default variable "$". print; chomp; split; all act upon $, which has never ever been mentioned. But this is quite subjective.

I think the Chinese language is more characterized by implicitness and fuzziness than Indo-european languages. For example, We never ever pay attention to subject verb agreement and we never ever do verbal conjugation to denote tenses. This could mean that the Chinese are inclined use a not quite so logical mode of thinking. One of my teachers onced used an example to try to generalize (or maybe over-generalize)the difference between Chinese non-logical mode of thinking and American logical mode of thinking.

If the American version of quarrelling should be this:

“I can lick you.” “No, you can’t.” “Yes, I can.” “No, you can’t.” “I can.” “you can’t.” “Can!” “Can’t!”

The Chinese version (translated in English) would be something like this:

I can lick you. How dare you! What if I dare? Then you try. Try? Hm, you wait and see. Wait and see? I’m not afraid. Not afraid? OK. You don’t run away. Who runs away? Come on and lick

Well, I agree that there may be some differences between Chinese way of thinking and that of other countries but the example looks like a stereotype because the Chinese may easily switch to the use of the American version. Back to the question, I think the language and culture may indeed influence a programmer's learning process in one way or another but this influence is defninitely not decidingly noticeable. Maybe because of the culture you're exposed to makes you feel a little bit uncomfortable to get used to some notions in some programming language, recursion or whatever, but time will solve it.

Mike