Write Python in Chinese
Project description
author:
- ChenFeng
Hanthon 汉化的Python
曾有学艺术的朋友问我, 能不能创造出一门中文的编程语言, 我毫不犹豫地问答, 不可能! 近日看到用文言文来编程的一个项目, 心中一动, 虽然不能创造一门中文编程语言, 但是我们可以把英语写的编程语言翻译成中文啊.
本项目的目标很简单, 将Python语言的若干关键词, 内置函数进行替换, 从而实现中文编程.
思路
利用文言文, 采取意译, 不追求局部的精确, 而保证整体的通顺, 精炼
把英文翻译成中文, 会造成冗余, 比如好端端的if只需要打两个字 现在变成如果, 需要输入ruoguo并且在候选项中选择, 实际需要敲7次键盘, 非常麻烦 所以改用若, 如果使用的是双拼, 则只需要输入ro再选择一次就可以了,敲击键盘3次 也就是说, 用白话文会造成意思的冗余, 而使用文言文, 能尽可能精简文字, 实际上, 文言文最初正是为了用更少的字表达更多的含义而被创造出来的, 因此非常适合用来汉化编程语言, 在本项目中, 很多关键词都进行了意译, 尽量用文言文的思路来 翻译, 比如lambda, 如果用白话文翻译, 就是 拉姆达算子, 可称得上莫名其妙 所以我选择一个`道`字, 道有道路的意思, 引申为从此处到远处的一种过程, 又因为lambda可以 创造高阶函数, 非常玄妙, 也比较适合用玄妙的`道`来描述
比如`for`, 按字面意思应该翻译成 `遍历`, '循环' 但这样做大大增加了键盘敲击量, for作为一个常用关键字, 必须压缩到一个字 而且for经常性的用法是 for line in file for i in range() 这整句话翻译成中文, 应该是 对于文件的每一行都..., 对于区间里的每一个i都如何如何
所以我设计成 for -- 对 in -- 于 以上句子就变成 对 line 于 file 很符合文言文的状语后置, 相信经常读文言文的同学应该会感到亲切
比如`pass`,表示无意义的语句, 仅仅用来占位, 字面翻译为`过去', 也可以翻译成一个字'`过` 但是在实际编程中, pass经常被用于, 这一段目前还没有想好, 过段时间再来补上的场合 所以用`云云` 表示不知道该说什么, 比`过去` 更加贴切, 而且pass是一个低频关键词, 用两个字也不影响工作效率.
`def` 应该是最常用的关键词了, 所以必须只能用一个字, 英文有一个好处, 就是可以简写, change directory 可以写成cd, 代价就是除非经过特殊训练, 不然弄不清楚, def是把'define function'截断, 只保留前三个字母, 中文没有这种能力, 但是中文有强大的表意功能, 仅仅用一个我们可以把`定义`截断, 仅仅保留`定`字 但是这么做不太恰当, 下面句子读起来很别扭 `定 函数1(参数1, 参数2)` 如果换成有, 读起来就比较顺畅 `有 函数1(参数1, 参数2)`
设计目标
以Python作为试验语言 不进行语法, 语义的修改, 保留所有标点符号的原本含义, 仅对英语关键词和内置函数进行替换, 可以理解为Python的汉化补丁
关键词对照表表
参见`table.org`
i,j,k 子丑寅卯 a,b,c,d 甲乙丙丁
关键字
控制流关键字
面向对象关键字
逻辑关系关键字
内置函数
数据类型
I/O
增删改查
if 若 elif 若则 else 否则 for 对 while 当 in 于 is 即 as 为 None 空 True 好 False 坏 return 得 lambda 道 del 删 def 有 with 夫 global 外 pass 云云 continue 续 break 弃 class 名 super 祖 self 己 import 引 and 及 or 或 not 不 not 无 yield 求 from 自 try 试 except 误 int 整 list 表 dict 典 str 文 len 长 print 见 range 区间 [[init]{.underline}]{.underline} 初 append 补 sort 排序 sorted 被排序的 open 开 read 读 write 写
具体边界条件
不要修改字符串里的东西 怎么做?
怎么样打印两列, 左边是中文版, 右边是英文版
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.