不同的编程模型往往意味着不同的Mind或Metaphor,从大视角来看,可以按不同分类得到如下不同组合:
Declarative vs Imperative;
Procedural Programming vs Functional Programming;
Structured Progarmming,OOP+AOP,Component Based,Service Oriented;
meta-programming vs ?;
.NET作为一个平台,和编程模型相关的主要是Language和Framework。就个人体会而言,.NET平台对以上编程模型着实下了一番“取其精华,去其糟粕”的功夫。众所周知的一点,meta-programming是整个.NET平台很基础性的一个特性,这里主要是指Generic和Reflection。
就Language来言,最具代表性的C#颇有集大成的味道,但又很好地保持了其简约风格。C#整体上属于Imperative,以Procedural为主,局部融入了Declarative和Functional要素。当然其属于OOP+AOP,但实践中,大家着实写了不少OO度不咋地道的代码,也就是Structured Programming或更糟糕了。
就Framework而言,其包含的编程模型很丰富,可以说是百花齐放,精彩纷呈,整体上属于Imperative,以Procedural为主,部分属于Declarative,属于OOP+AOP+Component Ba