草蟒 12 月更新:核心功能文档和坑属性/方法完成中文化

来源: 投稿
作者: 草蟒老吴
2020-12-14

草蟒今日发布本年度最后一次更新。

本次更新主要内容:

  • 完成内置函数、类型和对象的文档汉化;
  • 完成主要“坑”属性和方法汉化。

文档对编程的重要性不言而喻。初次了解或使用某个模块、函数、属性等对象时,我们一般会上网搜索用法说明。以后使用时,如果想不起来细节,面对 IDE 或语言本身提供的英文提示,我们很多人会读不下去,不得不再次上网搜索。现在有了中文文档,作为中国人,相信扫一眼就能回想起应该怎么使用,大大减轻记忆和理解负担,并且节约重复搜索的时间。

所有文档都是老吴人肉翻译。翻译过程中,参考了 Python 官网,不过大家都知道,官网上的中文文档质量不佳,并不能复制粘贴就完事。当然,老吴也注意到,Python 官网文档质量在改进,似乎有人工审核。

目前草蟒已经完成核心功能和文档的中文化。接下来将汉化主要内置模块的文档。

形如 __xxx__ 的属性和方法,在 Python 中叫 magic method,一般按字面意思译为“魔术”或“魔法”方法。现在,老吴根据它的外形以及在汉化过程中的体会,将其改译为“坑”属性/方法。

从汉化角度,坑属性/方法可分为两类:一类是可以轻松汉化的,比如 __module__(__模块__)和 __missing__(__缺失__),通过取别名的办法或简单的几行代码便可实现汉化。

...
{"__module__",    T_OBJECT,     OFF(func_module), PY_WRITE_RESTRICTED},
{"__模块__",    T_OBJECT,     OFF(func_module), PY_WRITE_RESTRICTED},
...

_Py_IDENTIFIER(__missing__);
_Py_IDENTIFIER(__缺失__);
missing = _PyObject_LookupSpecial((PyObject *)mp, &PyId___missing__);
if (missing == NULL)
    missing = _PyObject_LookupSpecial((PyObject *)mp, &PyId___缺失__);
...

另一类是难以轻松汉化的,包括属于 type 结构的和牵连甚广的两种:前者是 Python 的根基之一,不可擅动;后者如果强行汉化,就会违背老吴“尽量不更改 CPython 原始实现”的初衷。为此,老吴采取了一种投机取巧的办法进行汉化,就是在词法解析阶段 (tokenizer.c) 将中文替换为相应的英文。这样,编程的时候使用中文坑属性/方法,但在执行代码时会被替换成对应的英文坑属性/方法。

具体对照表请参见草蟒官网的“草蟒语言指南”栏目。

欢迎赐教和反馈! 

展开阅读全文
2 收藏
分享
加载中
精彩评论
音译词?我印象中好像没遇到啊。你举几个例子?
2020-12-15 16:23
1
举报
中国孩子们刚学编程时,无一例外会问:怎么是英文,不能用中文写程序吗?这时,老法师——曾经的孩子,曾经也那样问过——会说:英语是计算机编程的通用语言。一代一代的老法师们,为什么会忘了初心,被英语驯服得找不着北?不管什么原因,今天,让我们从“初心之问”出发,打造中文编程新生态!
2020-12-15 11:10
1
举报
坑属性😂,以后就可以说,看你写的代码,一堆坑
2020-12-15 08:09
1
举报
最新评论 (22)
看不懂~哇~~头大
2020-12-15 18:30
0
回复
举报
忘了说,想学习编写语言,最好的方式就是翻译一个编程语言,比看什么书都来的快,书上尽是过时知识和无用的理论术语,只会让人昏昏欲睡。
2020-12-15 14:42
0
回复
举报
我在中文化nim,请问翻译中最麻烦的音译词是怎么处理的?个人感觉中文化时主要是底层的机制转换的工作量太大了。
2020-12-15 14:33
0
回复
举报
音译词?我印象中好像没遇到啊。你举几个例子?
2020-12-15 16:23
1
回复
举报
就是一些系统名、工具名,比较长或不好记。比如,"linenoise"不好翻译,“nintendoswitch”中的“switch”就很麻烦,还有“case”做关键词也不好弄。
2020-12-17 12:11
0
回复
举报
主要是直译和意译两种。还有一种是任意翻译,如果英文是随意取的名字的话。例如,python 有一个绘图库 plotly,我看用某位中国画家的名字(如“大千”)作为对应的中文库名也没什么不好。switch...case... 可以考虑翻译为 判断...情况...,仅供参考。
2020-12-17 13:50
0
回复
举报
主要还是想体现汉语的表意功能。老外没用switch...case...格式,用的是case..of..格式,所以“case”就麻烦了。
2020-12-18 15:10
0
回复
举报
类似这种确实有点难,但念念不忘,必有回响。
2020-12-18 17:29
0
回复
举报
回复 @草蟒老吴 : 翻译名字还可以有办法对付,中文编程在底层的欠账实在太多了,工作量不小。说是中文编程,其实是多语言编程,现有全球文字编码的问题都暴露出来了--编码混乱、字符和字符串对应概念与字节的混乱、命名习惯和别名的混乱--一团粥啊。
2020-12-19 20:53
0
回复
举报
你难道遇到拼音啦?
2020-12-15 16:40
0
回复
举报
对啊,老外用的就是拼音来表音的啊。
2020-12-17 12:32
0
回复
举报
外国人怎么会用拼音?是中国人的拼音,还是啥,你举个例子.
2020-12-17 19:15
0
回复
举报
外国人用的是拼音,叫表音文字。中国人的拼音,叫汉语拼音,简称拼音,是跟老外学得。别简称简称的,连真实情况都忘了。举个例子,“yes”, 拼“ye”带“s”。
2020-12-18 15:17
0
回复
举报
在词法分析阶段作替换会不会导致报错信息中的相关token是英文呢?
2020-12-15 14:24
0
回复
举报
那肯定的。想偷懒,只能在报错时再转换。
2020-12-15 14:35
0
回复
举报
“坑”属性/方法--太过于游戏了。既然字面意思是魔法方法,叫幻术,也好些。
2020-12-15 13:58
0
回复
举报
中国孩子们刚学编程时,无一例外会问:怎么是英文,不能用中文写程序吗?这时,老法师——曾经的孩子,曾经也那样问过——会说:英语是计算机编程的通用语言。一代一代的老法师们,为什么会忘了初心,被英语驯服得找不着北?不管什么原因,今天,让我们从“初心之问”出发,打造中文编程新生态!
2020-12-15 11:10
1
回复
举报
坑属性😂,以后就可以说,看你写的代码,一堆坑
2020-12-15 08:09
1
回复
举报
你上次卖的关子,准备卖到什么时候?
2020-12-14 20:07
0
回复
举报
已经在上个帖子的评论中公布了啊
2020-12-14 20:26
0
回复
举报
谢谢你的答案.
2020-12-14 23:05
0
回复
举报
更多评论
23 评论
2 收藏
分享
返回顶部
顶部