面朝大海,春暖华开

focus on scientific computue, 3dgis, spatial database
专注于科学计算、GIS空间分析

 

复古运动: 看C#语言的发展(转)

由于多种原因,没去找出处,下面仅是转载

C#从1.1到2.0再到3.0 , 许多fans为它的新特性欣喜若狂, 其实大部分只是在做一些复古运动.

C#1.x  基本上抄袭了Java, 
新加的特性:
Foreach: 很多语言早就有了这个关键字. 古老的Lisp里用的是DoList 宏.
delegate: 模仿了Lisp的Funcall.

C#2.0:
Generics, 学过C++的人应该对模板都不陌生吧.虽然C#中做了少许改变.
Anonymous methods:  模仿Lisp 里面的Lambda函数.
Nullable types: Lisp 里面有(null )函数. 不管是atom 还是 list 都可以是nil.
aliases: 类似C里面的 #define

再看C#3.0
Implicitly Typed Local Variables: 许多弱类型的语言已经这样做了.
Lambda Expressions: 还是模仿了Lisp 里面的Lambda函数. 比Anonymous Methods 更加像了.
Anonymous Types: 早就觉得写Entity 太麻烦了, 我以前还写过Code Generation 来生成实体类, Anonymous Types 可就简单多了, Lisp 里面的Macro做的就是Code Generation 的工作.
Query Expressions: 我以前做的O/R Mapping 跟它有些像. 增加的 from where select 等关键字, 好像是从COmega进化过来的. 这样下去C#的关键字会越来越多, 语言变得越来越难学. 其中yield return 跟Lisp的Loop 方法如出一辙(loop... collecting..)


其实许多许多的特性, 在古老的Lisp语言中都已经存在了的. 现在把它翻出来, 稍微改变一下, 又变成新的了. 很大程度上,这种现象跟流行服饰是一样. 实在没什么东西可创新了, 就复古吧!!!

posted on 2010-03-14 18:46  风过 无痕  阅读(247)  评论(0编辑  收藏  举报

导航

向日葵支付宝收钱码