现代编程语言应该拥有的三大特性
来源:互联网 发布:淘宝网址转换微信 编辑:程序博客网 时间:2024/04/28 14:35
1.声明式编程风格
声明式(Declarative)编程特性体现为告诉计算机“Do What”,而不是“How to do”
LINQ就是声明式编程的典型例子,如果将它与标准的面向对象编程做个比较,就清楚这两者的不同了
假设现在有一个Student对象集合保存了一批学生的信息:
class student { public string Name { get; set; } public string City { get; set; } }
需要按City属性进行分组
先定义一个数据结构用于保存数据分组
class StudentGroup { public string City; public List<Student> Students = new List<Student>(); }编写与下方法完成整个数据处理工作static void GroupStudentByCity() { var students = getStudents(); var results = new List<StudentGroup>(); foreach (var student in students) { StudentGroup res = results.Find( item=>item.City==student.City); if (res!=null) { res.Students.Add(student); } else { StudentGroup newRes = new StudentGroup() { City=student.City}; newRes.Students.Add(student); results.Add(newRes); } } }
上述代码清晰的告诉计算机:第一步做什么,第二部做什么.....拥有一个明确的执行流程,并且我们可以从代码中清楚的看到整个数据的处理逻辑
以下为LINQ的处理版本
static void GroupStudentsByCityUseLINQ() { var results = from student in GetStudents() group student by student.City into grp select ProcessGroup(grp); PrintResult(results); }可以看到,使用LINQ编程,只需要告诉计算机我们“要什么”,而让计算机自己去决定具体的步骤
2.动态性编程特性所谓动态性(Dynamic),其实就是将一些原本在编译时完成的工作推迟到程序运行时才能进行
使用动态语言编程的好处就是灵活,开发效率高
.Net4.0以前,CLR是针对静态编程语言(如C#)而设计的,无法直接运用Ruby和Python等动态语言开发程序
.Net4.0引入了一个"动态语言运行时(Dynamic Language Runtime,DLR)",在CLR之上提供了一个动态语言的运行环境,从而允许Ruby等动态语言编写的程序在.Net平台上运行
比如C# 4.0就引入了一个新的dynamic关键字用于定义动态类型检查的变量,由此可以写出
dynamic d=1;dynamic result=d.DoSomething();Console.WriteLine(result);变量d保存的是一个整数,默认情况下,他不可能有一个DoSomething()方法,然而上述代码可以顺利的通过编译,直到运行时才报告引发了一个RuntimeBinderException异常。这说明C#编译器看到dynamic类型的变量时,他不去检查变量的真实类型,"d.DoSomething()"这个表达式的类型推断推迟到程序运行时。
3.支持并行程序开发
随着计算机进入多核时代,编写支持多核并行的软件成为潮流。
在.Net 4.0中,引人注目地添加的一个"并行扩展(Parallel Extension)",它为所有的.Net编程提供了一个开发并行程序的平台。在编程语言层面,主要体现为将传统的LINQ增强为支持并行功能的"并行LINQ",由于LINQ本身可与编程语言无缝隙集成,这相当于“间接地”给.Net编程语言扩展了开发并行程序的能力。
将LINQ转换为PLINQ非常简单,很多情况下只需添加一个新的AsParallel()子句即可
var results = from student in GetStudents().AsParallel() group student by student.City into grp select ProcessGroup(grp); PrintResult(results);上述代码在多核CPU上运行时,会自动划分为多个子工作任务并行执行。其中关键的一点是这些代码并不假设一定会在多核CPU上运行,也不假设CPU执行核的个数,一切都是透明的,用户将会发现这些代码在多核CPU上执行会得到更好的性能,但是在单核的CPU上也能得到正确的结果。
- 现代编程语言应该拥有的三大特性
- OC语言--类的三大特性
- C++语言的三大特性
- Java语言的三大特性
- 面向对象编程的三大特性
- Visual C++ 2005的现代语言特性
- Visual C++ 2005的现代语言特性
- 现代语言一些特性
- OC语言三大特性
- OC语言三大特性
- OOP的三大特性是什么? 面向对象编程的三大特性是什么?
- 编程语言的三大定理
- atitit.编程语言会形成进化树--哪些特性会繁荣??通才还是专才的选型 现代编程语言的特性总结
- 黑马程序员 面向对象编程的三大特性
- Java面向对象编程的三大特性
- 现代编程语言Swift、Kotlin等十大有趣功能
- 面向对象编程语言的五大特性
- 体验Visual C++ 2005的现代语言特性
- 用到时间选择器(一)之使用datetimerpicker控件
- source insight研究——正则表达式篇
- IOS Transition Animations 基础一
- Python之struct模块浅谈
- 移动平台:开放与封闭
- 现代编程语言应该拥有的三大特性
- test
- WIFI,蓝牙,电池,背光,SD卡,摄像头,按键,MIC,重力感应等 功能的简单使用
- python2.4 解析json数据
- Android核心分析 之二 -------方法论探讨之概念空间篇 .
- ubuntu apache2配置详解(含虚拟主机配置方法)
- 关于“2011软件开发2.0技术大会”因故延期声明
- Linux命令:实时列出整个CPU与存储设备的I/O状态(iostat)!
- 常用JQuery插件整理