`
yimlin
  • 浏览: 137173 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

编译器的春天

阅读更多
为什么这么说呢?这样说是有理由的:
先来看看Java世界中看看最近新热的groovy,以及早已名声在外的aspectj,无一不是通过编译器支持新的语法结构:一个提供了全新动态语言,一个支持面向方面扩展语法。
而MS世界里,且按下各个动态语言的CLR实现不表,就单看C#语法本身,其delegate,partial等都是利用编译器来完成处理的。

想想也是:
VM的更新工程浩大且影响面广,而在编译器中动手脚简直是低风险高收益的买卖,何乐而不为。
而手握像antlr这样一神兵利器更是如虎添翼。

那么下一个带来惊喜将会是什么?DSL还是其它?

分享到:
评论
17 楼 yimlin 2007-04-13  
liubin 写道
搞不懂,编译器说到底还是为了编译程序,
不知道什么叫通过编译器支持新的语法,难道还能通过别的支持?


VM直接支持
16 楼 liubin 2007-04-13  
搞不懂,编译器说到底还是为了编译程序,
不知道什么叫通过编译器支持新的语法,难道还能通过别的支持?
15 楼 ray_linn 2007-04-13  
hurricane1026 写道
JAVA落后的已经不是一点半点了。。。Sun终究和MS比还是慢了些。


ruby对java是威胁,对C#威胁就不那么大,因为MS正在吸收动态语言和函数编程的特性,C# 1.0, 2.0, 3.0每一代的变化都个性鲜明。
14 楼 ray_linn 2007-04-13  
yimlin 写道
ray_linn 写道
icefire 写道
D语言不正扛这编译器的大旗吗?


C# 3.0已经问世了~


今天又仔细看了一下C# 3.0 specification,编译器能做的事还真不少。玩着各种各样的花样,又可以减少代码提高效率,特别是一些特性支持关注点的分离,有助于模型的设计。



以后就是C#领着Java跑的格局了,这对Sun也是种触动吧。
13 楼 ray_linn 2007-04-13  
yimlin 写道
ray_linn 写道
yimlin 写道
我觉的是更像ApsectJ。


不象,AOP无非是方法前方法后而已,MS的是Flex Extension。


大哥,AspectJ的inner type也可以啊!

public class OnType {
	public void doAction(){
		System.out.println("OnType.doAction");
	}
}


public aspect OnTypeAspect {
	public String OnType.name = "OnTypeAspect";
	
	public void OnType.doActionAspect(){
		System.out.println("OnType.doActionAspect and name is "+ name);
	}	
}



注意OnType.name和OnType.doActionAspect,这两个声明使得OnType拥有属性name和方法doActionAspect


哦,我一直没觉得AOP有什么新意,大概是因为太早玩COM+了吧,而且顶多也就是在安全性和事物声明方面玩玩。。。

C# 3.0的Flex Extersion很简单,而且对于基本类型,接口和XXX,XXX都是适用的。
12 楼 yimlin 2007-04-13  
ray_linn 写道
icefire 写道
D语言不正扛这编译器的大旗吗?


C# 3.0已经问世了~


今天又仔细看了一下C# 3.0 specification,编译器能做的事还真不少。玩着各种各样的花样,又可以减少代码提高效率,特别是一些特性支持关注点的分离,有助于模型的设计。
11 楼 yimlin 2007-04-13  
ray_linn 写道
yimlin 写道
我觉的是更像ApsectJ。


不象,AOP无非是方法前方法后而已,MS的是Flex Extension。


大哥,AspectJ的inner type也可以啊!

public class OnType {
	public void doAction(){
		System.out.println("OnType.doAction");
	}
}


public aspect OnTypeAspect {
	public String OnType.name = "OnTypeAspect";
	
	public void OnType.doActionAspect(){
		System.out.println("OnType.doActionAspect and name is "+ name);
	}	
}



注意OnType.name和OnType.doActionAspect,这两个声明使得OnType拥有属性name和方法doActionAspect
10 楼 ray_linn 2007-04-12  
icefire 写道
D语言不正扛这编译器的大旗吗?


C# 3.0已经问世了~
9 楼 icefire 2007-04-12  
D语言不正扛这编译器的大旗吗?
8 楼 coolmenu 2007-04-12  
真像ruby
7 楼 ray_linn 2007-04-12  
yimlin 写道
我觉的是更像ApsectJ。


不象,AOP无非是方法前方法后而已,MS的是Flex Extension。
6 楼 yimlin 2007-04-12  
我觉的是更像ApsectJ。
5 楼 netfishx 2007-04-12  
ray_linn 写道
看看C# 3.0,可以给string加上自己的方法,比如

string email="test@test.com";
if(email.IsValidEmail())....



真像js
4 楼 ray_linn 2007-04-12  
看看C# 3.0,可以给string加上自己的方法,比如

string email="test@test.com";
if(email.IsValidEmail())....

3 楼 yimlin 2007-04-12  
看来只能说我和我周围的朋友最近关注groovy多些,未经过充分调查,sorry
2 楼 netfishx 2007-04-12  
说jruby红还稍微靠点谱
1 楼 ray_linn 2007-04-12  
Java世界中看看最近红得发紫的groovy ---- 太夸张了,离为人所知还远着呢.

相关推荐

Global site tag (gtag.js) - Google Analytics