三行诗乱言

前段时间三行情诗挺火的,同学说明白

螃蟹在剥我的壳,笔记本在写我
漫天的我落在枫叶上雪花上
而你在想我

的时候,我说了一句这和“山无陵 天地合 乃与君绝”类似,写这篇文章解释下。

相似之处

这种表达方式其实是catch-throw表示方法:

1
2
3
	catch(Exception e){
    	throw new SomeException(Object.. args);
	}     

表示方法是为了表示出一个命题,一般的表达方式是A蕴含B。采用catch-throw,往往是原表达式的否命题(当然只有原命题与逆否命题才是同真假的)或否命题的子集,若要通过否命题推出原命题,原命题的A,B的条件则必须是人可理解的对立,非此即彼。比如男,对立的自然是女,而不是非男;黑,对立的自然是白,而不是非黑。这些都是大家比较容易接受的对立概念。没有大家都容易接受的对立概念来用catch-throw,效果往往不好。执着的男女对于爱情往往是爱与不爱(实际也大概如此),因而catch-throw可以屡试不爽。但如果不是那么对立的物件,用catch-throw,则会让人误会或者不知所云,如:

螃蟹在剥我的壳,笔记本在写我
漫天的我落在枫叶上雪花上
香菜的感觉真好

这段话大概会让人推测作者很讨厌香菜。

螃蟹在剥我的壳,笔记本在写我
漫天的我落在枫叶上雪花上
天空在想着什么

这段话恐怕就真的让人不知所云了,如果文辞秀美,大概会当作朦胧诗留下。

有趣的翻译

有catch-throw表示方法,自然也有if-true表示方法:

1
2
	if(statement)
	    true;   

这种表达方式的核心在于省略true,最经典的例子当属翻译"I love you":

夏目漱石有一次问他的学生如何翻译I love you,有学生翻译成我爱你。夏目说:日本人怎么可能讲这样的话?“今夜月色很好”就足够了。张爱玲有次问朋友如何翻译I love you,朋友翻译成我爱你。张爱玲说:文人怎么能讲这样的话?“原来你也在这里”就足够了。

套过来就是:

1
2
	if("今夜月色很好" || "原来你也在这里")
	    "I love you";   

当然,这里的"I love you"也可以是其他语句,比如如何夸一个女孩漂亮,赞一个男孩的勇气,所谓的statement只是时机下适宜的话。金庸擅于夸一个女孩漂亮,如:

"这是草原上一个最美丽、最会唱歌的少女死了之後变的。她的情郎不爱她了,她伤心死的。"李文秀迷惘地道:"她最美丽,又最会唱歌,为什麽不爱她了?"计老人出了一会神,长长的叹了口气,说道:"世界上有许多事,你小孩子是不懂的。" 这时候,远处草原上的天铃鸟又唱起歌来了

而古龙,擅于赞一个男人的勇气:

在流浪中,他的马鞍和剑鞘渐渐陈旧,胡子也渐渐粗硬。但他的生活,却永远都是新鲜而生动的。

程序三行

程序语言能写出优美的情诗么?虽说程序语言的优势是表达逻辑,但是有着逻辑的浪漫一定是可以表达出来的。
曾经在人人看到复旦信管院的三行情诗:

1
2
3
    int i;
    for(i = 0; i < forever; i++);
    printf("I love you");

第一眼看到的时候,就不自觉的想起了罗素的《To Edith》

Now, old and near my end,
I have known you,
And, knowing you,

我挺想自作主张再加上一句(原诗无此句)

//And I can say "I love you"

当然,对于诗中以物托相思的浪漫,则是程序语言的短板。毕竟程序语言中最容易表达的是时间:变量的存活周期;对于部分,则只有超类闭包等概念。

例行吐槽

世界上的思想不过那么些,后辈理解者不过万一,理解而践行者又万万之一,至于改进,百年有一则为幸。曾经读《程序员的十层楼》,国内的大虾、牛人数量远超国外,到了大牛这个层次就开始落后,略为不解。近些时间看国内一些牛人的采访,说着一些语言重要的是思想,我懂了思想其他自然什么云云,有人在下面评论"懂了思想什么的话怎么不去和ken他们去说",突然间会心一笑。学了些剑招或许连华山石壁上的都不如,就可以认为横行天下,殊不知当时仍有独孤九剑,而孤独九剑十分繁复,每一剑有数百种变化;而孤独九剑,不过是见尽天下招式所创,招式巧妙未达"重剑无锋,大巧不工",遇上同样高手,只能赌运气了;而笑傲,不过是个内力式微的时代。