In mathematics we make heavy use of symbology. For instance, we use "+" instead of "plus", "∑" instead of "sum", "π" instead of "pi". This aids mathematics in being clear, compact, and universal across all human languages.
In programming languages, we generally only use English. There are a few exceptions for grouping characters like "()" and "{}", punctuation like ":", and the basic mathematical "+", "-", "/". However the vast majority of the language is in English, such as "if", "else", "for", "while", "import". Python is no exception to this tendency.
English speakers may at this point simply claim that everyone must learn English to program, and that is that. However this is somewhat unrealistic, given the long and difficult course of study required to understand English well for non-native speakers, and furthermore promotes pushback with the charge of cultural imperalism. Even among those programmers who can get by in English, it is still much easier and more comfortable to use one's native language, as evidenced by the large number of translations available for standard programming works.
German is a typical example. The language is not so dissimilar from English that with the aid of a dictionary a programming text could not be understood, however it is much slower for all but the most gifted learners than reading a German translation. I've seen a bookstore filled with German programming books of almost any language and system you can imagine. I've seen SAP source code written in ABAP with English control words but all variables and comments in German.
With Chinese the difference is even more striking. Not only is it even more difficult for a Chinese speaker to understand English with a dictionary than for a German speaker to understand, given the similar language backgrounds, but there is the added difficulty of international character sets, input methods, and the "ASCII-first" mentality. In addition, with China becoming a greater economic and social power, there are over ten times the number of Chinese speakers on the Internet than German, with an increase in demand for understandable code. In fact there is even a python fork where the control words are entirely in Chinese:
Chinese Python
Here is an extract below, for help in understanding, "回答" means "answer", "有/没有" means "have / doesn't have", "读入" means "read", "写" means "write", "如" means "if", "不然" means "else", and "否则" means "otherwise":
回答 = 读入('你认为中文程式语言有存在价值吗 ? (有/没有)') 如 回答 == '有': 写 '好吧, 让我们一起努力!' 不然 回答 == '没有': 写 '好吧,中文并没有作为程式语言的价值.' 否则: 写 '请认真考虑后再回答.'
It may be a bit of a struggle, but if you look at it a few times you can see it's a simple program which happens to be asking about the value of Chinese as a programming language. It asks the user for input, and then based on the user answer, has an if block to write three different responses on the output.
Chinese Python is a particularly good example for English speakers because it shows how different and difficult it is to think and compose programs in a very dissimilar written language. This may help give a perspective for the difficulty faced by Chinese speakers in working with English programs. I had a friend from Hong Kong whose way of dealing with this problem in programming classes was just to lookup the Chinese words for the English in his English programming textbook and write all the Chinese words above the English words which then made it much easier to review and study.
So on the one hand we have the monolingual approach of only using English keywords and forcing everyone to learn English, on the other hand we have the fragmentation approach whereby every major language does its own fork so it can have control words in its native tongue. Between these two extremes I could see a compromise of multilingual keywords for the same code base. You could have a language-locale header for every source file, as with XML encodings, and then process keywords from that language lookup table for the given source code, the *.py file. In the compiled binary, the *.pyc, you could just store the keyword ID. This would let you have multiple source code language files in the same project, and furthermore let a person view the source and debug a binary in their own language, with the language keywords of that particular user at runtime. So the Chinese Python example above would look, to someone with an English overlay, like:
回答 = raw_input('你认为中文程式语言有存在价值吗 ? (有/没有)') if 回答 == '有': print '好吧, 让我们一起努力!' elif 回答 == '没有': print '好吧,中文并没有作为程式语言的价值.' else: print '请认真考虑后再回答.'
As you can see this is much more understandable to English users. We could have similar overlays for English, Chinese, German, French, Spanish, Italian, Japanese, etc. Right-justified languages such as Arabic or Hebrew may be slightly more difficult, but with an abstracted user display class, could be made to work seamlessly.
Besides allowing language overlays in Python, it is also possible to adopt universal mathematical symbols as the keyword language. This could be an additional language overlay, but alternatively the default keyword language, understandable across all languages. The language APL took this concept to a new level in the 1960s, even creating new symbols for highly compact matrix operations.
APL
An example APL program below that finds all primes between the interval 1..R:
(~R∊R∘.×R)/R←1↓⍳RWhich, although very inefficient, is rather brilliant and elegant once you study APL. However such dense symbology, especially with custom-made symbols, is difficult to understand and contrary to ease-of-reading which is one of the goals of python.
Instead, let us apply the same symbology principle but only to python keywords, using existing mathematical symbols that any computer science graduate would be familiar with from formal logic. Furthermore we will use symbols readily available in ASCII so we do not need to use any custom characters.
Using the substitutions:
<= raw_input (from unix stdin)
=> print (from unix stdout)
? if
?: elif
:: else
Substituting this into our earlier example results in:
回答 = <=('你认为中文程式语言有存在价值吗 ? (有/没有)') ? 回答 == '有': => '好吧, 让我们一起努力!' ?: 回答 == '没有': => '好吧,中文并没有作为程式语言的价值.' ::: => '请认真考虑后再回答.'
As python evolves, and encounters more of the non-English speaking community, we may expect keywords and built-in functions to become more and more symbolic, improving legibility for a worldwide audience.
If you want to learn and get a good sense for APL, and you're on Windows, the best I've found is Dyalog. You can evaluate free for 90 days, and they have a good IDE with all the special characters on a toolbar with all their definitions. Definitely the best tool for learning APL.
ReplyDeletepython training in bangalore | python online training
ReplyDeleteaws training in Bangalore | aws online training
artificial intelligence training in bangalore | artificial intelligence online training
machine learning training in bangalore | machine learning online training
data science training in bangalore | data science online training
Ankara
ReplyDeleteBolu
Sakarya
Mersin
Malatya
THGZ
Denizli
ReplyDeleteErzurum
Samsun
Malatya
Niğde
FR4A
görüntülüshow
ReplyDeleteücretli show
T7CNS
729FE
ReplyDeleteKastamonu Evden Eve Nakliyat
Hakkari Şehirler Arası Nakliyat
Muş Evden Eve Nakliyat
Konya Lojistik
Mardin Şehirler Arası Nakliyat
Nevşehir Evden Eve Nakliyat
Bartın Evden Eve Nakliyat
Çerkezköy Koltuk Kaplama
Çerkezköy Motor Ustası
E42D7
ReplyDeleteBatman Parça Eşya Taşıma
Bartın Şehirler Arası Nakliyat
Karapürçek Parke Ustası
Isparta Parça Eşya Taşıma
Sinop Lojistik
Ağrı Şehir İçi Nakliyat
Ordu Şehirler Arası Nakliyat
Malatya Şehir İçi Nakliyat
Adana Şehir İçi Nakliyat
98CDE
ReplyDeleteCate Coin Hangi Borsada
Eryaman Parke Ustası
Batman Parça Eşya Taşıma
Bingöl Parça Eşya Taşıma
Bitlis Lojistik
Cointiger Güvenilir mi
Arbitrum Coin Hangi Borsada
Tokat Şehirler Arası Nakliyat
Kocaeli Şehir İçi Nakliyat
4C4D2
ReplyDeletekaraman rastgele görüntülü sohbet ücretsiz
bitlis canlı görüntülü sohbet
Hatay Canlı Sohbet Sitesi
konya görüntülü sohbet
rastgele görüntülü sohbet uygulaması
sivas canlı sohbet siteleri
Antalya Canlı Ücretsiz Sohbet
aksaray mobil sohbet chat
kilis rastgele sohbet
06B2D
ReplyDeleteGümüşhane Kadınlarla Görüntülü Sohbet
ücretsiz görüntülü sohbet uygulamaları
Giresun Mobil Sohbet Siteleri
malatya canlı görüntülü sohbet siteleri
yalova görüntülü sohbet siteleri ücretsiz
van telefonda görüntülü sohbet
Burdur Canlı Sohbet Ücretsiz
bayburt kadınlarla rastgele sohbet
adıyaman ücretsiz görüntülü sohbet uygulamaları
A1C18
ReplyDeleteCoin Kazma Siteleri
Soundcloud Beğeni Satın Al
Nonolive Takipçi Satın Al
Bitcoin Giriş Nasıl Yapılır
Soundcloud Takipçi Hilesi
Periscope Beğeni Hilesi
Tiktok Takipçi Satın Al
Bitcoin Nasıl Alınır
Twitter Takipçi Satın Al
E25BA
ReplyDeleteCoin Madenciliği Siteleri
Parasız Görüntülü Sohbet
Bitcoin Nasıl Üretilir
Twitter Trend Topic Hilesi
Keep Coin Hangi Borsada
Görüntülü Sohbet Parasız
Referans Kimliği Nedir
Dlive Takipçi Satın Al
Binance Para Kazanma