

Chinese Python: “Translating a programming language” - sailormoon
http://reganmian.net/blog/2008/11/21/chinese-python-translating-a-programming-language/

======
redsymbol
I discovered a fascinating book once. It was written for English speakers, and
explained certain Japanese words. There were, I believe, about thirty
chapters, each covering ONE Japanese word: introducing the cultural background
needed to truly understand the word; explaining all of its rich, subtle
meanings... an attempt to teach the idea the word truly represented. The
thesis is that many important single words simply have no direct, concise
translation, to an English word or phrase.

Most mainstream programming languages today - from C, to Python, to Perl, to
Java, to Javascript and Lisp [0] - were created by someone who was at least
fluent in English - if not having that as their native language - and who
"grew up" as an engineer by working with and studying other such languages. I
wonder what kind of influence that has had on their design. Consider the
if/then/else idiom that most programming languages have; or the while loop, or
perhaps even the common OOP concept of classes (sets) and instance objects
(members of a set).

Soon, if not already, there will start emerging higher-level, general-purpose
programming languages that are conceived, designed, implemented and evolved by
someone (or a group) that cannot read or write English, but has been fluent
their whole life in Mandarin - someone who is a product of Chinese culture. Or
Hindi, and India. Or Tagalog, and the Philippines. Some language and culture
vastly different from that of the Germanic and Romance tongues, like English.

I wonder what those computer languages will be like. Obviously there must be
similarities; it's still going to have to run on some hardware derived from
von Neumann architecture, almost certainly. And it's difficult for me to
imagine the subroutine / function call abstraction not being present in some
form or another. But then, the only natural language I know well is English.
Perhaps there are alternative forms I have not imagined yet.

The linked article describes an important start, I think. Even if it's
technically just a different keyword / identifier mapping, perhaps it will
start the gears turning in native Chinese speakers' minds.

[0] I consider Ruby a current "mainstream" language like Perl/Lisp/etc., since
it was derived from the other languages mentioned - see this post by Matz:
[http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-
talk/...](http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/179642)

Edit: fixed a few typos.

~~~
delackner
Was the book you saw perhaps this: [http://www.amazon.com/Dictionary-Basic-
Japanese-Grammar/dp/4...](http://www.amazon.com/Dictionary-Basic-Japanese-
Grammar/dp/4789004546)

That book more than any other helped really solidify my japanese, precisely
because it did what you say: it functioned as a foundation reference to the
core of the language.

As for people with very basic modes of thought that are so different that
their expression of logical statements would be different... Logic is logic.
Its english grammar is a thin abstraction over its mathematical form, so I
would be surprised if non-english-conceived programming languages would be
dramatically different (aside from syntactic ordering perhaps).

Actually writing that sentence forced me to think of one such way a Japanese-
inspired programming language might differ dramatically: since the subject of
each verb is often left unstated in conversational japanese, you might have
primitives that set the current 'variable context' and then all messages after
that yet before the next 'variable context' change would go to that variable.
something like:

foo(a, b, c){ talk_to(a) bar(b, c)

bar would implicitly actually be bar(a,b,c) (or a.bar(b,c) if you prefer).

This example seems pointless, but there might be other worthwhile ones.

------
quant18
I don't think translating the language itself makes that much of a difference.
What most beginning hackers really need is the ability to search and read
forum posts and code from a bunch of advanced hackers who already went through
the problems they're having. Obviously English has the most depth in this
regard. Chinese and Russian might be "deep enough" to get you to a decent
level.

Beyond those three languages, I get the sense it drops off very quickly. I
wouldn't want to be a monolingual Mongolian or Estonian trying to get Haskell
help during a late night coding session, for example ...

some previous discussion on a similar topic here:
<http://news.ycombinator.com/item?id=894489>

------
est
Chinese as a programming language has gained some market among Chinese
programmers. There's government backed 汉编 which has little value, but there's
also an cooperate-run programming language named 易语言, it's quite good. It can
compile natively, object-originated, has all the features of VB, even support
cross-platform UI (Win32 & GTK, IIRC).

<http://www.dywt.com.cn/eftx/jdyx.htm> (in Chinese)

An actual use case of 易语言 I can think of is the 360Safe, the No.1 anti-malware
tool in China, part of its UI is written with 易语言

~~~
pradocchia
Interesting, I'm not familiar w/ Chinese programming jargon, but I can almost
translate the feature line word for word:

> 完全面向对象，跨平台，支持Unicode、多线程，垃圾自动回收，类型反射，静态编译，动态类型装载等等

Completely object oriented, cross-platform, [with] Unicode support, multi-
threading, garbage collection, reflection, static translation (?), and dynamic
type something (装载/zhuangzai, but I'm not sure what it means in this context--
ah! DLLs?).

The semantics & translation are much easier than what you would read in the
newspaper.

~~~
riobard
I'm native Chinese. Here's my translation of the forementioned features:

"completely object-oriented, cross-platform, support Unicode, multithreading,
GC, (type) reflection, statically compiled, dynamic type loading, etc"

I believe "dynamic type loading" must refer to something similar to DLLs here.

Though I'm not so sure about the whole idea of programming languages in
various "human languages". It's the same doubt I have with internationalized
domain names: not everyone can read/type it if they want.

It's fine if the the purpose is to teach primary school kids about programming
(even though this isn't so good a reason: I know now in many primary schools
in China, kids are taught English starting from grade 1), but for any serious
programming it's better done in English, esp. in a world globalization and
outsourcing dominate the software engineering field.

I'm a strong believer that every human being on the planet should speak at
least one common language in order to have basic communication and
understanding of other cultures. A few hundred years ago it was Latin; then
French; now obviously it's English. And I'm quite happy to see the computer
science field is standardizing on English.

~~~
pradocchia
> statically compiled

Ah, of course. I forgot what "compile" actually means!

I don't know, these words seem like a _really_ thin gloss on their English
equivalents.

A Japanese mathematician I know will mentally translate all the terms in a
Japanese-language math paper to English. "It just sounds silly otherwise." I
wouldn't be surprised if Chinese programmers do the same thing.

~~~
riobard
Modern Chinese nouns, esp. in technical fields, tend to be word-by-word
translation of their original/English terms. It's crazy to invent a new set of
terms for the same thing.

Unfortunately most Chinese translation of computer science/programming books
are just garbage. The irony is that if you cannot understand a translated
sentence in Chinese, try to revert it (usually word-by-word) back to English
and then suddenly it rings the bell. That forces me to read the original one
instead ...

I heard Japanese have better translation though ...

------
technomancy
Arc should be ported to Chinese; it looks like you'd get much shorter programs
out of the deal. And that's what language design is all about, right?

------
vorg
By utilizing the potential tersity of CJK characters in the language syntax,
English-speaking programmers could make their programs much shorter wrt lines
of code.

Because there's thousands of CJK characters to choose from, why not just use 印
instead of 印出 for 'print', or 如 instead of 如果 for 'if'? By using bracketing
syntax instead of Python's indentation, we can cut down lines of code.

Here's your example using a terser style (the strings and comments would still
be in English):

#!/usr/bin/env zhpy

# 檔名: while.py

數= 23, 運= 真

當(運){

    
    
      猜= 整(輸入'Enter an integer: ')
    
      如(猜 == 數){
    
        印'Congratulations, you guessed it.'
    
        運= 假 # this causes the while loop to stop
    
      }否如(猜<數) 印'No, it is higher than that.'
    
      否 印'No, it is lower than that.'
    

}否 印'The while loop is over'

印'Done'

~~~
arohner
I think that's a good argument _against_ using character count as a measure of
program length. i.e. translating 印 to print does not improve the program in
any way, so it shouldn't score better in any measure of complexity.

~~~
vorg
'print' is 5 characters long, 印 is 1 character long. Though in most fonts, CJK
characters are twice as wide as Latin, so better make that 2 chars long. 5
chars vs 2 chars over an entire program adds up. In non-indentation languages,
that can mean 3 lines can be put onto 1 line. Shorter programs are more
readable, have less errors.

~~~
Sandra_Snan
Shorter by token count, not byte count.

------
zephjc
Eat your heart out, Obfuscated Perl! :-)

This might be misplaced effort - the many chinese coders could be helping
improve standard Python, libraries, i18n in various Chinese dialects, etc. -
but this is still fascinating.

------
xiaoma
Sweet. That program is in traditional Chinese, BTW. It must be from TW or HK.
People in China would be using simplified.

I've also seen Japanese programming languages before.

------
elblanco
Done <http://www.dangermouse.net/esoteric/haifu.html>

