写点什么

评论: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:281231
用户头像

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

关注

评论

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

MRS大企业ERP流程实时数据湖加工最佳实践

华为云开发者联盟

大数据 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

AI技术赋能,引领行业变革 | 百度营销创新打造“信息流AI投放”

科技热闻

现代数据分析的革命,ABI报表工具引领企业进入数据驱动时代

流量猫猫头

基于Java开发的企业级数字化采购系统(SRM)

金陵老街

srm 采购系统 招投标系统

SOFABoot 4.0 正式发布,多项新特性等你来体验!

SOFAStack

springboot Java 分布式 jdk17 #开源

万物皆可销售:数字世界中的商业文明之光

B Impact

基于Pair-wise和CrossEncoder训练单塔模型

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 8 月 PK 榜

软件测试/测试开发丨Python 内置库 pythonlogging

测试人

Python 程序员 软件测试 自动化测试 测试开发

火爆全球的AI艺术二维码到底是怎么做的?

Ricky

二维码 个性化推荐 二维码生成

数字时代的生产力工具:低代码开发平台

力软低代码开发平台

低代码平台“高”效率开发的5个能力

高端章鱼哥

软件开发 低代码 提高效率 JNPF

面部表情识别技术的挑战与前景

来自四九城儿

大咖云集︱2023第二届中国PMO&PM大会倒计时15天!

新消费日报

基于 KubeSphere 快速部署 ByConity

朱亚光

云原生 数据舱

“铁头乔”出品!CommunityOverCode Asia 专题介绍之物联网(IoT)/工业物联网(IIOT)

Apache IoTDB

加速解锁科学智能前沿,昇思MindSpore铸就了一把“全能”钥匙

脑极体

AI

HarmonyOS NEXT新能力,一站式高效开发HarmonyOS应用

Geek_2d6073

洛基:北欧怪奇之旅 Röki for Mac(冒险解谜游戏)

mac

mac游戏 苹果mac游戏 洛基北欧怪奇之旅 冒险解谜游戏 Röki

全球优秀的架构师都在关注什么?

用友BIP

架构师 数智底座

直播预告 | 博睿学院:浅析windows Hook原理和机制

博睿数据

可观测性 智能运维 博睿数据 直播预告 博睿学院

HarmonyOS系统级推送服务,打造消息通知新体验

Geek_2d6073

隆重介绍!为啥它让智能制造有了“芯”能力?

用友BIP

制造

veridex执行错误分析与方案

XCG00

Android;

倒计时 1 天!1000+ 技术先锋,龙蜥社区受邀参加 OCP China Day 2023

OpenAnolis小助手

龙蜥活动 OCP China Day 2023

一键登录和短信验证登录,到底有什么区别?

MobTech袤博科技

前端 App 前端开发 APP开发

深化产教融合,华为与高校共建鸿蒙人才培养

Geek_2d6073

贡献超 10 万代码的新晋 committer,持续参与 Apache IoTDB 社区的“秘籍”是?

Apache IoTDB

Observable设计模式简介

树上有只程序猿

Java java-API Observable

RR有幻读问题吗?MVCC能否解决幻读?

王磊

Java Java 面试题

何时使用MongoDB而不是MySql

越长大越悲伤

MySQL 数据库 mongodb

IOS上架流程

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