`
yimlin
  • 浏览: 139465 次
  • 性别: 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 ---- 太夸张了,离为人所知还远着呢.

相关推荐

    MAPLAB C30_V3.0编译器

    "MAPLAB C30_V3.0编译器" 是一个专为Microchip公司的PIC单片机和DSPIC数字信号处理器设计的C语言编译器。这里的"C30"指的是该编译器是针对Microchip的C30编译器系列,这个系列主要是为了支持16位微控制器,特别是...

    你好春天

    "你好春天"这个标题可能是在比喻程序员在学习或使用TypeScript时的感受,如同春天般充满希望和生机。 在深入讲解TypeScript之前,我们先了解它与JavaScript的关系。JavaScript是Web开发的核心语言,但它的动态类型...

    dev-c++ unable to run program file 问题解决办法

    这个错误通常是因为 Dev-C++ 无法找到正确的编译器和库文件所致。下面是解决这个问题的步骤: 步骤 1:打开 Dev-C++ 的编译选项 首先,打开 Dev-C++,然后点击工具菜单中的“编译选项”项。在弹出的对话框中,选择...

    引擎源代码

    它以其高效的编译器和面向对象的编程模型而闻名,常用于创建桌面应用程序和服务器端系统。使用Delphi编写的引擎源代码,通常能够达到较高的执行效率和良好的跨平台能力。 源代码在游戏服务端中的作用主要体现在以下...

    java学习笔记(11) 第11 章 - 枚举和注解(csdn)————程序.pdf

    在创建季节(Season)对象时,我们发现传统的类设计方式存在问题,因为它允许创建任意数量的季节实例,而实际上季节只有四个固定值:春天、夏天、秋天和冬天。因此,引入枚举类可以更好地解决这个问题,确保枚举类型...

    春天核心注释

    注解是Java提供的一种元数据,用于向编译器、解释器或工具提供信息,这些信息可以用来改变程序的行为或者进行编译时和运行时的验证。Spring框架利用注解实现了依赖注入(Dependency Injection,DI)和面向切面编程...

    keil 编程教程

    - **编译器扩展**:Keil C51编译器对标准C语言进行了扩展,包括使用关键字如xdata, idata等来指定变量的内存模型。 ### 函数声明与中断 - **函数声明**:函数可以带有不同的属性,比如内存模型和是否为中断服务程序...

    java-cheat:Java最小示例。 尽可能使用断言。 备忘单,教程

    Java作弊 Java最小示例。 尽可能使用断言。代码语种类浮点班级分枝标准库地图StringBuilder 溪流...在制品代码Java 8 JMX 工具控制台JAVA_HOME 联合开发银行Java程序第三方春天茉莉Java反编译器莫基托正式验证

    Spring_Thymeleaf:春天,冬眠,Lombok等

    Lombok是一个用于简化Java开发的库,通过在源码级别插入编译器插件,它可以在编译时自动生成如getter、setter、equals、hashCode、toString等方法,从而减少了大量样板代码。Lombok的使用可以显著提高代码的整洁性...

    最新版 VLC Windows 编译指导教程

    此过程使用make工具来调用gcc(GNU编译器集合)和其他编译器来编译源代码,生成最终的vcl.exe文件。此外,还可以创建自包含的包,这些包将所有依赖项捆绑在一起,便于分发。 高级使用部分涵盖了更新Cygwin软件包...

    5-java进阶-枚举与注解1

    SPRING("春天", "温暖"), AUTUMN("秋天", "凉爽"); } ``` 在上面的例子中,我们定义了一个名为 Seasons 的枚举,枚举中包含四个常量:SUMMER、WINTER、SPRING 和 AUTUMN。每个常量都有两个字符串参数。 枚举的...

    代码优化:有效使用内存.part3

    4.2.1历史回顾——汇编语言使春天永驻 4.2.2评价机器优化质量的指标 4.2.3评价机器优化质量的方法 4.2.4对主要编译器进行比较分析 4.2.5测试结果的讨论 4.2.6机器优化质量的示例 4.2.7用汇编语言创建保护代码 4.2.8...

    代码优化:有效使用内存.part2

    4.2.1历史回顾——汇编语言使春天永驻 4.2.2评价机器优化质量的指标 4.2.3评价机器优化质量的方法 4.2.4对主要编译器进行比较分析 4.2.5测试结果的讨论 4.2.6机器优化质量的示例 4.2.7用汇编语言创建保护代码 4.2.8...

    代码优化:有效使用内存.part1

    4.2.1历史回顾——汇编语言使春天永驻 4.2.2评价机器优化质量的指标 4.2.3评价机器优化质量的方法 4.2.4对主要编译器进行比较分析 4.2.5测试结果的讨论 4.2.6机器优化质量的示例 4.2.7用汇编语言创建保护代码 4.2.8...

    如何客观地看待鸿蒙的现在与未来(计算机行业)-国盛证券-2019.87.pdf

    1. 鸿蒙操作系统的现状:文档指出,鸿蒙操作系统作为华为自研系统,被外界期待已久,预计最快在2019年秋天,最晚在2020年春天正式面世。华为开发者大会被视为鸿蒙操作系统正式亮相的舞台,届时可能伴随方舟编译器...

    leetcode2-education:OmiSoft.net知识库

    编译器 () 安卓 () () [文章] 架构和设计模式 算法 后端 Java / () () ( () - 新手不太容易理解 () Java 8 并发教程 (, , ) Kotlin SQL () 在线编辑 春天 () () Hibernate 实用程序和图书馆 - 减少模板代码数量的...

    如何客观地看待鸿蒙的现在与未来(计算机行业)-国盛证券-2019.87(1).pdf

    在“鸿蒙的现在”部分,报告指出华为操作系统预计将在2019年秋天或最晚到2020年春天面世,并且市场对此充满期待。华为在开发者大会上可能会宣布方舟编译器开源,并邀请开发者基于方舟编译器进行应用程序(App)开发...

Global site tag (gtag.js) - Google Analytics