让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行

By | 11月11日
Advertisement

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行

作者 : Dancefire (Dancefire [at] gmail)

日期 : 2005年11月11日

由于CSDN的Blog好像对表格支持不好,我贴了几次,都导致了重复的内容。所以,为了能够贴到这里,我把表格都改变了,所以,推荐大家访问没有改过格式的连接:http://www.dancefire.org/Project/SinoProgram/

引言

上回书说到,用C#来进行中文编程,最后的主程序上很是有趣,没看过的客官,可以看看第一篇《让我们用中文编程》。看到有些客官,在后面说到,如果连那些关键字也能够中文化就好了。当时心中无奈,唉,谁叫C#不支持#define来替换关键字呢?在这风云变幻的年代,每一分钟都有奇迹的发生,曾经的“不可能”,很有可能就变成了“想当然”。当初的无奈,现在还是无奈么?请看下文。

  • 中文编程的神化

随着11月7日,微软Visual C++ 2005的发布,我们关注到,VC8.0中增加了大量新的特性,包括最重要的,引入了C++/CLI,可以说是给C/C++语言历史上掀起了新的一页。作为一个方言的出现C++/CLI会有什么样的作为,却是值得大家拭目以待,是功是过,由历史来评说。但是我们也注意到,VC8.0引入了一个非常有趣的支持,VC8.0开始支持Unicode的源代码了。如同C#和Java一样。如今,我们要写C++程序,已经完全允许在代码中出现Unicode编码的变量名、函数名、类名等等,并且#define也支持Unicode替换了。

虽然是个小变化,但是,中文编程的世界一下就变了。这使我立刻就想到,国内有些公司,在致力于炒作中文编程,细看他们的语言,无非是对现有语言把关键字替换成了中文而已,其他的改进太小了。有的是把Forth给用中文关键字包装了一下,就推出来的;还有的是把C语言用中文的关键字替换一下就推出来的。这样的语言,真的是自己的么?这样的语言真的有价值么?“决定一切的不是语言而是思想!”,这是已经人人共知的思想,国内的某些专家和公司竟然还在为这种“伪中文”编程而津津乐道,甚至有些获得了国家项目的资助。如果真的仅仅是用中文关键字来进行编程就可以改变我们国家的IT面貌的话,那大可不必投资数十万甚至上百万来做,用我下面的一个头文件就够了。

关键字使用中文,很简单的技术;实现一个别人已经发明的语言,也不是什么太复杂的事情(当然如果做一个100%兼容的C++这样的复杂语言的编译器还是具有相当的难度的)。真正难的应该是理解这种语言的创新思想,发现或者创造一种方法,以解决现有语言在程序设计上的存在的种种问题,这样更新或者创造出来的才是真正有用的经典之作。不用细说,大家都知道,C、C++、Java、C#、Ruby、Python的诞生都分别解决了什么难题。他们用漂亮的办法解决了一直困扰程序员的问题,他们就成为了经典。而国内那些做中文编程的公司的产品呢?呵呵,也许仅仅是茶余饭后而笑柄而已。

不好意思,一时感慨颇多,啰里啰唆了那么多废话。下面言归正传。。。

  • 没有什么不可以

再细说之前,需要说一下编译器的事情。

目前我不知道还有哪个编译器能够对Unicode有良好的支持,所以,目前只有Visual C++ 2005才能够编译下面的代码,但是很幸运,原本打算卖US$49的Visual C++ 2005 Express,从现在开始,一年内是免费的,而且微软没有一年以后的收费计划,所以也许我们可以一直合法的用下去,呵呵。大家可以从微软网站直接下载,需要下载的访问下面的连接:

http://msdn.microsoft.com/vstudio/express/visualc/

下面的代码都可以在Visual C++ 2005 Express 版上编译通过。

好了,真的言归正传了。我用了一系列的#define宏和typedef,作了中文和英文关键字的替换。比如:

typedef int 整型;
typedef char 字符型;

#define 如果 if
#define 否则 else
#define 返回 return
#define 常量 const

#define 标准输出 std::cout
#define 行结束 std::endl
#define 标准输入 std::cin
#define 字符串 std::string

#define 主程序 main

经过这样处理后我们就可以写出一个最简单的中文程序:

整型 主程序( 整型 参数数量, 常量 字符型** 参数列表 )
{
字符串 路人甲;
整型 年龄;

标准输出 << "请输入姓名:" << 行结束;
标准输入 >> 路人甲;
标准输出 << "请输入年龄:" << 行结束;
标准输入 >> 年龄;

如果(年龄 > 18){
标准输出 << 路人甲 << "先生/女士,您好!祝您今天工作愉快哦。" << 行结束;
}否则{
标准输出 << 路人甲 << "小朋友,您好!祝你今天玩得开心。" << 行结束;
}

返回 0;
}

程序很简单,执行后,询问你的姓名和年龄,如果你大于18岁呢,它就要对你说“Dancefire先生/女士,您好!祝您今天工作愉快哦。”,如果还不到18岁呢,就会说“Dancefire小朋友,您好!祝你今天玩得开心。”

这个程序似乎不够有趣。那么我再来一个有趣一些的,用到了面向对象的继承的概念,新瓶装旧酒了,前一篇文章中提到的,生物圈的例子,(既然是中文嘛,就来点中国文化特色,呵呵),

哦,多说一句,下面的程序一共由3个文件组成,其中2个是头文件,另外一个是源文件。三个文件都可以从我的网站下载:

http://www.dancefire.org/file/SinoCPP.zip

如果大家想自己写个中文的类玩玩,只需要#include第一个Sino.h就可以了。我已经在里面替换了大量的关键字,玩玩够了,如果还想替换其他关键字,你们自己加进去就行了,需要注意的是,这几个文件都是受GPL协议保护的,简单而言就是,大家可以随便改,只要继续保持开放就行了。

下面的是主程序:

//
// 作者: Dancefire (Dancefire [at] gmail)
// 日期: 公历 二零零五年十一月十一日
// 农历 乙酉年 丁亥月 己亥日 巳时
// 宜 解除 修饰垣墙 冠笄 出行 馀事勿取
// 忌 开市 动土 破土 嫁娶 安葬
// 项目: 中文C++编程测试
// 版本: 甲子
//

#include <vector>
#include <iostream>
#include <string>
#include "sino.h"
#include "SinoTest.h"

使用 名字空间 标准库;

整型 主程序( 整型 参数数量, 常量 字符型** 参数列表 )
{
标准输出 << "世界你好!" << 行结束 << 行结束;

使用 名字空间 中文编程;
矢量<生物*> 动物们;

动物们.排到后面( 新建 鸟());
动物们.排到后面( 新建 鱼());
动物们.排到后面( 新建 马());
动物们.排到后面( 新建 动物());
动物们.排到后面( 新建 生物());

循环(无符号整型 甲 = 0 ; 甲 < 动物们.多少() ; ++甲)
{
生物* 小家伙 = 动物们[甲];
小家伙->自我介绍();

动物* 小动物 = 动态转型<动物*>(小家伙);
如果( 小动物 ){
小动物->移动();
}
标准输出 << 行结束;
}
返回 0;
}

主程序很简单,先建立了一个动物们的容器,然后一个一个新的动物加入到这个容器(队列)中了。(当然严格来说,应该是生物们,但是听起来好怪,就叫动物们好了。)这些动物们排好队后,开始一个接着一个的自我介绍,如果是动物呢,就动一动,如果不是动物就算了。

执行的结果是这样的:

世界你好!

我属于动物, 我是一只可爱的鸟
这只鸟在自由自在的飞翔

我属于动物, 我是一条可爱的鱼
这条鱼在自由自在的游来游去

我属于动物, 我是一匹可爱的马
这匹马在自由自在的奔跑

我属于生物, 我是一只可爱的动物
这只动物在自由自在的移动

我是...咦?我是什么?我也不知道我是什么,难道我是一个外星的生物

大家可以在程序中感受到C++的OO的概念。这里面有5个类,动物类继承了生物类能够自我介绍的能力, 继承了动物类能够移动的能力,而他们在继承自我介绍的时候,用自己的方式替代(重写)了原始生物的自我介绍方式,此处自然用到了虚函数,既然是表现继承,怎么能没了虚函数呢,是吧。在判断是否是动物的时候,用到了C++标准的动态转型,这是在运行期,而不是编译期,进行转型的。类的定义在头文件SinoTest.h中,完整的这个头文件如下:

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 作者: Dancefire (Dancefire [at] gmail)
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 日期: 公历 二零零五年十一月十一日
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 农历 乙酉年 丁亥月 己亥日 巳时
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 宜 解除 修饰垣墙 冠笄 出行 馀事勿取
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 忌 开市 动土 破土 嫁娶 安葬
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 项目: 中文C++编程测试
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 版本: 甲子
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
//
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
名字空间 中文编程
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
...{
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 生物类
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
生物
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
...{
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
公有:
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
生物() ...{
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
类别 = "生物";
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
祖先的类别 = "游离态";
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
}
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
虚 ~生物()...{}
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
虚 字符串 我的类别()
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
...{
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
返回 类别;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
}
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
虚 字符串 我祖先的类别()
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
...{
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
返回 祖先的类别;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
}
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
虚 无值 自我介绍()
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
...{
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
标准输出 << "我是...咦?我是什么?我也不知道我是什么,难道我是一个外星的" << 我的类别() << 行结束;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
}
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
受保护的:
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
字符串 类别;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
字符串 祖先的类别;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
};
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 动物类,动物当然是生物啦
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
动物 : 公有 生物
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
...{
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
公有:
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
动物() ...{
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
移动方式 = "移动";
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
量词 = "只";
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
类别 = "动物";
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
祖先的类别 = "生物";
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
}
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
虚 无值 移动()...{
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
标准输出 << "这" << 量词 << 我的类别() << "在自由自在的" << 移动方式 << 行结束;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
}
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
虚 无值 自我介绍() ...{
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
标准输出 << "我属于" << 我祖先的类别() << ", 我是一" << 量词 << "可爱的" << 我的类别() << 行结束;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
}
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
受保护的:
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
字符串 移动方式;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
字符串 量词;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
};
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 鸟类,鸟是动物咯。
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
: 公有 动物
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
...{
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
公有:
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
鸟()...{
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
移动方式 = "飞翔";
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
量词 = "只";
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
类别 = "鸟";
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
祖先的类别 = "动物";
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
}
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
};
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 鱼也是动物咯
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
: 公有 动物
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
...{
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
公有:
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
鱼()...{
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
移动方式 = "游来游去";
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
量词 = "条";
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
类别 = "鱼";
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
祖先的类别 = "动物";
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
}
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
};
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 马也是动物
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
: 公有 动物
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
...{
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
公有:
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
马()
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
...{
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
移动方式 = "奔跑";
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
量词 = "匹";
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
类别 = "马";
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
祖先的类别 = "动物";
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
}
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
};
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
}

至于Sino.h的内容,我就只列一部分好了,大家需要的,直接从上面的连接下载吧,因为太长了,而且都是一样的宏定义,非常简单,没有什么有趣的事情。

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 作者: Dancefire (Dancefire [at] gmail)
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 日期: 公历 二零零五年十一月十一日
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 农历 乙酉年 丁亥月 己亥日 巳时
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 宜 解除 修饰垣墙 冠笄 出行 馀事勿取
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 忌 开市 动土 破土 嫁娶 安葬
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 项目: 中文C++编程 头文件
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 版本: 甲子
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
//
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 变量
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
typedef bool 布尔;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
typedef char 字符型;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
typedef short 短整型;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
typedef int 整型;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
typedef unsigned char 无符号字符型;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
typedef unsigned short 无符号短整型;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
typedef unsigned int 无符号整型;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
typedef unsigned long 无符号长整型;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
typedef long 长整型;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
typedef float 浮点型;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
typedef double 双精度型;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
typedef std::string 字符串;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 常量
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
const bool 真 = true;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
const bool 假 = false;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
// 关键字
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
#define 抽象 abstract
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
#define 内嵌汇编 __asm
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
#define 中断 break
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
#define 得 case // ???
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
#define 捕获 catch
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
#define 类 class
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
#define 常量 const
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
#define 常量转型 const_cast
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
#define 继续 continue
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
#define 默认 default
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
#define 委托 delegate
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
#define 删除 delete
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
#define 不推荐 deprecated
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
#define 动态链接库导出 dllexport
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
#define 动态链接库导入 dllimport
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
#define 做 do
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
#define 动态转型 dynamic_cast
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
#define 否则 else

哦,唯一的问题是,我不知道switch和case如何翻译。目前我的翻译是,判断和得。所以,如果用到switch的话,代码看起来可能比较奇怪:

让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
判断( 甲吃的饺子盘数 )...{
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
得 1:
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
标准输出 << "竟然甲才吃了1盘饺子,不正常" << 行结束;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
中断;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
得 2:
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
标准输出 << "甲一个人就吃了2盘饺子,够实力" << 行结束;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
中断;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
得 3:
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
标准输出 << "没搞错吧?甲吃了3盘饺子,不会一天没吃饭,就等这顿了吧??" << 行结束;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
中断;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
默认:
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
标准输出 << "无语了~~,我都不知道甲他吃了几盘了" << 行结束;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
中断;
让我们用中文编程(二)之C++篇 - 自己做中文编程语言,你也行
}

  • 自己做一个中文编程语言,你也行

自己做一个中文编程语言?没有开玩笑吧?是的,是没有开玩笑。那些大公司所谓的什么汉语编程语言,相当一部分,就是对某种语言的模拟,只不过关键字用中文替代了而已,有模拟VB的,有模拟C的,还有模拟Forth的。既然是这样也较“中文编程语言”的话,呵呵,那好,我们也做一个好了,比他们更省人力,更简单。

通过刚才的例子,大家已经看到了,我基本上使用纯中文写了一个程序,我相信有C++为依托,这个肯定是最强大的,能够用中文写程序的语言了,哈哈~~(真不要脸,牛什么牛,那些强大的功能是C++给你提供的,你可啥都没做,就是换了换关键字而已嘛。汗~~~)。

想自己创造一个有自己个性的“中文编程语言”,大家从我的网站下载Sino.h这个文件:

http://www.dancefire.org/file/SinoCPP.zip

大家可以根据自己的想法,随意的改动关键字的中文,有什么好的想法,也可以给我回复在这里。给大家举几个简单的例子。大家可以把Sino.h中的public对应的中文,替换成“大家的”,private对应成“我的”,protected对应成“我们家的”,friend可以对应成“哥们儿”,int可以对应成“小样儿”,std::string对应成“条幅”,std::cout对应成“嚷嚷”,std::cin对应成“告诉”。std::endl对应成“行了您呐”,main对应成“龙门客栈”,if对应成“若”,else对应成“否”,return对应成“回报”等等。哈哈,结果这个设计的“中文编程语言”可能就变成下面的样子了:

小样儿 龙门客栈()
{
条幅 英雄;
小样儿 年方几何;

嚷嚷 << "客官贵姓啊?";
告诉 >> 英雄;
嚷嚷 << "哦,兄台,年方几何啊?";
告诉 >> 年方几何;

若(年方几何 > 16){
嚷嚷 << 英雄 << ",大英雄,久仰久仰,您请楼上落座。" << 行了您呐;
}否{
嚷嚷 << 英雄 << "小英雄,早有所闻,今日得见果然气度不凡,里面请。" << 行了您呐;
}
回报 0;
}

这段程序和第一个程序的意思,实际上是一样的,但是显得更有趣味,输出大体如下:

客官贵姓啊?乔峰
哦,兄台,年方几何啊?28
乔峰,大英雄,久仰久仰,您请楼上落座。

客官贵姓啊?杨过
哦,兄台,年方几何啊?14
杨过,小英雄,早有所闻,今日得见果然气度不凡,里面请。

Similar Posts:

  • 无聊的中文编程和背后的“中国特色”

    在我们技术网站的留言板上有个留言,"我们是搞中文编程推广的专业网站,最近获悉,贵站在搞语言开发,为了推动中国中文编程的早日普及,特邀请贵站有管人员到我站做客,发布贵语言的开发情况,以及相关介绍和下载资源等." 我们固然是开发了高级脚本语言Koodoo语言,却并不是中文编程,说实在的,我对所谓中文编程还挺反感. 中文编程不是什么新鲜玩意,仅仅把编程语言中的关键字替换成中文,用C的宏替换就可以了: #define 假如 if #define 否则 else #define 真 true #

  • 高性能网络编程(二):上一个10年,著名的C10K并发连接问题

    1.前言 对于高性能即时通讯技术(或者说互联网编程)比较关注的开发者,对C10K问题(即单机1万个并发连接问题)应该都有所了解."C10K"概念最早由Dan Kegel发布于其个人站点,即出自其经典的<The C10K problem (英文PDF版.中文译文)>一文. 正如你所料,过去的10年里,高性能网络编程技术领域里经过众多开发者的努力,已很好地解决了C10K问题,大家已开始关注并着手解决下一个十年要面对的C10M问题(即单机1千万个并发连接问题,C10M相关技术讨论

  • 中文编程&#183;从入门到精通(奋斗的小鸟)_PDF 电子书

    中文名: 中文编程·从入门到精通 作者: 大连易翔软件开发有限公司 图书分类: 软件 资源格式: PDF 版本: 扫描版 出版社: 海洋出版社 书号: 9787502779313 发行时间: 2011年01月01日 地区: 大陆 语言: 简体中文 简介: 书籍下载:http://pan.baidu.com/share/link?shareid=1310906978&uk=721744522 内容简介: <中文编程·从入门到精通>介绍了全中文.全可视.全编译.跨平台的编程语言--&quo

  • 安卓第八天笔记--网络编程二

    安卓第八天笔记--网络编程二 1.网络图片查看器 /** * 网络图片查看器 * 1.获取输入的URL地址,判断是否为空 * 2.建立子线程,获取URl对象new URL(path) * 3.打开连接获取HttpURLConnection conn = (HttpURLConnection) url.openConnection(); * 4.设置连接超时时间conn.setConnectionTimeOut(5000)毫秒 * 5.设置请求方式setRequestMethod * GET或者P

  • POCO库中文编程参考指南(10)如何使用TCPServer框架?

    POCO库中文编程参考指南(10)如何使用TCPServer框架? Author: 柳大·Poechant(钟超) Email: zhongchao.ustc@gmail.com Blog: Blog.CSDN.net/Poechant Date: April 21th, 2012 1 TCPServer 框架概述 POCO 库提供TCPServer框架,用以搭建自定义的 TCP 服务器.TCPServer维护一个连接队列.一个连接线程池.连接线程用于处理连接,连接线程只要一空闲就不断地从连接队

  • POCO库中文编程参考指南(1)总览

    POCO库中文编程参考指南(1)总览 作者:柳大·Poechant 博客:Blog.CSDN.net/Poechant 邮箱:zhongchao.ustc#gmail.com (# -> @) 日期:April 14th, 2012 1 What is POCO? POCO 是什么?这是我最常被人问到的.POCO 是 POrtable COmponents 的缩写,官方主页:POCOProject.org.是一个非常出色的 C++ 库,相当于 Java 的 Class Library..NET

  • scheme中文编程

    受javaeye上的<Ruby中文编程 >启发,帖子中有人提到如果if这样的关键字都可以定义成中文,那就是真正的中文编程.那时我就想到,这个其实要在scheme中实现是多么简单,将sicp书中的解释器稍微修改下就可以了,只要修改解析的部分即可.解释器的完整代码放后面,我们先看看有趣的例子: <!---->(定义 你 ' 男) (当 ((是 你 ' 男) (打印 ' 男人是泥土做的)) ((是 你 ' 女) (打印 ' 女人是水做的)) (否则 (打印 ' 妖怪啊))) 其实呢,&q

  • 为何我们产生不了科学的传统?再论中文编程与中医

    我一直以为程序员是充满理性的高素质人才,看来我错了,freasy先生的博文"别污蔑中医与中文编程",据说是对我前几天一篇小文章"无聊的中文编程和背后的‘中国特色’"的批驳,freasy先生除了分辨不清科学与文化的差别,还充分表现了对他对传统文化的迷信. 看来上百年前五四先哲门呼唤的德先生赛先生,还是没有落地生根,科学精神的普及,任重道远. 1.科学与文化 拿筷子吃饭还是拿刀叉吃饭,吃四川菜还是法国大餐,李杜诗歌,莎士比亚戏剧,那叫文化,文化必然有民族性甚至地域性,咱

  • C#也是支持“中文编程的”,读“在C#下进行‘中文编程’”有感

    一直听说过"易语言",但是也一直都没用过,只是听说可以用纯中文就能编程,从网上找到的教程看非常适合初学者. 这里让我们看看有没有办法让高级语言c#也支持个中文编程,首先让我们看如下代码: using System; using System.Collections.Generic; using System.Text; namespace ChineseCode { public class 生物 { public virtual void 自我介绍() { Console.Write

  • 编程珠玑番外篇

    1.Plan 9 的八卦 在 Windows 下喜欢用 FTP 的同学抱怨 Linux 下面没有如 LeapFTP 那样的方便的工具. 在苹果下面用惯了 Cyberduck 的同学可能也会抱怨 Linux 下面使用 FTP 和 SFTP 是一件麻烦的事情. 其实一点都不麻烦, 因为在 LINUX 系统上压根就不需要用 FTP. 为什么呢? 因为一行简单的配置之后, 你就可以像使用本机文件一样使用远程的任何文件. 无论是想编辑, 查看还是删除重命名, 都和本机文件一样的用. 这么神奇的功能到底如何

Tags: