7 ms·
Chinese Python: “Translating a programming language”
- quant18 17y agoI 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 http://news.ycombinator.com/item?id=894489
- technomancy 17y agoArc 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?
- est 17y agoChinese 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 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 17y agoInteresting, 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 17y agoI'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 17y ago> 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 17y agoModern 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 ...
- zephjc 17y agoEat 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 17y agoSweet. 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.
- redsymbol 17y agoI 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/179642 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/... Edit: fixed a few typos.
- zephjc 17y agoWhat would be interesting is to take someone out of a non-technical and very 'foreign' culture, like the Maasai, and have them help derive a programmatic problem solving methodology. For example, give them a set of known classical programming problems and see what methods they use to arrive at a solution. I'm not sure this would bear much fruit, but it might still be interesting.
- elblanco 17y agoDone http://www.dangermouse.net/esoteric/haifu.html http://www.dangermouse.net/esoteric/haifu.html
- vorg 17y agoBy 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 17y agoI 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 17y ago'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 17y agoShorter by token count, not byte count.