[转帖]对汉语编程的看法
最近一段时期,在项目之余我一直在思索,在彷徨。
作为一个程序员,作为伟大的中华民族的一份子,作为世界上最古老文明古国之一的我的祖国——中国。在世界软件业宛如天翻地覆般蓬勃发展的现今,无奈且妒忌的学习欧美“先进文化”的日子中,眼看着同为亚洲国家的日本尚有ruby可撑门面,而中国,我这伟大的祖国,究竟有什么能被当今世界所认同的贡献呢?
我粗略的检索了一下资料,在中国出名的本土化编程项目,大体有如下十个:
易乐谷
易语言
易语言.飞扬
易脚本
易乐谷.飞扬
创新LOGO
汉编发烧积木(搭建之星)
华罗庚(无代码编程)
O语言(中文汇编)
汉语编程(汉编)
至于这些”明星“们的”丰功伟绩“,时间关系不一一例举,有兴趣者可以进行网络检索。我仅以我曾经切身”php?name=%D3%CE%CF%B7" onclick="tagshow(event)" class="t_tag">游戏“过的易语言进行一点议论。
首先,先请大家看个例子。
在同样的文明古国印度,同样出现了一款类似于易语言的本土化语言环境,被命名为——SKTN。由于编码问题,我只能粘贴他的语法如下:
如果用它进行编程的话,需要写成下面这类样式。
不知道各位是怎么想的?……鬼画符……第一次看到这段语句时,这个可怕想法在我心中油然而生,不觉令我脊柱发凉……
除了印度人,还有人能写这样的东西吗?真主玉帝耶和华啊,难道开发个程序还要去学印度文输入法?……||||
如果你也对上述代码觉得有些寒意的话,将心比心,如果我是任何非中国本土人士,看到易语言时,恐怕也会和见到SKTN语法的各位心境相仿吧?为什么Ruby能在世界上流行?为什么易语言这么多年除去他们在大连的关系部门便无人问津?这个道理,大家都了然于心了吧?
也许有人会说,“你太无知了,易语言可是有EPL版的,外国人即使不会中文,英文总会吧?“。对,没错,而且我听说易语言还打算推出日文版本呢,以后甚至有出拉丁语版本的可能。
可是,我们做程序员的也都知道,统一标准对一个项目的意义有多么的重大。如果真要日本用日语,中国用中文,英国用英文版(请注意,易语言不同版本间编译环境不通用),那么这个项目一旦以外包的形式出现时,究竟要如何才能开发得下去呢?或者说,6个版本还真要让我准备6个ide吗?!天,若当真世界上有朝一日普及了易语言,除了易语言公司之外,恐怕没什么人会高兴起来吧?
我一直认为,文字的作用,即“在最段时间内,准确且清晰地记录最大量信息的工具”。文字和语言都是工具,都是为目的而存在的,而不是为存在而存在的。
不然的话,有声音传递了为什么还要发明文字?有结绳记事了为什么还要用甲骨文?有甲骨文了为什么还用金文、铭文?有金文、铭文为什么还用小篆、隶书?为什么要演变出宋体、仿宋体这些繁体字写法?有繁体字了为什么还要有简体字?
难道只有繁琐才能显示自己的高明不成?!不由得令我想起了河南的魏人乐小朋友,在其世纪大作[智慧星杀毒软件]中添加无用dll文件的趣事……
易语言那繁杂无匹的语法和关键字,直接影响了他的实用性。
现在最糟糕的情况是,即使为了使用易语言培养出精通数国语言的神人级程序员,由易语言的语法所引发的开发效率问题,也将从根本上否定这名程序员的所有努力。
尤为重要的事,易语言居然是闭源的。当然了,这似乎是为了那5000万的863项目资金所必需的。一旦开源,泄露国家机密暂且不说,让人们对原始代码产生这样那样的疑义,就更糟糕了……
在一个本就被怀疑不可靠的环境下,更要使用闭源的环境,这不要说有一个刚刚起步的公司推广,即使是由M$大神来做推广,恐怕也始终摆脱不掉失败的命运。最后,只能落得与教委合作,令其成为一个中小学生的“游戏环境”罢了。
我是赞成重复发明“轮子”的,但是却也认为“轮子”要能承载物体移动才可称其为“轮子”。
再来和其他语言进行比较。以我个人的经历来看,只要掌握了C和Java两种语言以及编程的中心思想,再学其它的语言基本上就是熟悉语法的过程而已。由于本人专职Java程序员暂且不提Java,比如本人上学时接触的PHP,学PHP一周以后就开始写网站,一个月便完成了某校的前台及后台系统。Python和Ruby则各用了两周学习比较,然后用Python写程序,仅用半个月就写出了在线的进销存管理系统。而学VB,Delhpi,.NET乃至于C/C++等,也没有超过1个月上手期的。但在最早接触易语言的时候,我已经写了一年多的Java,并且还未尝间断delphi及vb开发,可是易语言的语法仍然让我相当头大,其帮助文档远比其他语言的说明要“详尽”的多,而且"玄妙"的多,大部分功能都是调用系统API来实现的……而API的名字,则更不是那么容易记忆。最后按照帮助手册上的入门指南时钟程序的时间,也加上我资质鲁钝,竟用到我初学C++时所用的1倍以上!我几乎不敢想像用它来调用一个RichEdit写个功能丰富的记事本需要多长时间。以至于现今易语言的绝大部分实现都并不是易语言开发的,有时我甚至会想,易语言到底是语言呢?还是一个复杂化的本土c++的类库呢?
其实所谓编程,无非就是用程序的语言实现自己心中想要的功能。功能已经摆在这里,不同的语言的区别应该就是语法上的不同,最终实现出来的,应该是一样的结果。当然,对于桌面程序来说,不同的语言写出来的软件界面会有所不同,用Java的Swing和Python的python-win作为界面库,看上去当然会有所差别,但是该有的按钮应该是一个不少的,每个按钮按下去所得到的响应也是完全一致的,唯一的不同,就剩下按钮的模样而已了,这就是标准化的结果。缺少标准化,则将一塌糊涂,而易语言,恰恰就缺乏可行的标准。
由于国内还没有一款能支持web开发的语言出现,所以只能以桌面开发来体现本土化语言的功能。相交之下,C语言在中国已经基本变成了教科书语言,没有多少人能够用C写出非常实用的程序(做单片机开发的除外),Java虽很适合写WEB应用,桌面开发却较弱。VC的入门难度太高,界面很不友好。剩下的可选的就不是很多了,VB6/.Net/Delphi/ruby/易语言/汉语编程等,你会用哪一个?
如果你打算长久的做下去,那么你需要花不少的时间来学习基本语法,数据结构,面向对象,设计模式,然后才是设计一个界面,把你学到的东西变成最简单的代码放到编辑器里,然后生成它。基本语法方面,所有的语言都是一样的,除了一行行的代码按顺序往下走就是if/else还有for/while,没别的了。如果你是个彻头彻尾的英语文盲(你是不是需要换一个汉语键盘?),你不认为if/else,没关系,你可以跳过英语不学,使用“如果/就/或者”这样的语法,以及“开始循环/结束循环”,相信你还是能看的懂的。接下来的数据结构就没那么容易蒙混过关了。首先,中文里面怎么理解数组这个词?数组[1]这样的用法似乎并不符合中文思维。更不用说链表和树了。接下来的面向对象和设计模式,你……还打算学下去吗?
OK,你现在意识到了问题所在,所以你只打算学会基本语法就够了,跳过后面的深层次的东西,直接进入界面层。打开易语言,拖两个按钮上来,双击开始用你学的那点基本语法写代码,显示一个对话框,从文本框里取到数据,需要对数据做一下加减乘除,然后显示给用户。哇,编译通过,运行正常,生活真美好。现在,你想在界面上显示一个漂亮的图表来表现你的数据,因为你是一名老师,正在写一个学生的成绩管理软件,并准备在全校推广一下,宣传一下自己的知名度。你发现,没有找到显示图表的函数,更不用说在某个软件上看到的那个帅呆了的三维立体的饼图了。找个高手问问吧,来到CSDN论坛,发个帖子问易语言里怎么把数据显示成一个跟人家那个一样的图表,结果没有人理你,大家都在用别的语言,可以很方便的使用某个商业的或者免费的控件,易语言还没有把这些控件包装进来,而你,根本不知道如何去调用它……
为什么日本人写出一个新的语言Ruby能够风靡全球,被那么多界面顶级高手推荐吹捧?Ruby是一门新的语言,而不只是一个打磨翻新了的编译器。它体现的是自己特有的灵活方便优雅,以及Ruby on Rails那为敏捷编程而生的严谨而专业的架构,这一切,都成为Ruby取得成功的关键要素。而我们所谓的汉语编程,搞来搞去,只是拿别人现成的语言,把里面的各个要素变成可以用中文写出来而已,说到底,我们只是做了一个编辑器而已,连编译器都算不上。最基本的一点,如果我写一个代码编辑器,里面可以用中文来写代码,在每次保存的时候自动把里面的“如果”替换成if,那么,这个编辑器的后台想调用哪个语言的编译器都没有问题,难道这就是我们汉语编程的未来吗?
如果将汉语编程作为一个商业软件来研究,那么开发人员自然会去想明白为什么要做,做给谁用,为什么人家会用,如果没有人用,开发人员就没有饭吃。但是如果作为国家科研项目来做,有着充足的经费支持,那么,以中国技术人员的急功近利的本性,它一定会成为一个诈骗国家钱财的项目,像汉芯那样。
我不反对把编程变得平民化,我也不反对做出能够让不懂英语的人写计算机程序的软件,因为这些人,并不会跟专业程序员形成竞争。但是我反对用炒作代替研究,用谎言代替成果,用无知扼杀事实。
龙芯、汉芯、智慧星……此类种种863级的项目尽皆成功上马,而一些务实的基础项目反而无人问津,令人不禁感叹中华之秋风,竟一凉至斯啊!……
好多字。。。