You need to know more than "a few keywords". Any non-trivial program will draw heavily on libraries (starting with the standard libraries) which have APIs generally written in English. Note that the classic, trivial "Hello World" program which starts the most famous introductory book to C in the world uses only one word that is (arguably) a keyword (#include, which is really part of the preprocessor, not, technically, a core keyword). Although you can substitute whatever you want for the text string "Hello World", to understand even this simplest of C programs, you need to recognize the English words "include", "main" and "print" (the latter in a confusing form with an extra letter on the end). And you still haven't gotten to the keywords.
And, of course, without a knowledge of English, the fact that "stdio" might be short for "standard input/output" will be completely lost on you. (Even with English, this might not be obvious at first.)
Ironically, because the default locale is 8-bit ascii, you'll need to know <em>more</em> English words to write a program that works in another language than you would to write one that works in English. At a minimum, you'll need to learn "locale" and "set". Neither of which, again, are keywords or even parts of keywords. :)
This isn't to say that you <em>can't</em> learn to program in C with only a bare minimum knowledge of English--we've both seen it done. But the bar is still higher than you suggest--"a few keywords" is far from sufficient.
Posted Sep 1, 2008 14:45 UTC (Mon) by proski (subscriber, #104)
[Link]
ASCII is 7-bit. The default locale is usually asked during the installation. In Fedora, it's en_US.UTF-8.
Non-English-speaking programmers
Posted Sep 4, 2008 5:55 UTC (Thu) by ncm (subscriber, #165)
[Link]
xtifr claims, essentially, that one cannot program in C well without knowing English. This is manifestly false; a very great deal of good C code is written by people who don't speak any English. They have to work harder, but many people are capable of working hard. They may depend occasionally on an English-speaking colleague, but one such colleague can serve many programmers.
VIA releases open source Xorg driver
Posted Sep 4, 2008 8:39 UTC (Thu) by ekj (guest, #1524)
[Link]
Sure. But these are domain-spesific words. Knowing and recognizing them are different from knowing the language in general.
You may need to understand what printf, strstr, mutex, heap, CreateNode, while, string, for and a lot of stuff like that means.
But the fact that these are origined in english is almost completely unimportant, a non-programming english-native would not be able to tell what a "heap" or a "mutex" is in this context any better than a non-programming Indian or Norwegian or whatever.
When he -does- learn programming, he also learns the spesific meaning of the most common words, he learns more when he uses libraries etc. But here's the thing; this spesific meaning is so specialised that knowledge of what the word means in everyday english is almost completely irrelevant.
It's -not- much easier to learn what a "heap" is in programming-context if you're a native english-speaker than it is if you know no english at all.
Try asking your grandmother (assuming she is english native, and does no programming) what a "string" or a "heap" is. You'll get an answer, but not one that would help much in understanding a C-program.
VIA releases open source Xorg driver
Posted Sep 4, 2008 9:29 UTC (Thu) by nix (subscriber, #2304)
[Link]
But when you're writing code you have to *come up* with names as well. In
a lot of languages it's still impossible to come up with names in your
native language (C only recently gained support for Unicode identifiers,
for instance), so you're going to have to come up with names in, probably,
English. And that's harder than learning a bunch of names by rote.
VIA releases open source Xorg driver
Posted Sep 5, 2008 12:14 UTC (Fri) by ekj (guest, #1524)
[Link]
It's still not that hard. Plus, in many MANY languages outside of english, you can easily write in ascii.
German, Norwegian, French, Italian and Spanish all have a few extra letters and/or apostrophes or whatever. Nevertheless it's simple to use norwegian (or german, or italian) names for variables, functions and components.
Even if you -do- decide to use english names, that's STILL not equivalent to needing to know the language. You don't need hearing-comprehension (harder than reading-comprehension for many) you don't need grammar. You don't need pronounciation. You don't need comma-rules, capitalization-rules etc etc etc.
Learning a few nouns and a few verbs isn't more than a small part of learning a language.
Knowing english is helpful. It's in no way required.