Programming and (human) languages
StackOverflow just announced that they’re opening up yet another foreign language version of SO, this one in Japanese. They’ve already done this in Portuguese, and now it appears they’re continuing on the same path. When people point out that the “convenience” that this provides would be counterproductive in the long run as it fragments the unified knowledge base that SO has worked for years to build, the standard response is that “learning English is difficult” and this makes it easier.
Color me skeptical. I’m reminded of something I heard several years ago, from an old retiree. He spoke with a heavy but intelligible German accent about his childhood dream:
When I turned 11 we had to leave East Germany overnight because of the political orientation of my father. Now I was going to school in West Germany, which was American-occupied at that time. There in school all children were required to learn English and not Russian. To learn Russian had been difficult, but English was impossible for me. I thought my mouth was not made for speaking English! My teachers struggled. My parents suffered. And I knew English was definitely not my language.
But then something changed in my young life. Almost daily I rode my bicycle to the airport and watched airplanes take off and land. I read, studied, and learned everything I could find about aviation. It was my greatest desire to become a pilot. I could already picture myself in the cockpit of an airliner or in a military fighter plane. I felt deep in my heart this was my thing!
Then I learned that to become a pilot I needed to speak English. Overnight, to the total surprise of everybody, it appeared as if my mouth had changed. I was able to learn English. It still took a lot of work, persistence, and patience, but I was able to learn English!
Why? Because of … a strong motive!
The man who said this, Dieter Uchtdorf, went on to become a pilot in the German air force, and then later a commercial pilot for Lufthansa, who worked his way up the ranks and was Senior VP of Flight Operations by the time he retired.
Programming has two important things in common with aviation:
- You have to be fairly intelligent to be competent at it so you don’t end up causing crashes.
- The lingua franca of the whole ecosystem is English.
As Dieter Uchtdorf’s example shows, an intelligent person, even one who has trouble with the language, can learn it if they’re motivated. And this benefits everyone, both the person, who is able to learn from the vast existing knowledge base, and then the rest of the programming community, who are able to learn from this person’s contributions to it down the road.
Niklaus Wirth is Swiss, and the official languages of Switzerland are German, French, Italian, and Romansh, with the former two comprising the lion’s share of the country’s speakers. Just imagine if he had written Pascal in German or French! Or what if Edsger Dijkstra wrote his highly influential papers, that contributed so much to our understanding of computer science, in Dutch? Imagine they had both done so! Where would the popular Ruby on Rails framework be if Matsumoto had produced it entirely in Japanese? Not to mention Embarcadero’s latest database technology; how useful would FireDAC be if the whole thing was in Russian?
I’m not trying to make some silly ethnocentric claim that English is an inherently superior language for understanding programming. I’m bilingual, and I know enough about linguistics to understand what a mess my native tongue really is! But despite all that, it is the accepted standard for computer programming, and as the old saying goes, when you have more than one standard, you have no standard at all.
If Pascal had been created in German, or Rails in Japanese, they would probably still work just as well as they do on a fundamental level, (except perhaps for a few quirks of the German language causing strange corner cases related to case insensitivity,) but there would be a whole lot less people using them because they don’t adhere to the standard. This, in turn, would mean less software gets created for them, which makes them less of a useful product because the community always has been what makes development products worth using, at the end of the day. It bothers me a little to see StackOverflow not understand this important principle. What they’re doing in the name of being helpful may be helpful indeed in the short term, but over the long term it will cause more harm than good to developers who use the site.