写点什么

评论:C#正变得越来越臃肿

  • 2007-07-30
  • 本文字数:1099 字

    阅读完需:约 4 分钟

C# 2.0 发布的时候,我们回头看 Java,总认为这个语言怎么发展得这么慢?但当 C#发展到 3.0 的时候,它也开始显示出臃肿之态了,这是否会也会带来什么连锁效应呢?

6 年前,我是个 Java 的拥护者,当时 C#还是 1.0 版,我经常和师傅争论 Java 如何比 C#好,于是他给我一个回答:“我们的 COM 比 Java 早了近 5 年,所以我们更成熟;我们的.NET 比 Java 晚了 5 年,所以更先进”。虽然这么比较有“偷换概念”的感觉,但现在想想其实有另一层意思——“成熟与先进”的矛盾。

Lisp、Haskell、Scheme 这些语言也都可以被称之为“伟大”,但为什么很少有人去学呢?因为需要用太多的东西“充斥”我们的大脑后才可以使用。Java 和 C#之所以可以快速地被普遍接受,一个很重要的原因就是因为它们的简单与清爽。但当明年春天 C# 3.0 发布的时候会怎么样呢?虽然你可以将 WCF、WF、WCS 和 WPF 视为.NET 的外挂,不予理会,但 LINQ 是个不好回避的内容,因为它在处理数据访问(关系型的、非关系型的)方面有比较明显的优势,所以即便你个人排斥它,其他还是会有很多人用。最后很可能成为这样一种局面:参与到一个项目组,自己只能从事一些表层业务开发,因为下层的公共封装机制都是用 LINQ 编写的,况且还有 Enterprise Library 这个“样板工程”在后面催着。

可以这么说,C#越来越臃肿是个必然的趋势,作为.NET 语言的“主力”,随着新的开发架构的出现,C#的复杂性还会增加,同时很可能导致革新特性越出越慢,毕竟牵扯的内容多了,作为“主力”除了要考虑语言特性间的协作外,还要充分考虑处理效率。

不过比起“一条道跑到黑”的 Java 而言,.NET 平台有个优势——CLS(Common Language Specification,公共语言规范)。相信 Java 的设计者不太愿意,也不敢随便为了一个“快速走红”但还没有 2 年时间市场考验的技术趋势就去修改 Java 编译器;.NET 不同,“C#红旗不倒的同时,.NET 平台可以彩旗飘飘”,比如 Spec#就是个例子,为了避免 null 对于软件的影响,.NET 家族诞生了 Spec#,目的就是通过非 null 这个前提,提高数据验证、异常处理、堆栈管理的能力,利于开发者提供更高质量的软件; F#也是,虽然 C#是强类型的,但动态语言式的开发一样可以基于这个“小兄弟”开发,加上它和其他.NET 语言前辈基于同一个 CLR 环境,所以功能毫不逊色。

综上所述,C#臃肿是不可避免的,而且很可能会像 Visual C++ 一样,因为语言的复杂性,导致 C#开发人员技术能力的两极分化。但同时,借助试验性.NET 语言的支持,即便需要集成新的特性,也不会像某些语言一样从头开始。依靠试验性语言的积累,相信从 MSDN 中查看 C#这些新语法的时候,可以少见一些标着“[Obsolete]”的内容。

2007-07-30 04:281458
用户头像

发布了 61 篇内容, 共 12.8 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

通过Dao投票STI的销毁,SeekTiger真正做到由社区驱动

鳄鱼视界

HMS Core图形图像技术展现最新功能和应用场景,加速构建数智生活

最新动态

带领全网朋友,完成粉笔登录加密分析,再次换种玩法

梦想橡皮擦

Python 爬虫 7月月更

为什么加工数据指标

奔向架构师

数据仓库 7月月更

队列的链式表示和实现

工程师日月

算法 7月月更

数据库的主从分离

ES_her0

7月月更

zookeeper-认识watcher

zarmnosaj

7月月更

Block 的分类

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

值得收藏的ArkUI框架三方组件【系列1】

坚果

HarmonyOS Open Harmony 7月月更

jQuery 操作元素

Jason199

jquery js 7月月更

常见链表题及其 Go 实现

宇宙之一粟

链表 7月月更

【萌新解题】三数之和

面试官问

面试 LeetCode

Envoy生命周期管理

阿泽🧸

envoy 7月月更

ES6之箭头函数

bo

前端 ES6 箭头函数 7月月更

面试官:工作两年了,这么简单的算法题你都不会?

掘金安东尼

程序员 面试 算法 前端 7月月更

深度学习-多维数据和tensor

AIWeker

7月月更 多维数据

LeetCode 242:有效的字母异位词

武师叔

7月月更

SDL图像显示

柒号华仔

7月月更

应用的无状态设计

穿过生命散发芬芳

7月月更 应用无状态

【Docker 那些事儿】容器网络(上篇)

Albert Edison

Docker Kubernetes 容器 云原生 7月月更

软核微处理器

贾献华

7月月更

分库分表

ES_her0

7月月更

通过Dao投票STI的销毁,SeekTiger真正做到由社区驱动

股市老人

mysql数据表查询

乌龟哥哥

7月月更

关于目前流行的 Redis 可视化管理工具的详细评测

宁在春

redis 7月月更 Redis 可视化工具

函数初认识-上

芒果酱

C语言 7月月更

CodeTON Round 1 (Div. 1 + Div. 2, Rated, Prizes)(A-C)

KEY.L

7月月更

JavaScript DOM编程艺术笔记

程序员海军

前端 DOM 7月月更

初学者如何快速的上手Linux命令,这34条新手必会的命令一定得会!

wljslmz

Linux 7月月更

还在为处理事务烦恼吗,要不试试Spring是如何处理业务的

Java学术趴

7月月更

评论:C#正变得越来越臃肿_.NET_王翔_InfoQ精选文章