10 月,开发者不可错过的开源大数据大会-2021 WeDataSphere 社区大会深圳站 了解详情
写点什么

Eric Lippert 对 C#的评论和展望

2012 年 7 月 20 日

O’Reilly 编辑 Rachel Rouemeliotis 最近跟 Eric Lippert聊过。Eric Lippert 在微软的C#编译器团队担任Principal Software Design Engineer。谈话自然离不开C#主题,Lippert 对C#世界进行了一番总结。看了他们的讨论,InfoQ 也跟风联系Lippert,请他为先前对语言设计哲学的深入分析补充一点背景情况。

Lippert 在 O’Reilly 的访谈中首先评价了 C#“遍及整个 Windows 生态系统”的流行度,指出 C#被用于 X-Box 360、Windows Phones、Active Server Pages 等平台,以及各种业务线应用的开发。C#的优势之一是它的通用性,它不是一种领域专用语言。虽然通用,不过 Lippert 强调,C#并不不以包罗万象为目标。

Lippert 这番话提醒了 InfoQ,所以我们请他澄清一下 Microsoft 目前对 C#和 Visual Basic 的战略和目标定位。C#和 VB 的相互关系是这样的,Microsoft 把两者都设定为通用语言,而且两者的发展将齐头并进。但这并不意味着它们是披了不同语法外衣的同一种语言,而应该陈述为,微软“打算让 C#的主要特性在 VB 中存在类似的对应物,反之亦然”。

现在已经有这样的例子,例如 LINQ 特性和泛型协变 (generic covariance) 特性。接下来要增加的特性是通过 async/await 关键字实现的异步编程支持。Lippert 在与 O’Reilly 的谈话中指出,“……问题是我们活在一个有延迟的世界里”,程序员必须在程序里处理用户输入、网络通信等带来的延迟。为了减轻这种负担,async/await 关键字让程序员在代码里做标注,然后编译器可以协助管理异步代码段。结果是代码更好懂,开发更轻松。

在和 InfoQ 的谈话中,Lippert 承认说,历史上“C#和 VB 有着深刻的设计哲学区别,它们分别支持不同的特性只是表面”:

一直以来 VB 的设计哲学是“尽可能不要把用户拦下来检查;如果代码不够清晰,尽量推断其含义”。而一直以来 C#的设计哲学是“如果代码不够清晰,那么它可能是错的;告诉用户改正之后才能继续前进”。两者的目标相同,都是程序员的生产效率,但它们解决方向正好相反!有所区别是好事;不同的程序员对于怎样解决问题效率最高,有着不同的看法,我们能为多样化的工作风格提供相应工具,是一件好事。

最后,Lippert 在 O’Reilly 访谈中评估了 C#未来可能的几种发展路线——不过他事先声明这只是个人想法,不代表 Microsoft 的官方意见。

在 Roslyn 项目的问题上,Lippert 向 InfoQ 确认,Roslyn 项目的编译器开发完成后,将取代目前随 Visual Studio 发布的编译器。而且 Roslyn 分析工具系列将取代现在的编辑期代码分析引擎(就是当你写代码的时候,负责在 VS 编辑器窗口中给你实时反馈那个东西)。

Lippert 希望澄清一件事情,现在对于 Visual Studio 2012 之后的 C#/VB 语言版本,“还没有确定的特性集合”。目前 Microsoft 对于 C# 5 得继任者“还没有确定的特性集合”,但正密切关注业界的趋势,看哪些语言研究领域能提供一些启发。Lippert 声称他的团队还处在探索阶段,一方面尝试更好地定义从业界观察到的问题,另一方面尝试寻找最好的解决方案。

查看英文原文: Eric Lippert Reviews C# and Speculates on its Future

2012 年 7 月 20 日 03:282644
用户头像

发布了 225 篇内容, 共 50.3 次阅读, 收获喜欢 31 次。

关注

评论

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

Nginx 的负载均衡模式有哪些?它的实现原理是什么?

码农架构

nginx 架构 微服务

2021年,字节/百度/阿里相继发布50W+优质Java岗(含内部面试真题及答案)

996小迁

Java 程序员 架构 面试

PHP转JAVA开发30分钟实战攻略

dothetrick

Java php

智能量化对冲搬砖套利交易软件APP系统开发

系统开发

极客训练营知识点思维导图

jorden wang

架构师第8周作业

Geek_xq

GitHub标星150K的神仙笔记,3个月肝完成功面进美团定级3-2

Java架构之路

Java 程序员 架构 面试 编程语言

训练营第十三周作业

大脸猫

电商网站商品管理(二)多种搜索方式

escray

elasticsearch elastic 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

使用 kubectl-rabbitmq 部署和运维 K8S 上的 RabbitMQ 集群

郭旭东

RabbitMQ kubectl kubectl plugin

Soul 网关源码阅读(二)代码初步运行

萧

Java 源码阅读 网关

解读容器的 2020:寻找云原生的下一站

阿里巴巴云原生

Docker 云计算 Serverless 容器 云原生

百度面试被算法血虐,闭关29天肝完445页算法神仙笔记成功入职字节跳动!

Java架构之路

Java 程序员 架构 面试 编程语言

华云大咖说|企业混合云构建之道

华云数据

云计算 桌面云

技术人员如何写好周报

猿话

一文带你学会AQS和并发工具类的关系

伯阳

AQS java 并发 ReentrantLock 多线程高并发 lock锁

面试阿里Java岗,技术总监真正关心的核心能力是什么?

Java架构追梦

Java 编程 架构

Soul 网关源码阅读(一) 概览

萧

Java 源码阅读 网关

Soul 网关源码阅读(四)Dubbo请求概览

萧

Java 源码阅读 网关

安卓开发实战!闭关在家37天“吃透”这份345页PDF,成功定级腾讯T3-2

欢喜学安卓

android 程序员 面试 移动开发

二本学渣考研失败,为什么Android要采用Binder作为IPC机制?已开源

欢喜学安卓

android 程序员 面试 移动开发

2021字节、华为、滴滴Java内部面试题(含答案),新鲜出炉!

比伯

Java 编程 架构 面试 程序人生

超越身边80%的人,其实没有你想象的那么难

架构精进之路

认知提升 成长笔记 七日更 28天写作

Soul 网关源码阅读(三)请求处理概览

萧

Java 源码阅读 网关

矿机挖矿软件系统开发|矿机挖矿APP开发

系统开发

APICloud AVM多端开发 |《生鲜电商app开发》项目源码教程

APICloud

前端 移动开发 APP开发 APICloud

Java 程序经验小结:剖析@SuppressWarinings注解

后台技术汇

28天写作

Spring的@Import 注解的作用与用法

程序员小毕

Java spring 源码 架构 注解

架构师训练营第十三周笔记

李日盛

笔记

从姚安娜出道说起

三只猫

28天写作 社交泛娱乐

架构师第八周总结

Geek_xq

Eric Lippert对C#的评论和展望-InfoQ