幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4018|回复: 8

[测试]汉化编程——易语言.飞扬

[复制链接]

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2007-5-31 03:05:24 | 显示全部楼层 |阅读模式
这是国人开发的一门中文编程语言。
易语言本身是c语法特点,vb6式的rad工具。
vb6能干的它都能干,vb6不能干的它也不能干。OTL

值得一提的是,易语言4.x中有orge和opengl,dx的移植,以及中文教程。
有兴趣自己动手写游戏,却又不想啃E文的朋友或可一试。

而易语言.飞扬(ef),它是完全面像对象的语言。
语法上与C风格的,用起来和Java、C#很相似,感觉就是一个可以打中文的Java。

目前这个东西只放出了一个1.0的测试版本。
具体的简介和下载可以看这里
http://www.dywt.com.cn/download.asp
只有2m不到,东西也不是很全,比如类库的文档,只能体验一下。

那就体验吧,国际惯例先来个hello world。
  1. //你好.ef
  2. 公开 类 启动类
  3. {
  4.     公开 静态 启动()
  5.     {
  6.         控制台.输出行("你好,世界!");
  7.     }
  8. }
复制代码
源代码一定要用UNICODE16LE编码。保存为*.ef(ef其实就是txt文件)
ec.exe的提示全是中文,很好理解,开始编译。
  1. ec 你好.ef  -ecl_name="程序" -starter_cls="启动类" -out_mode=runable -out="你好.exe"
复制代码
而等效的java代码长得是这样的。
  1. public class HelloWorld
  2. {
  3.     public static void main( String args[])
  4.       {
  5.         System.out.println("你好,世界!");   
  6.       }
  7. }
复制代码
可以看出来,这些ef代码和java几乎一模一样。
观察"你好.exe",发现这个exe才7.5K,都可以和c编译出来的大小相比了。
再想想,有类,有GC的程序怎么可能这么小?
很快就发现,“你好.exe”必须依赖“系统.ncl”才能正常运行。
这个所谓“系统.ncl”,其实就是一个dll文件。
两个加在一块,是159k,正常。

这里发现了一个问题,虽然是号称“中文编程”,
可如果你的ef文件中用了中文标点。比如“;”写成了“;”,ec.exe就会报错。
中英间来切换标点符号,这是很烦di。

用{}来标识语句块,这个“中文编程”距离中文自然语言也就更远了。
可惜啊,现阶段,与其说ef是“中文编程”,还不如说它是“汉化编程”。

但考虑到,程序全用中文来写,会有免去很多注释的方便,硬着头皮再试一个GUI的HelloWorld。
  1. 引入 工具,用户界面;
  2. 公开 类 我的窗口<基类=窗口>
  3. {
  4.     按钮 我的按钮;
  5.     标签 我的标签;
  6.     面板 我的面板;
  7.    
  8.     公开 事件 逻辑 创建完毕(创建完毕事件 事件)
  9.     {
  10.     我的面板 = 创建 面板();
  11.     我的面板.创建(本对象, 0, 0, 本对象.宽度(), 本对象.高度(), 0, "");
  12.    
  13.     我的标签 = 创建 标签();
  14.     我的标签.创建(我的面板, -1, "你好,世界!", 0, 0, 300, 300, 0, "");
  15.    
  16.     返回(真);
  17.     }
  18. }
  19. 公开 类 窗口程序 <基类="界面程序">
  20. {
  21.     我的窗口 主窗口;
  22.      公开 逻辑 创建界面控件()
  23.      {
  24.         主窗口 = 创建 我的窗口;
  25.         主窗口.创建(空, "窗口", 0, 0, 300, 300,
  26.         (整数)窗口风格.显示系统菜单 | (整数)窗口风格.显示标题 | (整数)窗口风格.显示关闭按钮,
  27.         "主窗口");
  28.         主窗口.显示(真);
  29.        
  30.         返回(真);
  31.     }
  32. }
  33. 公开 类 启动类
  34. {
  35.     公开 静态 启动()
  36.     {
  37.         创建 窗口程序;
  38.     }
  39. }
复制代码
  1. ec 窗口.ef  -ecl_name="程序" -starter_cls="启动类" -out_mode=gui_runable -out="窗口.exe"
复制代码
运行窗口.exe,出现一个带标签的窗口,标签上有一句"你好,世界!"。
算上引入的*.ncl的大小,4个文件,一共4.35m,用wxWidgets的就是大。
对比用Winapi写这段程序,从<基类="窗口">和<基类="界面程序">,可以看出来,
“窗口”就窗口类,而“界面程序”里面包含了回调和消息循环。
总的来说,ef的包装还是不错的。

不过就有点奇怪了,比如,子类怎么继承父类的构造函数?
ef的文档中并没有说,聊聊几句,就把类的封装、继承和多态全带了过去。
这这例子里面居然用了“公开 事件 逻辑 创建完毕(创建完毕事件 事件)”这么奇怪的处理办法,接在父类的构造办法完成之后。OTL

结论:作为一门语言,ef还有很多不完善的地方。
相对于c#,java,也没有什么有用的改良。
(“改良”,“改进”这个词,对国人来说,还有点遥远。)

对于完全不懂编程,e文又不怎么过关的人来说,可以以这种“汉化编程”的方式,熟系编程中的共通思路。

但做为测试版,连类库文档都不放出来,显太小家子气。
所以对于有能力的人,还是别用这个东西作作品的为好。
え~え~お!!!
回复

使用道具 举报

50

主题

994

帖子

6699

积分

管理员

爱干啥干啥!

Rank: 9Rank: 9Rank: 9

积分
6699
发表于 2007-5-31 08:08:52 | 显示全部楼层
其实不是说汉字不好,只是觉得汉字的强项不是用来表现代码中的逻辑的。而且如果只是简单的把
public class Name
{
    ....
}

替换成:
公开 类 名字
{
   ...
}

那么这不过是一个文字游戏而已,感觉真的想做汉字程序语言就要从根本上搞,而不是这种“字串”替换。

大概这本身也是程序员的娱乐作品吧~~=.=

“放下屠刀,立地成佛” 故应先杀生,然后再成佛。

(\\_/) (-_-) ()+() this is bunny priest.
回复 支持 反对

使用道具 举报

7

主题

190

帖子

1766

积分

⑥精研

....

积分
1766
发表于 2007-5-31 16:18:15 | 显示全部楼层
[s:5] 我宁可没事自己去
#define 公开 public
#define 类 class
....
还更适合我的语言特点.
萝卜啊,白菜啊,土豆星啊,梦想有爱啊。
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
 楼主| 发表于 2007-5-31 18:44:42 | 显示全部楼层
所以才说这是“汉化编程”啊。汉化了编程中的关键字,和类名,变量名,函数名...
它并没有真正的做到和中文自然语言的语言习惯相近。
从它的编译器还不支持中文标点就可以看出,说不定这个东西就是从什么开源的e文编译器改过来的。 [s:1]
え~え~お!!!
回复 支持 反对

使用道具 举报

50

主题

1235

帖子

1万

积分

⑧专业

C语言最高

积分
12447
发表于 2007-6-1 00:02:52 | 显示全部楼层
强扭的瓜不甜。。象形文字在编程领域还是不要献丑了。。。字母文字作编程语言不是偶然的,他还有一个很大的优点就是缩进。。。汉字。。怎么缩。。一个字要敲N个字母,有这时间别人英文的早就写完了。。。
我的blog~:http://hi.baidu.com/soaryou/blog
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
 楼主| 发表于 2007-6-1 03:59:07 | 显示全部楼层
很多成熟、正规的源代码里面,注释经常会写得比真正的代码多。
差几个字符,根本无所谓。

关键是在思路上。
汉语编程应该用汉语的思路,而现在国人搞出来的这些,不伦不类。
不光是中文的,就包括日本人弄出来的那些日文编程,用的也还是英文编程的思路。
离一门真正独立的计算机语言还差了点。
え~え~お!!!
回复 支持 反对

使用道具 举报

3

主题

11

帖子

113

积分

③业余

积分
113
发表于 2007-6-1 08:41:16 | 显示全部楼层
我以前用过易语言的,我也来说说吧。

首先,关于中英之争,历来已久,很久以前,就开始争论计算机上到底应不应该使用汉字,后来有了中文输入法,这争论就不见了。

对于,让人去迁就机器用英文打字?还是机器来迁就人使用汉字输入法? 仔细想想,其实是成本问题。以前机器很少很贵,肯定是人迁就机器,想学电脑就得会打英文。现在呢?

就说中文输入法呢?五笔打起来最快,以前广推五笔,拼音看起来没什么技术含量,但是现在呢?新出的输入法全是拼音的。为什么?就是因为简单、易学、成本低。

不管你是中文编程还是英文编程,肯定是向着简单、低成本的方向前进的。现在之所以中文编程不被理解,实质是转换成本过高,(如果有一种软件可以把所有英文资料转换成中文,结果肯定不同)

易语言1~4代都不是普通的编译方式,而是类似于表格的填图式,好像不经过语法分析。这种方式感觉比较新奇,对新手来说很直观。不足之处是不能像其它语言一样离开IDE保存为文本格式。

另外易语言在语法上没什么创新。

至于新出的易。飞扬, 如果早出几年肯定不错。现在推出,就看它的IDE怎么样了。除了IDE,优势可能就是他能本地编译了。

不妙的是,现在的其它语言,都已经支持UNICODE编码,用中文来写代码,基本也没什么问题了。

能本地编译又支持类似JAVA功能的D语言,同样有人试过中文编程。
--------------------------------------------------

说起来很多高人都对中文编程产生过兴趣,最有趣的中文语言如下:

#!/usr/local/bin/perl
use Lingua::Sinica:erlYuYan;
用警兮用严。
印道
1..1
哉兮
印编曰杂申杂申矣
又曰ok矣
又曰1矣
乱曰
国无人莫我知兮  又何怀乎故都
既莫足与为美政兮 吾将从彭咸之所居

-----------------------------解释
用警兮用严。 use warnings; use strict;
印道 print "
1..1 1..1
哉兮 ";
印编曰杂申杂申矣 print sprintf '%s %s'
又曰ok矣 ,'ok'
又曰1矣   ,'1'
乱曰  __END__


另外一个范例如下:
#!/usr/local/bin/perl
# The Sieve of Eratosthenes - 埃拉托斯芬筛法
use Lingua::Sinica:erlYuYan;
用筹兮用严  井涸兮无碍。
印曰最高矣  又道数然哉。
截起吾纯风  赋小入大合。
习予吾阵地  并二至纯风。
当起段赋取  加阵地合始。
阵地赋筛始  系系此杂段。
终阵地兮印  正道次标哉。
输空接段点  列终注泰来。
/Autrijus/
回复 支持 反对

使用道具 举报

50

主题

994

帖子

6699

积分

管理员

爱干啥干啥!

Rank: 9Rank: 9Rank: 9

积分
6699
发表于 2007-6-1 09:49:14 | 显示全部楼层
ls分析的有理。
orz一下后面贴的“中文代码”

“放下屠刀,立地成佛” 故应先杀生,然后再成佛。

(\\_/) (-_-) ()+() this is bunny priest.
回复 支持 反对

使用道具 举报

1

主题

64

帖子

716

积分

⑤进阶

积分
716
发表于 2007-6-8 00:43:40 | 显示全部楼层
对于汉化编程的看法是:

“整数 这是整数;”好像比“int thisisint;”打起来要慢得多,并且看起来的时候会很人品 [s:5]

貌似这个可以叫做“伪古文编程”了:

用筹兮用严  井涸兮无碍。
印曰最高矣  又道数然哉。
截起吾纯风  赋小入大合。
习予吾阵地  并二至纯风。
当起段赋取  加阵地合始。
阵地赋筛始  系系此杂段。
终阵地兮印  正道次标哉。
输空接段点  列终注泰来。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-4-30 01:37 , Processed in 0.027922 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表