找回密码
 点一下
查看: 2583|回复: 11

大家想要一种比vjass还强的语法吗?

  [复制链接]
发表于 2007-5-10 13:01:13 | 显示全部楼层 |阅读模式
  在我用vjass的时候感觉还是不太方便。比如vjass没有重载功能(虽然可以写操作符函数),没有利用gamecache。没有引用,没有模版,没有static变量...

  我在发现vjass之前就提出过做一个jass编译器,但是由于自己信心不够,而且后来又发现了vjass就放弃了这个想法,现在在用vjass写了一些代码之后发现仍然不够方便,于是重拾这个想法,现在我做个调查。请根据实际情况投票。

  我暂时将新语法命名为hjass,语法和jass应该不会有太大的差别。并且至少提供重载和模版,多维数组,引用。

  类和对象用两种实现方式(数组和gamecache),使用关键字(struct和class)来选择。

  提供分断函数功能,在一个函数中加入关键字“break”,后面的语句将在一个新的函数中书写,并且通过timer和gamecache后面部分需要的原函数的局部变量和线程资源传递过去。break可以跟时间。
...

大家可以踊跃地参与语法设计,具体实现由我来完成。

编译器将作成一个命令行程序,方便移植和嵌入到任何其他工具之中。
单选投票, 共有 2 人参与投票

投票已经结束

50.00% (1)
50.00% (1)
0.00% (0)
您所在的用户组没有投票权限
发表于 2007-5-10 15:30:20 | 显示全部楼层
H jass啊 [s:36]
回复

使用道具 举报

发表于 2007-5-10 16:22:07 | 显示全部楼层
个人认为,不需要...
PS:做编译器素很繁琐滴工作...不知道某H想用虾米语言做...
回复

使用道具 举报

 楼主| 发表于 2007-5-10 18:19:20 | 显示全部楼层
准备用C来做。

新确定语法:jass原始数据类型关键字第一个字母大写即为它的包装类型,包装类型作为参数类型时为引用传递。
只有原始数据类型使用拷贝传递。

包装数据类型把原始数据类型相关的函数都包装进去
回复

使用道具 举报

发表于 2007-5-10 22:06:46 | 显示全部楼层
嗯嗯。很好啊。
不过关于cache。个人不是很喜欢。
如果楼主打算使用cache作为核心的话。
会有很灵活的操作。但是个人感觉总会有一些问题。当然只是猜测。而且也米啥具体的想法。
最主要的是偶不太喜欢cache。大概是因为偶从来米做过地图。
没体验到变量到cache,的那种质的变化的能量吧。嗯嗯。
回复

使用道具 举报

 楼主| 发表于 2007-5-10 22:47:01 | 显示全部楼层
其实不是以cache为核心呢,应该是有些地方必须使用cache而已。
感觉cache就像php里面的“超级变量”(我也不懂怎么叫来着)
回复

使用道具 举报

发表于 2007-5-11 00:09:31 | 显示全部楼层
其实我不知道使用cache和使用变量哪个占用的资源少。
当然。即使cache占的资源多一些。也不会非常多。否则这么多使用cache的地图老早就吃不消了。
只是感觉使用cache很不舒服。cache就像硬盘。
用硬盘当内存用总感觉不好。所以偶都是不使用虚拟内存的。。。
并不是说不好啦。只是个人思想问题。

如果楼主把这东西做好。
语法更舒服一些,那真是太棒了。
回复

使用道具 举报

发表于 2007-5-11 00:27:48 | 显示全部楼层
1. 使用cache本身是否能达到0泄露??(可以参见老狼文章里的2种反方案的利弊)
2. Hjass的的OOP功能是否有继承和多态的能力(说句实话没有这2个能力就谈不上OOP,WE本身无法读取外围数据,封装更是无从谈器)
3. 建议1:定义一个取地址运算符,可以让HJASS的使用者脱离cache的束缚(,使用者可以象操作指针一样来操作变量,不要象以前既要使用h2i的同时还要使用cache)
4. 建议2:希望能在对象跑出作用域时自动启动析构造函数做一些clear的处理,其实在函数体结束之后就应该能自动删除点,JASS没有做到这点
5. 建议3:希望增加垃圾收集器功能,丢失的点一定时间之后或者跑出作用范围之后能自动被清除(如果能很好实现3,则问题5的难度会大大下降.)
[s:39]
回复

使用道具 举报

发表于 2007-5-11 13:14:43 | 显示全部楼层
使用变量其实也不一定是不可行的。
每种变量一般都是一个固定的地址。
或许有某些类型的地址是在同一个段内的。
不过也许可以通过判断类型来区分开?
回复

使用道具 举报

发表于 2007-5-11 13:57:56 | 显示全部楼层
RTTI??
回复

使用道具 举报

 楼主| 发表于 2007-5-11 14:23:12 | 显示全部楼层
vjass就是用数组来做的,我以前不是也做过一个吗?
垃圾回收这个建议很好,对于对于无法 枚举的 对象可以考虑开启垃圾回收。

继承和多态这个东西,hjass只能说做到编译时刻的多态,运行时多态是很难办到的。但是也有办法,因为jass提供code类型。
至于继承也能实现,不过貌似做地图用不到也。所以vjass也没去实现。

另外封装其实就是把离散的东西放到一块,并且隐藏实现的细节。这个vjass里是有的啦
回复

使用道具 举报

发表于 2007-5-11 14:54:17 | 显示全部楼层
不过运行时不能多态的话,那继承也就变的木有意义了....
[s:44]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-22 22:57 , Processed in 0.188477 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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