文档章节

为啥不该有中文编程

开源中国驻成都办事处
 开源中国驻成都办事处
发布于 2015/06/11 22:15
字数 774
阅读 62
收藏 1

大清早看到论坛有人评论国内技术说弄个中文编程看看,有感而发说几句。

国内早在十年前就有人搞过,现在也有,比如易语言。现实情况是很不成功,没有什么开放出来的项目说我用的是中文来编程。为什么呢?

麻烦

对于一个简单的标识符,用阿拉伯字母+数字+下划线比中文简单很多。比如定义一个临时变量:

int i = 0;

改成中文,可能成了

整数 哎 = 0;

要是区分下整数位数,有无符号,那就更麻烦了。类似地

uint_8 i = 0;

改成中文,可能成了

无符号八位整形 哎 = 0;

语言进化的方向就是抽象。抽象能够用简单的符号表示复杂的实际内容。u代表了无符号,8代表了8位长度。这就是一种抽象。

除了输入麻烦,还有一个麻烦事。你写的代码怎么存储?存储也麻烦。可能碰到过打开一个源文件,代码是正常的,但是中文注释变成了乱码。阿拉伯字符基本上所有的字符集都能够近乎一致地表示,但是中文这样的宽字符就不一定了,换一个编码就认不出来了。麻烦不说,占用空间也多了。用信息论来讲,这种编码效率就是低,人家8字符可以解决的你非得来16字符。

不是通用语言

这个是指代码本身应该是跟人使用的语言是无关的。因为代码是解决问题的,解决问题的方法是任何人都懂的,跟人使用的语言无关。一句话,只会阿拉伯语的人写的代码拿给只会中文的人看,刨除应用背景,阅读起来应该是完全没有问题的。因为编码是解决问题的思维固化,固化出来的表示形式应该越通用越好。为啥呢?如果中间再加入母语,转换过程就会有信息丢失。

这样看来,能够适合来描述代码的语言,肯定需要大家都理解认识。阿拉伯字母和数字无疑是唯一选择。

无意义

代码本身是一种上下文无关的文法。文法中的符号集(非终结符和终结符)不是最重要的,重要的是产生式。就是代码中的各种语法规则。中文编程无非就是替换了一下文法的符号集合。产生式没有任何变化。这种变化本身就没有多大的意义。

现在想来,这种语言初衷是帮助不懂英语的人也能写代码,但实际上编程对英语的要求低,你要是只会26个字母完全就够了。另一方面,现在小朋友都会讲几句英语了,原始的初衷也就不成立了。

© 著作权归作者所有

共有 人打赏支持
开源中国驻成都办事处
粉丝 84
博文 287
码字总数 335913
作品 0
成都
程序员
私信 提问
android ListView条目中TextView隐藏到显示时的测量

觉得ExpendableListView挺好用,但是就是代码复杂了点,我一时半会理解不了,于是就直接自己写个效果来实现。先来看一下expendableListView中展开的动画效果: 然后我模仿此效果,建立如下的...

tnjin
2015/09/08
1K
6
微信公众平台 音乐文件中文名

微信公众平台上的音乐文件名为啥不能为中文呢?我写了个连接比如:'mucurl'=>base_url('/public/admin/music/别无所求.mp3'), xml中: 为啥在微信上获取连接失败呢?...

web--河南
2014/01/26
287
3
最近一波对中文编程(包括中文命名)的攻势

相信很多人看到了这篇文章: 如果我们的编程替换成中文会变成怎样?-聚能聊-云栖社区-阿里云 由于带着太明显的水文气息, 不禁花点功夫进行探究. 下面是之前的发现(原帖在专用帖: 对中文编程的质...

吴烜
07/26
0
0
用中文编程,就不用学英语?我保证你会更头疼!

首先大概的看一下中文编码: 你以为会写中文写编程就简单了吗?这就像你以为会写汉字就会写出好文章一样。编程是和机器沟通,因此要用机器的语言而不是人类的语言。 最早的程序就是0和1的数字...

西安北大青鸟官微
07/07
0
0
如果编程替换成中文会怎样? 程序员看了表示头疼

首先大概的看一下中文编码: 你以为会写中文就会编程吗?这就像你以为会写汉字就会写出好文章一样。编程是和机器沟通,因此要用机器的语言而不是人类的语言。最早的程序就是0和1的数字,不是...

达尔文
06/28
4.8K
78

没有更多内容

加载失败,请刷新页面

加载更多

mysql密码重置

方法一: 在my.ini的[mysqld]字段加入: skip-grant-tables 重启mysql服务,这时的mysql不需要密码即可登录数据库 然后进入mysql mysql>use mysql; mysql>更新 update user set password=pas...

architect刘源源
7分钟前
1
1
SpringBoot + Mybatis 配置多数据源(Srping boot 二)

前置条件,你已经配置好spring boot+mybatis,可以参考之前的博客 实现逻辑通过注解+aop切面编程来动态更新datasource 第一步,配置多个DataSource server: port: 8080freezing: ...

小海bug
20分钟前
10
0
连续潜在变量---概率PCA

最大似然PCA 用于PCA的EM算法 贝叶斯PCA 因子分解

中国龙-扬科
26分钟前
5
0
Mac 安装redis 及 redis desktop manager

1.安装redis 1.1 下载地址: http://download.redis.io/releases/ 1.2 本地新建个redis文件夹 1.3 切换到redis 安装下:cd /Users/用户名/Documents/redis/redis-3.2.5 1.4 make install 1.5......

qimh
31分钟前
3
0
Caffe(二)-Python-自定义网络

这里我们用一个例子先来体验一下 首先定义一下我们的环境变量 $PYTHONPATH,我这儿是Windows开发环境,至于Windows Caffe怎么编译由读者自己下去搞定 我使用的控制台是 Windows PowerShell 添...

Pulsar-V
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部