2007-09-23旧作。原载:http://blog.csdn.net/st_monad/article/details/1797146
最近看到solidot上有人灌水说又推出了一种汉语编程语言:
http://developers.solidot.org/article.pl?sid=07/09/19/0429258&from=rss
去看了看,没有任何新意,和中蟒的视觉感受很类似,试想,天天让一个正常的中国人写这样的汉语能不得神经病吗:
载入 系统
文件名 = 系统.参数[1:]
定义 修正行尾(文件):
内文 = 打开(文件名).读入()
内文 = 内文.替换('/n/r','/n')
传回 内文
取 文件 自 文件名:
写 修正行尾(文件)
上面这段是中蟒的“汉语代码”。中蟒在cosoft.org.cn上的统计信息也是没有继续维护了:
注册日期: 2002-04-29 15:07
活动统计: 0%
这类东西的本质基本上就是在所谓“英文编程”的lexing前面加上一步preprocessing,把汉语转换成英文,然后进入传统的编译过程。当然,如果更高明一点,可以用一个支持unicode的lexer/parser自己写一个直接支持汉字字符关键字的编译器,哈哈。不过,都是毫无创意。
用简单的直译来模仿英语的编程手法,实在是十分拙劣。单就打字来讲,输入for要比输入“循环”要简单的多。当然,打字不是问题,因为不是号称有打字比赛汉字输入速度已经超过英文了吗。
这个世界上,简直没有什么比毫无创意的发明更令人恶心和面目可憎的了!
在st. monad看来,这些人都没有认识到汉语比起英文的不同在什么地方。相比英语来说,汉语不适合、不善于简单的表达,而是适合凝练的表达。枪手贴[1]虽然通篇都是屁话,但是有一句还是值得在这里提一下的,那就是”汉语编程的原理是建立在汉字的本身优势上,汉字看起来很复杂,但表达的意义却很丰富。“可惜的是,用”循环“代替for却恰恰是挥刀子宫、完完全全放弃了这一优势。
有破亦当有立,到底什么样的编程语言适合用汉语来表达而英语不善表达呢?如st. monad前面说的,必然应该是语法“凝练”而不是“简单”的语言。
为了更容易学习、记忆、输入,英语编程语言必须抛弃自然语言的冗余表达,转而使用更少的关键字、更简单的语法,但是同时也意味着编程上的低级和复杂:为了表达一个逻辑结构,往往需要几十行到上百行代码。一个极端的例子就是brainfuck这个语言。看看BF写的hello world吧[2]:
回到汉语,汉语适合表达凝练的语法。这种语言不是没有,APL就是[3]。APL连很多Unicode字符都用上了。当然,我的意思并不是说把APL拿来用汉字翻译一下就OK了。而是,我们要使用这种思想,真正设计出特别凝练的、充分发挥汉语语言特点的汉语编程语言。
先这么多。
[1] http://www.cnbeta.com/articles/38598.htm
[2] http://en.wikipedia.org/wiki/Brainfuck
[3] http://en.wikipedia.org/wiki/APL_(programming_language)
http://developers.solidot.org/article.pl?sid=07/09/19/0429258&from=rss
去看了看,没有任何新意,和中蟒的视觉感受很类似,试想,天天让一个正常的中国人写这样的汉语能不得神经病吗:
载入 系统
文件名 = 系统.参数[1:]
定义 修正行尾(文件):
内文 = 打开(文件名).读入()
内文 = 内文.替换('/n/r','/n')
传回 内文
取 文件 自 文件名:
写 修正行尾(文件)
上面这段是中蟒的“汉语代码”。中蟒在cosoft.org.cn上的统计信息也是没有继续维护了:
注册日期: 2002-04-29 15:07
活动统计: 0%
这类东西的本质基本上就是在所谓“英文编程”的lexing前面加上一步preprocessing,把汉语转换成英文,然后进入传统的编译过程。当然,如果更高明一点,可以用一个支持unicode的lexer/parser自己写一个直接支持汉字字符关键字的编译器,哈哈。不过,都是毫无创意。
用简单的直译来模仿英语的编程手法,实在是十分拙劣。单就打字来讲,输入for要比输入“循环”要简单的多。当然,打字不是问题,因为不是号称有打字比赛汉字输入速度已经超过英文了吗。
这个世界上,简直没有什么比毫无创意的发明更令人恶心和面目可憎的了!
在st. monad看来,这些人都没有认识到汉语比起英文的不同在什么地方。相比英语来说,汉语不适合、不善于简单的表达,而是适合凝练的表达。枪手贴[1]虽然通篇都是屁话,但是有一句还是值得在这里提一下的,那就是”汉语编程的原理是建立在汉字的本身优势上,汉字看起来很复杂,但表达的意义却很丰富。“可惜的是,用”循环“代替for却恰恰是挥刀子宫、完完全全放弃了这一优势。
有破亦当有立,到底什么样的编程语言适合用汉语来表达而英语不善表达呢?如st. monad前面说的,必然应该是语法“凝练”而不是“简单”的语言。
为了更容易学习、记忆、输入,英语编程语言必须抛弃自然语言的冗余表达,转而使用更少的关键字、更简单的语法,但是同时也意味着编程上的低级和复杂:为了表达一个逻辑结构,往往需要几十行到上百行代码。一个极端的例子就是brainfuck这个语言。看看BF写的hello world吧[2]:
++++++++++ [>+++++++>++++++++++>+++>+<<<<-] >++. >+. +++++++. . +++. >++. <<+++++++++++++++. >. +++. ------. --------. >+. >.我想人是很难习惯写这种语言的。所以这个矛盾和自然语言的发展是一样的:说话的人为了省力气,倾向于用更少的单词表达更多的意思;听话的人为了更准确的理解,倾向于听到意义唯一的单词。所以自然语言的单词的表达意义的数量是这两个力互相较劲的结果。
回到汉语,汉语适合表达凝练的语法。这种语言不是没有,APL就是[3]。APL连很多Unicode字符都用上了。当然,我的意思并不是说把APL拿来用汉字翻译一下就OK了。而是,我们要使用这种思想,真正设计出特别凝练的、充分发挥汉语语言特点的汉语编程语言。
先这么多。
[1] http://www.cnbeta.com/articles/38598.htm
[2] http://en.wikipedia.org/wiki/Brainfuck
[3] http://en.wikipedia.org/wiki/APL_(programming_language)