2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

直播预告|年营业额百亿的企业都在如何做数字化转型

云智慧AIOps社区

数字化转型 AIOPS 解决方案 智能运维

逃离过度努力陷阱

FunTester

FunTester 湛卢 轻松主义

多个角度论证SeekTiger 生态核心STI的魅力

西柚子

敲重点!这些更新将会影响HarmonyOS原子化服务上架

HarmonyOS开发者

HarmonyOS 原子化服务

消息队列存储消息数据的MySQL表格设计

Geek_36cc7c

盘点:阿里云上8款免费的开发者工具

阿里云云效

阿里云 开发者 云原生 开发者工具 研发工具

云效研发效能度量体系,如何展示和解读交付效能数据

阿里云云效

阿里云 运维 研发管理 研发效能 研发团队

怒肝 JavaScript 数据结构 — 栈篇(三)

杨成功

数据结构 4月月更

java培训关闭流方法有顺序吗

@零度

JAVA开发 包装流

不再单调!快来自定义你的专属背景~

优麒麟

Linux 开源 操作系统 优麒麟 用户登录

平安普惠荆州分公司:警民齐心,共同抗疫

科技新消息

H5营销有什么优势?企业需要定制开发H5吗?

源字节1号

前端开发 后端开发 H5制作

无需编程,基于微软mssql数据库零代码生成CRUD增删改查RESTful API接口

crudapi

低代码 API crud crudapi 增删改查

netty系列之:netty中的自动解码器ReplayingDecoder

程序那些事

Java Netty 程序那些事 4月月更

RDP是什么意思?有什么用?

行云管家

运维 网络协议 RDP

面试官:Redis的事务满足原子性吗?

码农参上

redis 事务 4月月更

ETL调度软件TASKCTL核心调度节点安装

敏捷调度TASKCTL

kettle 调度引擎 ETL 任务队列 调度任务

Android C++系列:JNI常见问题

轻口味

c++ android 4月月更

三高Mysql - 搭建“三高”架构之扩展与切换

懒时小窝

MySQL MySQL 高可用

模块八作业:设计消息队列存储消息数据的 MySQL 表格

王大胖

如何禁用XXE处理?

龙智—DevSecOps解决方案

漏洞扫描 代码安全 漏洞检测

大数据培训spark SQL中count(*)和count(1)源码分析

@零度

大数据开发 spark SQL

jackson学习之六:常用类注解

程序员欣宸

4月月更

@所有高校师生,2022全国大学生物联网设计竞赛火热开启,限量礼品等你来拿!

HarmonyOS开发者

HarmonyOS 物联网设计竞赛

crontab命令详细介绍教程,快来围观

CRMEB

web前端培训开发者要掌握的CSS 技巧有哪些

@零度

CSS 前端开发

三高Mysql - 搭建“三高”架构之复制

懒时小窝

MySQL MySQL 高可用

为什么做开源需要懂异步协作?

腾源会

开源 腾源会

CPUvsGPU:谁才是游戏和视频编辑的核心?

Finovy Cloud

人工智能 gpu cpu

杭州等保测评公司有哪些?分别叫什么?如何能查到?

行云管家

等保 等级保护 等保测评 杭州

PHP项目微信提现功能代码详解

CRMEB

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