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