龙空技术网

再谈汉语编程(三)python3.8以后对汉语编程的兼容程度

霹雳火000 183

前言:

现时小伙伴们对“python3支持中文”大约比较讲究,兄弟们都想要知道一些“python3支持中文”的相关内容。那么小编也在网络上搜集了一些有关“python3支持中文””的相关内容,希望朋友们能喜欢,你们快快来了解一下吧!

再谈汉语编程

再谈汉语编程(二),利用python举例笔者心中汉语编程的样子

继续以python为例,探讨汉语编程的可行性以及需要面对的所谓“技术”问题(实际不是技术问题,而是习惯、兼容性、成本(重点是时间成本)的问题)。

利用python为母版,近些年产生了周蟒、中蟒、草蟒等汉语编程的探索性的语言,我们可以发现,这种方式的汉语编程,最重点的一个技术问题就是解决关键字的汉语表达问题。周蟒采取的直译方式,而草蟒不仅翻译了,还在考虑中文表达格式的问题。这种方法的优势在于与python本身的良好兼容性,缺点在于:关键词的中文表达方式,依然与汉语使用习惯有出入,因为语法上严重依赖python本身的语法及应用习惯,那么就存在着中国人不能简单看懂这种汉语的问题,需要一定的时间培养使用习惯,这也是笔者说的时间成本问题。

python在3.8版本以后,除了关键字必须是英文以外(通常是33个关键字),由于使用了unicode编码,那么其他大部分内容,实际是可以直接汉语表达的。其可用汉语表达的程度,让笔者这种编程门外汉,都觉得惊奇。

依然以前面的python小例子为例:

import random

# 设置最大值和最小值

min_val = 1

max_val = 6

# 是否继续

roll_again = "yes"

# 循环

while roll_again == "yes" or roll_again == "y":

print("开始掷骰子")

print("骰子数值是 :")

# 第一轮

print(random.randint(min_val, max_val))

# 是否继续

roll_again = input("是否继续掷骰子?(是的话, 输入yes或者y)")

这段英文编程如果基于python3.8以上的版本,进行汉语编程,看看可以直接汉化到什么程度?

1 #!/usr/bin/env python3

2 # -*- coding: utf8 -*-

3 import random as 随机

4 显示 = print

5 随机整数 = 随机.randint

6 赋值 = input

7 # 设置最大值和最小值

8 最小值 = 1

9 最大值 = 6

10 # 是否继续

11 再运行一次 = "是"

12 # 循环

13 while 再运行一次 == "是" :

14 显示("开始掷骰子")

15 显示("骰子数值是 :")

16 # 第一轮

17 显示(随机整数(最小值, 最大值))

18 # 是否继续

19 再运行一次 = 赋值("是否继续掷骰子?(是的话, 输入是)")

这是笔者以汉语编程方式进行修改的编码。上述编码可在python3.8以上版本直接运行,并得出与英文编码同样效果的中文运行结果。

为了解释方便,笔者在每句程序前面加上了序列数字编码,如需试运行,需去掉序列数字编码。

上述编码的1-3句,可以采用编程方法,让它自动产生并加载在这个小程序中,也就是并不是必须要懂这几句,但是,这段小程序必须加载这三句,以确认python版本、兼容utf8库、调入random(随机)库。

4-6句,对能够直接汉化的英文部分,进行字典式样的对换。这也可以采用另外一个程序建立一个完整的字典,再调入到这个小程序。也就是这可以汉语编程语言准备工作的一部分,而不是使用者需要操心的事情。除了python的33个关键字必须使用英文以外,理论上,python其他所有英文编码部分都可基于这种方式汉化。但是,在实验过程中,发现正则表达式中的(r'\d')这种基于编程规定使用习惯的简化英文字母或符号的编码方式,笔者未找到汉化方式(学编程的时间有限,也许可以或已经有了解决方案。)。

那么直到7-19句才是汉语编程语言使用者需要操心的部分。在这部分中,除了while这个关键词使用了英文以外,其他都是汉语。而且,完全使用的是python的语法要求。虽然,笔者并不喜欢这种语法限制。

也就是经过上述的小修改后,python3.8以上版本,在除了关键词使用英文以外,其他部分是都可以使用汉语的。而且,与python本身无缝兼容,因为它本身就是python语言编写的。仅仅是我们在学习编程的冗长过程中,已经习惯了使用英文的语境和逻辑方式,脑袋已经英文化,不习惯汉语了。对于这类人群,在这种编程的环境中,英文成为了母语。这就是所谓方便、习惯的问题。至于大小写、字符半角、全角的问题、中英文切换的问题,这些所谓的技术问题现在都可解决,仅仅是说不方便者的借口而已。

Guido van Rossum是一名荷兰人。1982年,Guido van Rossum在阿姆斯特丹大学获得数学和计算机科学硕士学位。1989年他创立了python语言。 1991年初python公布了第一个公开发行版。 1995年Guido从荷兰移居至美国。 2005年开始Guido为Google工作。

Rossum先生,如果是中国人,直接把python的关键词也兼容中文的话,就没有上述汉语编程文章的讨论了,也就没有周蟒、中蟒、草蟒的事情了,python本身就成了可兼容英文(其他一些语种)的汉语编程语言了。但历史没有如果!流行的穿越、架空文,就是扯淡,意淫而已。

国际标准化组织(ISO)于1990年开始研发一种统一编码,于1994年正式发布 Unicode 1.0 版本。

当然,1991年,unicode编码还没出来,python之父是基于ascii及其扩展码这种英文编码前提写的python。中文后来才有GB2312编码。当时,python并无法兼容中文,直到unicode编码出现。这是计算机技术发展的历史,也是一个残酷的现实,我们错过了计算机技术发展的最初的良好时机,以及最初简单的技术积累时期,也就是丢失了这方面技术、规范、标准的话语权和主导权。

尽管在上世纪80年代就出现了类似basic的中文培基编程语言,这是当时的在汉语编程方面与国际接轨的中文编程语言。但是,在后来的技术、商业竞争中,它也随历史湮灭了。

也许未来某一天python会直接主动放开关键词的中文权限,出一个“纯粹”的中文版本,因为现在这已经不是技术问题了,而是政治、经济问题了。汉化蟒蛇语言的关键词,实际使用的是define技术;而C++程序,大约在2008年前后,就已经完全允许在代码中出现Unicode编码的变量名、函数名、类名等等,并且#define也支持Unicode替换,也就是关键词可以替换使用为中文。

而一旦python真的直接放开了python关键词的中文使用权限,出了中文版,这会让中国编程人庆祝吗?非常不一定!基于它这几十年的良好发展历程,现有的中文编程语言在这种竞争中能否接得住、扛得住?而不至于湮灭,这又不是技术问题了。

但这又是如寄人篱下般的一种单相思似的渴望!想硬气起来,那只有搞出来兼容其他语言的自己的中文编程语言。华为已经开始在做了,仅仅是采取了基于现实情况的迂回战术。也就是增加了中国的编程人都会双语这点前提条件而已。

非洲有一种小型动物----獴,专吃蛇。不知道这种动物需要多大,才可以吃蟒蛇?

标签: #python3支持中文