文档章节

为啥不该有中文编程

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

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

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

麻烦

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

int i = 0;

改成中文,可能成了

整数 哎 = 0;

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

uint_8 i = 0;

改成中文,可能成了

无符号八位整形 哎 = 0;

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

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

不是通用语言

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

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

无意义

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

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

© 著作权归作者所有

共有 人打赏支持
开源中国驻成都办事处
粉丝 84
博文 286
码字总数 335913
作品 0
成都
程序员
汉语编程的未来(上帝启示录)

亲爱的,你是不是还在使用c#,java,android等国外编程语言写应用程序,假如有一种全新的中文编程语言也能实现Java,Android等编程语言的功能,并且软件开发执行速度快,节约时间,你会放弃英文...

crossmix ⋅ 2015/06/30 ⋅ 1

android ListView条目中TextView隐藏到显示时的测量

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

tnjin ⋅ 2015/09/08 ⋅ 6

如果编程替换成中文就会怎样? 程序员看了表示头疼

如果编程替换成中文就会怎样? 程序员看了表示头疼 2018-06-20 17:50编辑: garace分类:程序人生来源:代码湾 代码编程中文代码 招聘信息: C++工程师 Cocos2d-x游戏客户端开发 iOS开发工程师...

garace ⋅ 06/20 ⋅ 0

开源电子书

目录 语言无关类 操作系统 智能系统 分布式系统 编译原理 函数式概念 计算机图形学 WEB服务器 版本控制 编辑器 NoSQL PostgreSQL MySQL 管理和监控 项目相关 设计模式 Web 大数据 编程艺术 ...

zting科技 ⋅ 2017/12/11 ⋅ 0

libuv 中文编程指南

最近看了一些有关 libuv 的东西,另外复习了一些与同步、异步、阻塞、非阻塞,异步IO(aio)的东西, 算是技术积累吧,等有时间了整理出一个完整的文档出来,希望在今后的编程中用到。 不多说了...

大卷卷 ⋅ 2013/03/24 ⋅ 3

Fanta/free-programming-books-zh_CN

免费的编程中文书籍索引 免费的编程中文书籍索引,欢迎投稿。 国外程序员在 stackoverflow 推荐的程序员必读书籍,中文版。 stackoverflow 上的程序员应该阅读的非编程类书籍有哪些? 中文版...

Fanta ⋅ 2016/11/14 ⋅ 0

总有你要的编程书单(GitHub )

目录 IDE IntelliJ IDEA 简体中文专题教程 MySQL 21分钟MySQL入门教程 MySQL索引背后的数据结构及算法原理 NoSQL Disque 使用教程 Neo4j .rb 中文資源 Redis 命令参考 Redis 设计与实现 The ...

汇智网 ⋅ 2017/11/22 ⋅ 0

free-programming-books-zh.md

语言无关MySQL NoSQL PostgreSQL Web WEB服务器 其它 函数式概念 分布式系统 在线教育 大数据 操作系统 数据库 智能系统 正则表达式 版本控制 程序员杂谈 管理和监控 编程艺术 编译原理 编辑...

银月光海 ⋅ 2016/05/20 ⋅ 0

ubuntu控制台下中文乱码——解决方案

从 Linux.com 看到了这个新的支援 UTF-8 字体显示的终端,试用了一下,感觉非常不错~ Fbterm 基于 Framebuffer,目标是为 Linux 提供一个可以支持国际化字符显示、并且支持字体配置的纯终端...

突然帅了 ⋅ 2014/02/27 ⋅ 0

微信公众平台 音乐文件中文名

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

web--河南 ⋅ 2014/01/26 ⋅ 3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

行政区划代码转为字典形式

原数据为: http://www.mca.gov.cn/article/sj/xzqh/2018/201804-12/201804-06041553.html 手动替换了一下格式,并使用下面的代码处理. # 输入格式s = """110000:北京市110101:东城区1101...

漫步海边小路 ⋅ 15分钟前 ⋅ 0

android apk 签名

创建key,需要用到keytool.exe (位于C:\Program Files\Java\jdk1.6.0_10\bin目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于C:\Program Files\Java\jdk1.6.0_10\bin目录下),把...

国仔饼 ⋅ 24分钟前 ⋅ 0

springcloud+jps+mybatis多数据库配置

多数据库配置 配置我们目录结构设置: config ---datasource ----jpa ----mybatis ----redis Datasource中是数据的相关配置 Jap中是springDatajpa的相关配置 Mybatis中是mybatis的相关配置 ...

大-智-若-愚 ⋅ 31分钟前 ⋅ 0

Spring mvc HandlerMapping 实现机制

概述 当DispatcherServlet接受到客户端的请求后,SpringMVC 通过 HandlerMapping 找到请求的Controller。 HandlerMapping 在这里起到路由的作用,负责找到请求的Controller。 Spring MVC 默认...

轨迹_ ⋅ 34分钟前 ⋅ 0

JavaScript零基础入门——(十)JavaScript的DOM基础

JavaScript零基础入门——(十)JavaScript的DOM基础 欢迎大家回到我们的JavaScript零基础入门,上一节课,我们了解了JavaScript中的函数,这一节课,我们来了解一下JavaScript的DOM。 第一节...

JandenMa ⋅ 今天 ⋅ 0

Weex起步

本教程假设你已经在你的本地环境安装了node 其实weex起步教程在 https://github.com/lilugirl/incubator-weex 项目说明文件中都已经有了,但为了有些同学看到英文秒变文盲,所以这里我重新写...

lilugirl ⋅ 今天 ⋅ 0

Jenkins实践1 之安装

1 下载 http://mirrors.jenkins.io/war/latest/jenkins.war 2 启动 java -jar jenkins.war 前提:安装jdk并配置环境变量 启动结果节选: ************************************************......

晨猫 ⋅ 今天 ⋅ 0

组合数学 1-2000 中,能被6或10整除的数的个数

1--2000 中,能被6或10整除的数的个数 利用集合的性质 能被6整除的个数 2000/6 = 333 能被10整除的个数 2000/10 = 200 能被6和10整除的个数 2000/30 = 66 能被6或10整除的个数 333+200-66 =...

阿豪boy ⋅ 今天 ⋅ 0

一篇文章学懂Shell脚本

Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合。 Shell可以直接使用在win/Unix/Linux上面,并且可以调用...

Jake_xun ⋅ 今天 ⋅ 0

大数据工程师需要精通算法吗,要达到一个什么程度呢?

机器学习是人工智能的一个重要分支,而机器学习下最重要的就是算法,本文讲述归纳了入门级的几个机器学习算法,加大数据学习群:716581014一起加入AI技术大本营。 1、监督学习算法 这个算法由...

董黎明 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部