The Ugly American Programmer (codinghorror.com)
"Whatever country you live in, whatever language you speak, you have the same access to the accumulated knowledge of the world as every other citizen of the planet Earth. I believe the rules are different for programmers. So much so that I'm going to ask the unthinkable: shouldn't every software developer understand English?"
68 comments
[ 3.2 ms ] story [ 120 ms ] threadCan anyone tell me any programming language which doesn't use english keywords!?!
English is the common language of communication throughout the world, and consequentially the effect has percolated into the hacker world too I guess !
APL?
Also "BrainFuck", but that one doesn't use any words at all, just a few symbols.
It would be hard for one to understand how anybody uses it, if you don't understand the language, but that does not imply non-existence. You'd also be hard-pressed to find any, because all your searches will come up in English :)
But if you're talking about cutting edge, then, no.
http://en.wikipedia.org/wiki/ALGOL_68
Just to be clear, I consider this to be an argument against the idea.
It just makes it easier to communicate, and I've never met a Dane that complained about it.
Is this even remotely controversial these days?
Small countries like Iceland, the Netherlands and Denmark can't possibly expect anyone to learn their petty language that can't be used anywhere else, and thus realise that they have to learn English if they want to communicate outside their borders.
Edit: Interesting note -- if Dutch, Flemish and Afrikaans are all considered the same language, then Dutch has around 30 million native speakers.
Bjork does sing in English though :-)
Linguist David Crystal, who has surveyed world use of one or another "interlanguage" for official use by international organizations, has found that actually most frequent and most exclusive use of English as an interlanguage is in east Asia. It is remarkably "natural" for a Korean person to try speaking English to a Japanese person (even though Korean and Japanese are cognate languages), and it is more expected still for a Chinese person to speak with either of them in English. What I find remarkable, but have observed more than once, is speakers of different Sinitic languages ("Chinese dialects") speaking to one another in English. Online, which is mostly the context Jeff is talking about in his blog, the early inconvenience of typing in the CJK languages (now resolved, as an in-country issue, but still a big barrier to switching among those languages) resulted in much Internet communication in east Asia being in English by default.
After edit: France was mentioned in the reply above to which I reply here, and I'll mention that the Carrefour retail chain has stores in Taiwan, and the signs inside the stores are in Chinese, of course, but also in English, NOT in French. There is no reason of national pride among the Carrefour staff sufficient to overcome the practicality of using English to reach customers in Taiwan. (Taiwan has a large population of English-speaking foreigners, the plurality of whom are Philippine guest workers.)
At least with the limited contact I've had with Chinese and Japanese developers the level of English wasn't particularly high, so I guess I'm a bit surprised by that. In the Chinese teams they even went as far as to try to suck in someone from Hong Kong so that he could be the bridge between the Chinese and German (the team I was on, though communicating in English) groups.
Now, given that a Japanese and a Korean are to communicate, of course it's more likely that they will do so in English.
As to the observation of different Chinese dialects using English as an interlanguage within China (...I assume you didn't mean within China)...this is probably very rare. In my 9 years of living in China mingling with all sorts of regional and ethnic groups, I have never once seen this happen.
When working in japan, none of my japanese coworkers could speak or read english (even worth than France...) and they only read translated programming books with a 6-12 month latency to get new information....
Now if I hired programmers, I would never hire someone who doesn't read english fluently because I believe that someone, who is truly interested in programming, will try hard to learn English so he can access to the quantity of knowledge written in English.
But your last sentence seems really harsh. Good communication skills are so much more important in real life to have work done.... I know a few good programmers in France for whom reading english is a lot of (sometimes necessary) pain. I'm sure more contacts with foreigners would give them a incredible confidence/motivation boost.
A big advantage you have as a local developer over an Indian developer is that you speak the native language of your customer. It seems kinda silly to throw that kind of an advantage away.
Besides, you can't really apply the principles from Domain Driven Design if you translate everything to English. You would end up with one language in your code and another language to talk to your customers, instead of a single ubiquitous language. This becomes especially difficult when you have a complex domain with tricky business rules that requires frequent collaboration with domain experts.
There's one language for the home and the family and friends, and other that's used in formal, academic and business settings.
It wouldn't surprise me if soon even formal regional official documents can be handled in English to facilitate some the free flow of work in the EU.
Re. Danish - at my first day at Comp Sci at Tech. U of Denmark, I had no clue what this "oversætter" (literally "translator") they were talking about was. Turned out to be term coined in the 1970's for what I knew as a compiler. Esp. among older staff there, they still use the Danish term.
I'm not an expert, but I would suspect there many disciplines have a language that is commonly used, and it so happens that Comp Sci happens to be English.
That is, words like "tempo," "crescendo," and "forte" are Italian in origin, but who's going to say, no, they're not English? They're native enough.
Now, let's take a discipline with non-English terms. Take Go for example. There are many terms in Go that are shared between Chinese, Japanese, and Korean schools. They can be written similarly in hanzi/kanji/hanja, with two catches: 1., the same characters are read differently in different places; 2., Westerners, using exclusively the Latin alphabet for their native needs, cannot read the hieroglyphs.
The result? What term should English speakers use? Pick one! Which one? Whichever! For Go, the Western world picked Japanese. You have ko, moku, seki... So which was the common language? There are now two answers. First, there was a common script, which was Chinese characters. Second, there was a commonized pronunciation, which came from Romanized Japanese.
It's not a "so happens to be" thing. It's a speed and scale of adoption thing, and in this way it is a "majority wins" game. And here, the winner is the Latin alphabet. To come around, I would suspect there are few disciplines that do not turn into a Latin-alphabet-standardized-, and in effect, English-, field.
Just as programming languages are expressive in different ways, so are spoken languages, and the designers of programming languages, when exposed to a few ways of structuring ideas, end up writing code the same way.
You can argue that mathematically they are all the same. The computer doesn't care, but the human-readable code is different. If you have ever structured your code so it reads more like English (example: _why's poignant guide), it reflects this thought process.
Another example: somebody once remarked that lisp is a counterintiutive way of structuring code because that's not how language is normally used. If one has learned a few other spoken languages, it is immediately obvious how intuitive the lisp syntax is.
Of course, again, on the metal it makes no difference, so technically we can all "not care"... but when I see elegant code, it's elegant both to the computer and to the human, and that's where it's art, otherwise it's just raw optimization.
Working in markets with large numbers of non English speakers is quite difficult, as the article implies. Very profitable though. Chinese people like games as much as we do, and they will actually pay for them!!!
Yes, the Chinese would never pirate software!
Or probably English is simply the most easy to learn.
With this in mind, i would not call English easy to learn. There are far too many special cases and bizarre twists to get to true fluency (it might be east to get to a passable spoken version, though).
It's difficult to explain to a learner why it is technically correct but not usual to say "This is my election for lunch", or why a "hot chick" goes to college while a "hot chicken" is dinner.
In the early part of the 1950's in the USA, a game called "Violence Fight" was in vogue among mafia, reckless drivers and general businessmen. The "Violence Fight" was the game to struggle for "No. 1 Quarreler" with fighters who were gathered from all parts of the USA speaking boastingly of their strength. And of course a lot of winning money as well as the honor were given to the "winner".
(Example taken from here http://www.youtube.com/watch?v=MqnBWgrSt30). Other languages (e.g. french) just don't tolerate stuff like this.
For an example of a really easy to learn language, see modern Turkish. For various reasons (vacations and chicks) I've tried and failed to learn many languages. I came closest with turkish, vocabulary was my only sticking point. Ataturk simplified the language only 70 years ago, and it worked fantastically well.
You can walk from Paris to Rome, never finding two neighboring villages that can't understand one another. Somewhere along the way, what they're talking isn't exactly French or Italian -- they just polish up their speech when the government men from France come.
That's less true today than it used to be, of course; more people go to the city for education. But it's still true of everybody's grandma.
My point is that all human languages are fault-tolerant.
To disagree with this comment from Jeff's blog, see
http://www.xibalba.demon.co.uk/jbr/ranto/
English comes by its huge network advantages honestly. All four of my grandparents were born in the United States, but three were born in households in which a non-English languages was spoken, and two were educated entirely in another language (German). Everybody learned English, and that was no big deal. The majority of Americans have ancestors who didn't speak English before they arrived in America. English is by no means perfect, but it is pragmatic, as Jeff says.
Technical CS terms in Turkish get invented by a handful of academics. Since this is a pretty close knit community, the jargon does not get socialized very well and leads to unwieldy, inorganic words. I don't live in Turkey, so I pretty much don't have a chance in hell of understanding Turkish CS speak.
That said, there might be some language communities out there, large enough to be self sustaining. Chinese seems like a good candidate. The fact that there is a Chinese clone of Atwood's Stackoverflow also supports this: http://news.ycombinator.com/item?id=537246
No Jeff, working in VB is painful.
Anybody who wants their program to be used in another country needs to localize it, and that point, a simple Google search is enough.
Let me hum a few bars: if your customers don't speak English, and your colleagues don't speak English, and your business partners don't speak English, then your refusal to use languages other than English cannot be justified by it being efficient. It is hubris to think otherwise -- an arrogant sort of laziness of thought which is entirely different from the productive laziness that programmers generally cultivate.
A programmer who cannot talk to his colleagues and customers, and blames his inadequacy on them, is a failure at his profession : writing code which solves problems for people. If you only get as far as "writing code" without understanding the people and their problems, congratulations, you fail.
On the plus side, the prevalence of attitudes like this means you can do pretty well for yourself if you're bilingual. I got stopped on the train today by the guy who got me my current job (random coincidence -- we live in adjacent small towns). He started the conversation like he always does "Hey, Patrick, how's work? Say, do you know any bilingual engineers looking for employment?"
This week apparently its an aerospace project that needs them. Its always something -- there's hundreds of billions in trade happening between the US and Japan every year, huge portions of it are high-tech, and engineers here are only marginally better at speaking English than engineers in America are at Japanese. (In my experience, though, they're not aggressively proud of being ignorant.)
I'd love to try my hand at reading it. Chinese is my stronger language, but I can read a lot of Japanese for meaning.
Agreeing with your point that everyone, especially a native speaker of English, is well advised to learn the language of customers, I still agree with Jeff's main point that if we want an interlanguage (a "lingua franca") for programming, that language will have to be English for the foreseeable future. Not because Japanese and Chinese and Korean people are unimportant, but for the same reason that Japanese and Chinese and Korean people very often use English for conversations among themselves that include no native speakers of English--an interlanguage gains usefulness from network effects, and English dominates all other conceivable choices of an interlanguage in its network advantages.
頑張って
Given a choice, I'd always pick English over Hindi as my language of choice, not because I dislike Hindi, but because I'm much more comfortable with English. Why? Because I read books written in English, read English newspapers, watch English movies and TV shows and read a whole lot of technical content written in English. Thanks to the American tendency of "exporting" their culture, English is all I've been exposed to (and I consider it a good thing).
In real life, most (educated) Indians speak a mish-mash of English and Hindi. Modern Hindi itself is a mish-mash of words borrowed from Urdu, Farsi, Punjabi etc. It's actually pretty liberating, being able to express yourself without even having to stop to think how to phrase a sentence. Can't complete a sentence in Hindi? End it in English.
Some countries don't have native content-producing industries, and so you could say that the importing of foreign culture squashes these industries before they can develop. On the other hand, keeping it out is basically censorship.
(* This ironic use of the work "liberate" is a sick joke that I'm not proud of, but it does sum up the cynicism most brain-holding Americans feel about their government's foreign policy.)
Python coders from non-English speaking countries: please write your comments in English, unless you are 120% sure that the code will never be read by people who don't speak your language.
And that's for all code written in Python, not just the code that goes into Python. Guido is Dutch.
The HN post is here http://news.ycombinator.com/item?id=539276