Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

1、说在前面

中考总分130分。其中古代诗歌默写6分,文言文阅读11分,古诗鉴赏4分。总共21分。

古代文学占17.5%

高考总分150分。文言阅读9分,翻译10分,古诗词鉴赏8分,古诗文默写8分。总共35分。

古代文学占21.3%

可见文言文是十分重要的。

然而。。。你想过用文言文编程吗???

这几年,奇奇怪怪的编程语言逐渐变多,其中一个学霸创建了一个叫文言文的编程语言,风靡github(?

2、关于wenyan语言的代码与语法

2-1、认识wenyan语言

咱们都知道,学习一门编程语言是从什么开始的??

众OIer orz :当然是 A+B~

哦,不对,学习一门语言应该先从理解这个语言的优缺点啊,基础框架啊等等(回想一下你刚开始学 C++ , Pascal的时候(那时候我C++框架默了5遍都默错))。

但是! wenyan 语言 没有框架!

wenyan就像 Pascal一样,定义好变量后就直接开始打主代码了。不会像 C++一样还有什么万能头啊,什么 STL 啊,没有这么多,简单易懂(还能提升你的文言文阅读水平)。

现在,我们要开始打主代码,我们先从最基本的 Hello world!开始吧~

wenyan打三遍Hello world! 的输出是这样的:

1
2
3
4
吾有一數。曰三。名之曰「甲」。
為是「甲」遍。
吾有一言。曰「「問天地好在。」」。書之。
云云

编译为Javascript

1
2
3
4
var n = 3;
for (var i = 0; i < n; i++) {
console.log("問天地好在。");
}

编译为Python

1
2
3
4
a=3
for _rand1 in range(a):
_ans1="問天地好在。"
print(_ans1)

编译为Ruby

1
2
3
4
5
a=3
a.times do |_rand1|
_ans1="問天地好在。"
p([_ans1].join)
end

自译为c/c++

1
2
3
4
int n = 3;
for (int i=0;i<n;++i) {
printf("問天地好在。");
} 

运行:

問天地好在。問天地好在。問天地好在。

是不是很生动?很形象?对, wenyan 就是这样!清晰易懂,代码简便……

现在开始介绍 wenyan的基本语法:

2-2、基本语法

2-2-1、定义变量

毕竟都说是文言文编程了,肯定不能出现英文字母和数字的嘛~

1
2
3
4
5
6
7

吾有一數。曰六。名之曰「甲」。 int a(a就是甲)=6;

有數六。名之曰「蒟蒻」。 int juruo=6;

吾有一言。曰「「噫吁戲」」。名之曰「乙」。 string b(就是乙)=alas!

2-2-2、ture和false

true/false 分别对应 wenyan语言中的陽/陰(繁体的阳/阴),类型就是“爻”(卦符的基本符号):

C++
1
2
3
4
5

吾有一爻。曰陽。名之曰「丙」。 bool c=true;

吾有一爻。曰陰。名之曰「丁」。 bool d=false;

2-2-3、if判断

作为一个编程语言怎么少了 ifi判断呢?

C++
1
2
3
4

若三不大於五者。吾有一言。曰「「OK」」。 if(3<=5) cout<<"OK";

書之。。若非。乃得「「NO」」也 else cout<<"NO";

2-2-4、运算符

加减乘除一应俱全,连逻辑运算符都有!

C++
1
2
3
4
5
6

加一以一。 1+1

除七以三。所餘幾何。 7%3

減六六六六以六六六。名之曰「甲」。 int a=6666-666;

2-2-5 容器类型

容器类型也支持,而且注意一下,首个下标是从一开始的。

C++
1
2
3
4
5
6
7
8

吾有一列。名之曰「数组」。充「数组」以四。以二。 int shuzu[]={4,2};

夫「寶劍」之長。 sword.size;

夫「蒟蒻」之一。 juruo[1];

夫「中国」之「「名」」。 China["name"]

2-2-6 进价语法

一些 wenyan 的进价语法。。。。。。

定义函数

wenyan:吾有一術。名之曰「吸星大法」。是術曰。⋯⋯是謂「吸星大法」之術也。

1
function f(){...}

定义含参函数

wenyan:吾有一術。名之曰「六脈神劍」。欲行是術。必先得六數。曰「甲」。曰「乙」。曰「丙」。曰「丁」。曰「戊」。曰「己」乃行是術曰。⋯⋯是謂「六脈神劍」之術也。

1
function f(a,b,c,d,e,f){...}

定义其他函数

wenyan:吾有一術。名之曰「翻倍」。欲行是術。必先得一數。曰「甲」。乃行是術曰。乘「甲」以二。名之曰「乙」。乃得「乙」。是謂「翻倍」之術也。

1
function double(a){var b = a * 2; return b;}

wenyan:施「翻倍」於「蒟蒻」。

1
double(juruo);

wenyan:吾有一數。曰五。書之。

1
console.log(5);

2-2-7 循环

就是那些 for , while循环之类的。(注意! 云云 为 wenyan语言循环的后面必加的东西!)

1
2
3
4
5
6
7

為是百遍。⋯⋯ 云云。 for(int i=1;i<=100;i++)

......恆為是。⋯⋯ 云云。 while(true) ......

乃止。 break

目前就这些了……

3、编写wenyan语言程序运行

本人是用洛谷 IDE 进行运行的,当然还有一种网站也可以实现 wenyan语言的编译运行,还可以实现 wenyan转 JavaScript和 Python的功能!(虽然我都不会……)
这个网站就是:戳这里

这里面有不少好康和好玩的东西,你也可以在这里面编译。

而且项目文件还有个脚本src/render.js,它可以把程序渲染成古代书籍的样子。

4、关于wenyan语言编程

夫唐、虞之世,結繩而足治,屈指而足算。是時豈料百代之後,計算機械之巧,精於公輸之木鳶,善於武侯之流馬;程式語言之多,繁若《天官》之星宿,奇勝《山經》之走獸。鼠、蟹、鑽、魚,或以速稱。蛇、象、駱、犀,各爭文采。方知鬼之所以夜哭,天之所以雨粟。然以文言編程者 ,似所未有。此非文脈之所以傳,文心之所以保。嗟予小子,遂有斯志。然則數寸之烏絲猶覆於頭,萬卷之素書未破於手;一身長羁于远邦,兩耳久旷于雅言。然夫文章者吾之所宿好,程式者偶承時人之謬譽。故希孟不慚年少,莊生不望無涯。乃作斯言。未能嘔瀝長吉之心血,亦庶幾免於義山之流沫。既成之後,復學干將鑄劍而自飼,越王嚐糞而當先。自謂偶追《十書》之筆意,但恨少八家之淋漓。此子山所謂士衡抚掌而甘心,平子見陋而固宜。然則雖實覆甕之質,尚存斧正之望;雖乏呂相之金,易字之渴蓋同。此亦開源之大義,吾輩之所以勉勵也。一笑。 —-Huang Lingdong(wenyan语言作者)

Huang Lingdong,来自卡耐基梅隆大学,如今大四,明年即将毕业。高中则毕业自上海世界外国语中学。

就是这个小伙子,做出了这个风靡 github的 wenyan语言!

5、写在最后

到最后,不知道大家看懂没(反正我是看懂了)。

真的是奇葩多。。。

附录:奇奇怪怪的编程语言

Esolang
Esoteric programming language,简称 Esolang,它们的设计被用于测试计算机语言设计的极限,作为一个概念的证明,或仅仅是一个玩笑。Esolang 创作者通常并不打算让它成为主流编程语言,他们几乎不会在意语言的可用性,甚至恰恰相反,会故意增加使用难度。(我介绍这个你们自己品)

比如 Brainfuck,它是在 1993 年被创造的编程语言,语法仅包含八种符号,没有任何单词,用它打印 Hello world 是这样的:

1
2
3
++++++++++[>+++++++>++++++++++>+++>+<<<<-]
>++.>+.+++++++..+++.>++.<<+++++++++++++++.
>.+++.------.--------.>+.>.

再比如 MarioLANG,它同样只能使用符号,需要使用形似马里奥关卡的语法来书写:

1
2
3
4
5
6
++++:     >    > +:+:+:+:+:+:+:::::
====+ >^=== """=================
+:-):(:^= = !
========= = #
= ! .+.,:-<
=### ======"

Parenthesis Hell,言如其名,括号地狱,只能使用括号来书写:

1
2
3
(()()(()()(()()()()((()()(()(()((()((()()()((()((()()()((()((((()()(()(
)()()()()(((()(((()((()((((()(((()()(()()((()((()()()((()()(()()()()(()
()()()(()()()()(()(())))))))))))))))))))))))))))))))))))))))))))))))))

评论