注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

太阳神上的博客

青青子衿,悠悠我心,但为君故,沉吟至今。

 
 
 

日志

 
 
 
 

Tenshi中关于类型系统的设计  

2008-02-06 16:49:25|  分类: 程序设计创意 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

  在几乎所有的脚本语言中,它的类型都是动态的,类型都是由运行时决定的,这样的确可以更灵活,使用起来也更方便。但是有时却带来一些在静态语言中所没有的隐患。
  在最初用C++时,我用的得动态类型,本来嘛,这是脚本语言特色之一,但是使用过一些脚本语言(如Ruby)后,发现动态类型常常出现一些运行时错误,特别严重是拼写错误,由于动态类型,这些不能算是语法上的错误,但是逻辑上出了问题。后来看到了Lua,慢慢重效率的思想抬头,决定使用静态类型,也算是Tenshi区别于其它脚本语言上的特点。
  但是解释器的运行都是执行期的,所以对于其实现来说,两者相较,动态类型可能更好做一些。而且可以享受到很多动态类型所带来的便利,例如一个如果表示一个整数没有设定,我们可以直接赋其为nil,而在C#中则得使用int?这样的可空类型。而且在函数定义时,也不须指定参数和返回值,其代码要简洁很多。
  考虑到这些便利之处,我想采取一种较为折衷的方案,默认是静态,可提高效率与一些编译期错误检查,另一方面再提供动态类型(称为Vishnu类型),以提高编程的灵活性与方便性。但这样同时提供两种类型,却同时加大了一些编程上的困难与语法设计上的复杂性,这必然又会使语言本身变成复杂。
  现在我的想法是,语义上是动态类型,但是在生成中间码时加入静态类型的优化。如假如a,b都是整数类型,则在c=a+b时,直接使用整数加法,而不是动态地判定。
  基本上,设计的思路变化为
动态类型->静态类型->动静折衷->语义为动态,编译时静态优化。

  评论这张
 
阅读(53)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017