<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On 19 October 2016 at 10:19, Renato Golin <span dir="ltr"><<a href="mailto:renato.golin@linaro.org" target="_blank">renato.golin@linaro.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class="">On 4 October 2016 at 19:00, mats petersson via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div><div><div>Option 1 seems a little meaningless to me, as there are only a handful of keywords in C, and a few more in C++ to learn. Yes, there is also a large amount of C and C++ libraries that go together with the compiler, but these are not (in general) the task of Clang directly. I would also argue that this is NOT a good way to go. Programming is very much an international activity, and although there are probably more people that natively speak & write Chinese than any other language in the world, outside of those with Chinese as a native language, the Chinese language is not well known, where English is a reasonably workable language in many parts of the world, whether the native language is Chinese, German, Korean, French, Russian or Arabic. A program written in Chinese would be completely unreadable by me and I would guess about 90% of the subscribers of this mailing list.<br></div></div></div></div></div></div></blockquote><div><br></div></span><div>Hi Matt,</div><div><br></div><div>I'm surprised by your comments. The concern is very real.</div><div><br></div><div>The reason why programming languages are written in English is not because English is the most popular second language in the world, but because the development of computers started in England and was popularised in the US.</div><div><br></div><div>This is not just about learning English to program, this is about your native tongue, and how you write it, and how you think about it.</div><div><br></div><div>As Brazilian, I find programming in English reasonably simple. I write left-to-right, I express "if" as "se" and "while" as "enquanto", and I speak "==" as "igual". Reading C++ is very natural to me, even if it's in a different language.</div><div><br></div><div>But Arabic speakers read right-to-left and their culture is different enough that made people create Arabic programming languages [1]. It was mostly an art project, but the concern, again, is real. People think differently.</div><div><br></div><div>Most Asiatic countries have completely different writing systems, which is not just top-down, but symbolic rather than syllabic. This is a huge shift in understanding of the language, and it's a lot harder for native Chinese speakers to "read" English *code*.</div><div><br></div><div>This puts a huge burden on non-English speakers to not only learn the reality of computing (logic, hardware, algorithms), but another language entirely and a special subset that only makes sense for computer programmers. The burden is worse for the people that grew up with a completely different communication mindset.</div><div><br></div><div>I think your remarks on the English language being "workable" and spoken by 90% of this mailing list were very poor, (unintentionally) bearing prejudicial. European languages are far apart from each other, but they have the same thinking pattern. Asian languages are much further apart from European ones, and changing the thinking pattern is *really* hard and not at all the same thing.</div><span class=""><div><br></div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div><div><div></div></div></div></div><div>Option 2 should already work. If there is a specific issue that doesn't work, that should be reported as a bug.<br></div></div></div></blockquote><div><br></div></span><div>The point here is to program in a way that is expressive to different people. Using variable names in Chinese using UTF-8 is not enough.</div><span class=""><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div></div></div><div>I would also suggest that for someone wishing to work as a software developer for a large international company or a company trading on the international market, being able to communicate in English is almost certainly a great benefit to the career prospects, if not fully required. I say this as a person whose first language is NOT English.</div></div></blockquote><div><br></div></span><div>Again, I believe this response misses the point. Technology and Science are for everyone, not only those that can easily learn a few new languages plus a whole new field.</div><div><br></div><div>The dominance of English in STEM subjects is real, but that doesn't mean we have to accept it or even think it's the only way forward. I truly believe it isn't.</div><span class=""><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div> Note that there has been programming languages in "other than
English",
but they tend to not become very popular, for the reason I described
above: Not many outside of the native language region are able to use
that language. Yes, Chinese is a much bigger language than French of
German, for example, but it's still not used by most other countries in
general communication, which is the key point: software is an international business, it is an international community, and using one human language for communications with the community makes the group understand each other, re-use each others solutions and being able to help each other.<br></div></div></blockquote><div><br></div></span><div>This is not about language, but about thought process.</div><div><br></div><div>Software is a learning tool, and as such, should be available to *everyone*. Not only businesses. </div><div><br></div><div>Software re-use has nothing to do with the (programming) language you write in, but in the well defined and documented ABIs in between.</div></div></div></div></blockquote><div><br></div><div>But if the ABI description [or it's implementation] looks like the subject of this email, I certainly wouldn't have a chance to figure out if it's right for my needs, or fix any bugs that may be inside it. Sure, I probably can't fix a significant bug in LLVM or Clang either - but at least it's not completely impossible for me to TRY to understand it - this applies of course, if I've written a wornderful API or ABI in Swedish for most members of this list, just as much as Chinese, and if you wrote one in Brazilian, I would have no chance either (even using google or bing translate, only SOME of the translations from my Brazilian and Chinese friends facebook posts are understandable without some clever guessing or knowledge of the context).<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>As to the practicalities of making C++ "look" Chinese, I don't think it will work in that way. But it should be possible to achieve a few improving goals...</div><div><br></div><div>1. As Matt said, try to use Chinese characters as variable/function names using UTF-8 and see if it helps. I'm not sure how name mangling will work, though.</div><div><br></div><div>2. Try to change the Clang parser to recognise Chinese words for C++ keywords. This would be a departure from the C++ standard, no doubt, but an interesting concept regardless.</div><div><br></div><div>3. Start a new front-end for LLVM, one that implements a language using the Chinese thinking pattern and transforms into LLVM IR. If the transformation matches well, it may make interoperability with the rest of LLVM supported languages much easier.</div></div></div></div></blockquote><div><br></div><div>This, #3 is in my opinion, probably the best approach for a "teaching language".<br><br></div><div>If the purpose is to teach programming C++ is along the lines of the answer to "How do I get to <some place>" with "I wouldn't start from here". Yes, it's a very powerful and all encompassing language, but there are many languages that are much easier and better for a beginner or intermediate programmer. Python, Pascal, Java - or something completely new, more aligned with the way Chinese language works.<br><br></div><div>If the purpose is to create commercial and international software, I still would argue that English language is more or less essential. I have worked for a couple of larger Swedish companies, and the programming AND documents that go with that, are all written in English - and I know that French, Spanish, Italian and German companies do the same, because it makes it possible to communicate with people that do not speak/read/write Swedish, French, Spanish, Italian or German.<br><br>--<br></div><div>Mats<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>cheers,</div><div>--renato</div><div><br></div><div>[1] <a href="https://en.wikipedia.org/wiki/Qalb_(programming_language)" target="_blank">https://en.wikipedia.org/<wbr>wiki/Qalb_(programming_<wbr>language)</a></div></div></div></div>
</blockquote></div><br></div></div>