文档章节

开源母语编程项目 Readme.md

FreeBlues
 FreeBlues
发布于 2013/01/28 00:10
字数 1506
阅读 409
收藏 0

PwML


开源母语编程

open source Programming with Mother Language


今天终于下定决心创建了一个开源项目 [PwML:开源母语编程] [addr] [addr]: https://github.com/FreeBlues/PwML

前一阵子看代码看得双眼干涩、头脑发烫,尤其是英文自定义函数名,太短了不清楚意思,想清楚表达意思就要忍受长长的名字,而且类似的函数还不只一个,所有的自定义函数为了清楚表达含义,都很长、很长,看得人只想吐,于是萌发了用中文做函数名的念头,再进一步,用中文、标点符号、数字来写代码。

首先介绍一下背景知识,英文是一种拼音语言,中文是一种拼义语言,拼义语言这个概念是由香港中文大学心理学教授 [张学新] 1 根据其对汉字的研究结果提炼出的一个概念,大概的理解就是英语是基于不同语音的组合,而中文则是基于不同含义的组合,详细的理论可以参考他的2012年发表在[《科学通报》] 2 的论 文 [《汉字拼义理论》] 3 和 [《顶中区N200: 一个中文视觉词汇识别特有的脑电反应》] 4

前面提到英文程序中的函数名称过长的问题,事实上用中文做函数名有先天优势,两个英文字母对应一个中文字符,两个中文字符组成的词语可以很清晰地表达一个概念。但是对应存储大小的四个英文字母却基本不可能表达清楚同样概念。

所以甚至如果你精通古代文言文,你还可以把函数名称简化为一个汉字字符--只要你自己能读懂,再举个例子,比如 “define” 这个关键字,直译为现代中文是 “定义” ,原来要6个字节,现在变成了4个字节,那么把它翻译为只占一个字节的古文言文单字该怎么翻?就是 “名” ,《道德经》的第一句大家肯定都很熟悉:“道可道,非常道,名可,非常名”,这句话里出现的第二个“名”就是命名、定义的意思,看看下面列出的这三种形式的代码的比较:

英文代码:
> define function1()

现代中文代码:
> 定义 函数1()

文言文代码:
> 名 函数1()

除了函数名称,关键字以及语法也可以以文言文的简约方式来定义,这样你写的程序就是文言文程序了,这样一想是不是觉得很有趣?

就像上面提到的“函数”这个概念,中文两个字符表达得很清楚,只占4个比特的存储空间,但是英文的“ function”就需要用到两倍个数的英文字符,要占8个比特的存储空间。

英语这种基于语音的特点,使得英文天生只能是一种一维线性文字,也就是说英文适合于听觉处理,而不适合视觉处理,而中文则恰恰相反,中文是一种基于视觉的二维文字,中文不需要那么多单独的读音去区分,因为它是各种基本概念的组合,中文的同音字特别多,就是因为中文主要依赖于视觉的识别。就像现在比较流行的二维条形码,因为设计者受拼音文字影响,所以设计成只适合机器识别的方式,人却无法直接看懂,其实后续的二维条形码可以设计为中文的样式,这样机器和人都可以阅读,这其实是中文的一种巨大优势。

因为程序员不可能依靠耳朵去听代码,只能是依靠视觉去看代码,所以在这种使用场景下,用中文作为程序语言要优于英文。

根据上面的分析,我们发现使用中文编程可以有效缩小源代码的规模,而且项目越大,这种效果越明显,如果使用现代中文的方式进行写作,源码体积可缩小 1/3 到 1/2,如果使用文言文的方式进行编程,源码体积可在现代中文的基础上再次缩小 1/3 到 1/2(当然这个只是粗略的估计,具体的数据等我完成源代码翻译器再进行精确的统计)。

有人可能会担心输入的工作量会增加,现在的开发环境一般都会有非常完善的自动完成功能,经过我的试验,使用 Emacs 编辑环境中的自动完成插件,输入的工作量跟使用英文基本持平,所以不必担心这一点。

目前中国国内有两种中文程序语言,一种是易语言,一种就是中文化的PYTHON,前者属于商业化软件,不适合进行探索性试验,后者则受限于 Python 语言本身的能力,也不太适合,在了解了 Common Lisp 的一些特性后,忽然发现 LISP 是最适合做开源母语开发的基础平台,首先是 Lisp 语言强大到逆天的宏能力,具备自定义一种新语言的能力,其次是全部开源的开发平台环境,再加上 Lisp 本身的迭代开发模式,非常适合我们用它来进行母语编程的探索。

初步计划是这样:先尝试搞一个中文编程的环境出来,然后再选择几种其他非英文类型的语言进行试验,这样每个国家的程序员都可以使用自己的母语编程了,程序员写的程序也可以被其他非编程专业的读者较为轻松地阅读理解。

© 著作权归作者所有

共有 人打赏支持
FreeBlues
粉丝 98
博文 280
码字总数 493678
作品 0
其它
程序员
私信 提问
加载中

评论(3)

巢鹏
巢鹏
这种东西没有什么意义的说
FreeBlues
FreeBlues

引用来自“Mr.6”的评论

支持

多谢鼓励! :)
扁豆焖面先生
扁豆焖面先生
支持
2018-02-24 项目/教程中使用母语命名的"问题"

早先试图找使用中文命名代码的项目, 但所获寥寥: 索引: 用中文编写代码的实用开源项目 · Issue #6 · program-in-chinese/overview. 更不用说教程了: 索引: 用中文代码作示例的编程教程 · ...

吴烜
03/07
0
0
程序员是吃青春饭的职业吗?大家来讨论下。

首先我以前也认为程序员是吃青春饭的,为什么呢,你看现在技术更新这么快,一下子又是XX框架出来,一下子又是那个.net Core 出来,你说程序员到了30岁后,学习能力明显不如年轻人,程序员就像...

KMSFan
2016/05/27
7.1K
20
关于持续集成某个案例

项目结构 这些文件的作用是: lib目录下存放业务逻辑文件 test目录下存放单元测试用例 .npmignore记录哪些文件不需要被发布到npmjs.org .travis.yml是持续集成服务travis的描述文件 index.js...

V神
2015/02/13
5
0
边写 Javascript 代码边玩游戏 – WarriorJS

在 github 上看到这个有趣的项目 – WarriorJS ,项目的内容写着 – 令人兴奋的程序设计和人工智慧游戏,Ok 我坦白我是看到人工智慧被这个专案所吸引,但是玩了两个关卡,还是不知道这个游戏...

maoyang
2018/08/17
0
0
开发者注意啦,谷歌宣布开源 Swift for TensorFlow

雷锋网(公众号:雷锋网) AI 研习社按,今年三月,谷歌在 TensorFlow 开发者峰会上公开演示了 Swift for TensorFlow,近日,TensorFlow 官网宣布 Swift for TensorFlow 已在 GitHub 上开源,地...

思颖
2018/04/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Vert.x系列(二)--EventBusImpl源码分析

前言:Vert.x 实现了2种完成不同的eventBus: EventBusImpl(A local event bus implementation)和 它的子类 ClusteredEventBus(An event bus implementation that clusters with other Ve......

冷基
今天
1
0
Perl - 获取文件项目

参考:http://www.runoob.com/perl/perl-directories.html 下面返回JSON格式的文件列表 #!/usr/bin/perluse strict;use warnings;use utf8;use feature ':5.26';require Fi......

wffger
昨天
2
0
vue组件系列3、查询下载

直接源码,虽然样式样式不好看,逻辑也不是最优,但是可以留作纪念。毕竟以后类似的功能只需要优化就可以了,不用每次都重头开始。。。 <template> <div class="pre_upload"> <div ...

轻轻的往前走
昨天
2
0
java浅复制和深复制

之前写了数组的复制,所以这里继续总结一下浅复制和深复制。 浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝。 深拷贝:对基本数据类型进行值传递,对引用数据类型,...

woshixin
昨天
2
0
kubernetes 二进制包安装

环境 角色 主机名 内网 IP 集群 IP 操作系统 服务 执行目录 部署机 k8s-master master120 10.0.4.120 - CentOS kube-apiserver kube-scheduler kube-controller-manager /opt/kubernetes/ et......

Colben
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部