---
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                              写
  ---------------------------------- ----------

具体边界条件
============

不要修改字符串里的东西 怎么做?

怎么样打印两列, 左边是中文版, 右边是英文版
